Page MenuHome

Compositor: new Position node, which returns numbers from 0 to 1 for each axe depending on coordinates
Needs RevisionPublic

Authored by Sv. Lockal (lockal) on Mar 22 2015, 4:32 PM.

Details

Reviewers
Sergey Sharybin (sergey)
Group Reviewers
Compositing
Summary

A very basic, but useful node to be used as a coefficient for mix operations in compositor.
Example usage:

  • X Position + Greater than => Vertical split
  • X Position + Ramp + Rotate => Smooth angular split
  • X Position + Mod => Vertical Stripes
  • X Position + Y position + Multiply + sin/cos + Greater than => Circles pattern

Screenshot for docs:

Diff Detail

Repository
rB Blender
Branch
pos

Event Timeline

Sv. Lockal (lockal) retitled this revision from to Compositor: new Position node, which returns numbers from 0 to 1 for each axe depending on coordinates.
Sv. Lockal (lockal) updated this object.
Sv. Lockal (lockal) added a comment.EditedMar 22 2015, 5:41 PM

Added sergey as reviewer.

A short explanation, why we need this node:

I heard there were some steps towards Procedural Noise node directly in Compositior. As we all know such kind of nodes (including Position) could be implemented with Texture nodes, but it is not so intuitive for users. There is even a tutorial on Blenderguru explaining how to create a heat noise by using a separate scene with a single shadeless plane with procedural texture. This is a definite overcomplication for a simple composition effect.

The goal is to port pattern and texture nodes (or at least few crucial ones, like perlin noise) from texture nodes to compositor nodes. It would be a good start for improving compositor usability.

This node differs from Position Texture node. There are to separate outputs for x and y, instead of (x, y, 0.5) vector. I can't see any use for (x, y, 0.5) vector, except for immediate decomposition with Split XYZ node.

This node has no inputs and uses the render resolution (similar to Mask node).

Animation works too:

Hi lockal,

I understand the node and the use cases, but I am not convinced if these usecases should be implemented in the compositor. IMO there are 2 area's were these usecases can be implemented in Blender with both ups and downs.

In the compositor you will have more freedom to use is. this is for more advanced users but perhaps less users will use it here.
The second option is inside the VSE. Adding it here is a better fit for the usecases, easier to setup, but most options should be developed inside blender.

Not sure what option should be best, or if we will eventually need these usecases in both areas.
IMO the usecases you demonstrated has more value in the VSE.

The solution in the compositor could be developed using a NodeGroup. or just a script. not really userfriendly, but that is another subject.

Perhaps it is a good idea to start a discussion about where what use case fits best. And from this discussion we will get to a good design.

Regards,
Jeroen

Hi @Jeroen Bakker (jbakker),

Sorry, I don't understand your proposal.

The solution in the compositor could be developed using a NodeGroup.

AFAIK, currently such kind of effects can not be implemented with NodeGroups without using:

  • gradient images (which are limited to specific size, so transforms would create banding and won't work outside of the range)
  • hacks with Box Mask over right half and huge flat blur, which produce something similar to coordinates, but not exactly the same (no banding, but it won't work outside of the range, unintuitive and as I said, not the same)

Texture nodes won't work for animation (except for scale & offset in Compositor) because of depgraph and the fact, that one can't add keys for Texture node instances, but only for Texture node itself.

And as I said, I don't understand your proposal. VSE is not node-based, and I don't understand how raw coordinates would help there. There is a Wipe strip for creating sliding effects, but it is not customizable.

However by using new Coordinates node, users could create a tons of procedural effects (including gegl-like vignette, or even animated perlin noise), save it as a separate scene or image sequence and apply it as a Strip Mask Strip Modifier in VSE wherever they want.

This seems too high level for the compositor (its quite specific functionality for a node at least),

Think it makes more sense to have a half-tone node, eg:

With this, a color ramp/gradient can be used for all sorts of effects - including a mask between 2 images, to get the wipe effect shown here.

This revision now requires changes to proceed.Mar 25 2015, 3:03 PM

I agree with @Jeroen Bakker (jbakker) and @Campbell Barton (campbellbarton). It's too much specific node which is rather a hackish approach reaching specific effect.

You can use variety of more clear approaches and think of better solutions here which will be even more friendly to artists.


Procedural checker texture with Position node.