Texture Changes When Object Position Changes I'm working on a procedural wood texture, and it's become clear that I don't understand cycles vectors at all :(  I'm hoping someone will see an obvious problem or at least point me to a good resource for learning about vectors in details.
I used this post's answer to create a wood texture node, and I'm using it to generate my rings.  The issue is that the texture doesn't move with the object.  Moving an object with this material applied is like cutting the object out of a different section of the same log.
Below is a picture of two objects sitting near center followed by a picture of the same two objects moved 5 units along the X axis.
Initial Positions
New Positions
I expect this issue is caused by one of the three vectors (or a combination of them) that are involved in the wood texture node.  Below is a picture of the noodle.  Any of the Less/More or PBR nodes can be ignored for this post.  They are convinence node groups I made by following the Blender Guru PBR tutorial.
In the main noodle, we care about the blue node and the two vectors feeding into it:

Entering that node, we can see how it works.  The distance node is used to calculate the distance between the center of the texture (core of the log the wood was cut from) and the surface of the object.

The third vector I mentioned is hidden inside the distance node, and I think it is intended to represent the objects 3D center or something like that.

Try It Yourself!
Here is a link to the full blend file.
The problem you are having is that the two inputs to the Wood Rings Texture are two world-space points that the "core" of the wood passes through.

You are currently supplying a world-space point (the object location, aka center), and a normal vector. However, the normal vector is being used as a point, not a vector. As a result, you are defining a line which passes through the object-center and a point within 1 unit of the global origin.

One part of the solution is to convert the calculations into object space, making these two core endpoints object space coordinates. This can be done by going into the distance node and replacing Geometry->Position with TextureCoordinate->Object. This supplies the object-space position of the texel to the distance calculation.



Then we need to remove the object position, because the core-definition points are now in object space. We can define core-origin as an arbitrary x,y,z point in object space. Further, the normal node (aka core orientation) needs to be added to the core-origin to create the second core-endpoint. 



Here is a fixed blend file.

This solution is a bit limited, in that it has only one core orientation per shader, and we'd prefer to have one per object instance. 

One alternative is to use script nodes to read the object positions of empties, which can be created per object instance. 

Another alternative is to randomly generate core orientations per object.