Download

What exactly does WorldPosition node outputs?

If I mask one channel of the three , then connect it to a TextureSample node, I found that I will get a texture , which compared to its original state , was scaled to 1/100 , which makes the mesh ( and the texture on it) look like white( or grey) ,unless I move my camera near to see the exact , and the original texture can only be seen by this manner because it is too small.
Also , if I mask Z , then turn to top view , I found that it seems that UE projects an image upon the mesh , which manifests as the side faces are all abnormal with improper texture stretching.
What’s more,
After simulating in MAYA (See my uploaded) , this node(world position) gives me a feel that it regards the positive direction as 1, the negetive direction as 0 , applying this algorithm to all the three axis X,Y,Z , and the final result is 8 boxes assigned to 8 different colors representing from 000B to 111B , 8 different possibility made by 3 axis 2 potential.
But.
Doesn’t it output coordinate?
Why can’t I see any possible gradient color e.g. a value between 0~1 , valued at 0.5 , making the mesh grey a little?



It outputs the actors position in world space as a V3. You don’t see a gradient because unless the actor less than one unit away from the world origin, most or all of the numbers will be greater than 1 or less than -1. You can’t visually represent a gradient going from world space X: 50-57 in the R channel, for example, without doing so extra math since all numbers between 50-57 would simply just look white because they’re greater than one.
For example, if you subtract the objects position from the world position you will end up with a gradient from the objects origin position. Dividing by the objects local bounds will bring the gradient to a range that can be represented in -1 to 1 space.

That’s not exactly true. If that were the case, then the whole primitive would appear the same color.


The “Absolute World Position” node outputs the position of the pixel in world space as a 3D vector.

The Material graph is run on each pixel on which the primitive is being rendered, thus the AbsoluteWorldPosition node’s value varies pixel-to-pixel.


The local-bounds dividing trick is pretty neat, though.

Right, to be completely accurate it is truly the pixel’s location in world space. Poor choice of words.
The important thing is just that there is indeed a gradient, its just not obvious when viewing the output directly due to the small size of Unreal’s world space units.