7
$\begingroup$

I'm trying to color a cube based on it's distance from another object along the z axis. I can color the cube based on it's own z axis, but when I try to reference another object (e.g. the plane in the below image), the entire cube is shaded the same color. Please let me know what I'm doing wrong.

blender showing viewport render, and cycles nodes

$\endgroup$
7
$\begingroup$

Texture Coordinates

That's because you are using Object's Texture Coordinates, which determine how an image is placed upon the faces, while you need Object's Cartesian Coordinates.

Texture Coordinates usually vary from one point to the other. Referring to the picture below we can see how the gradient is assigning to each point at the same Z the same value. Every little step has it's own value.

enter image description here

The distance of an object to another involves instead Cartesian Coordinates, which is a single triplet of values (the coordinates of the object origin) that are the same for all object's point.

Ideally you should base your distance calculation upon the Cartesian Coordinates and use the resulting vector to tweak the Texture Coordinates, but as the Texture Coordinates (option Object) is already consiedering the position of the Object, I would just reference the plane.

enter image description here

When the distance between the two origins increases the Object is coloured with the highest value of the color ramp.

Subtracting the position of the Cube object would allow instead to use the plane as an "absolute" controller of the gradient. Moving the cube alone would not change the gradinent mapping upon its faces.

enter image description here

$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.