I like to use Global texture coordinates combined with the RGB to XYZ direction setting on a displacement modifier to displace multiple separate objects uniformly. I.e. if two separate objects with the same displacement texture are placed next to each other, the displacement contour will flow smoothly from one to the next (see GIF below).

However, even when the texture coordinates are set to Global, the XYZ displacement direction is local. So if I rotate one of the objects about the Y-axis (as seen below) the local Z-up displacement vector is now global Z-down, and thus the displacement contour is broken between objects.

enter image description here

Both objects are just stretched and subdivided cubes.

So is there a way to use global space for XYZ displacement instead of local space, either directly or by some hack/workaround?

  • $\begingroup$ Are they independent objects or do are they linked duplicates? $\endgroup$ – user1853 Jun 30 '16 at 18:13
  • $\begingroup$ @cegaton They are completely independent objects. $\endgroup$ – PGmath Jun 30 '16 at 18:14
  • $\begingroup$ havr you tried having an empty to control the displacement? $\endgroup$ – user1853 Jun 30 '16 at 18:15
  • $\begingroup$ @cegaton That does the same thing as global coordinates except it allows you to move the origin point of the texture. My problem is that the coordinates used for the displacement itself (not the mapping coordinates) are local. $\endgroup$ – PGmath Jun 30 '16 at 18:17
  • $\begingroup$ I think that the displacement is global but not in all directions. That does not help directly.. I know... but intuitively, having it in all directions needs UV in the texture coordinates... so not a global... $\endgroup$ – lemon Jun 30 '16 at 18:33

The vector displacement space for RGBtoXYZ mode is always local, unfortunately. (tangent would be useful in a lot of cases too). The good news if you need global space though, is you can apply your rotation (object > apply > rotation from the 3d view header) and bake your rotation into the mesh. This gets rid of the object level rotation meaning local space = global space once again.

  • $\begingroup$ The issue with applying rotation for my current project is that it would mess up the other modifiers on the objects. I am working on a set of modular pipes that I can quickly duplicate and place and I would like to not have to make multiple different objects for the different orientations of each type of pipe. $\endgroup$ – PGmath Jun 30 '16 at 20:34

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.