Shrinkwrap constraint not working properly

I’m trying to move a bunch of characters across a very uneven surface. I’ve added keyframes at the start and the end of where I want them to walk, and added a shrinkwrap constraint set to project, with the target set to the surface. This method usually works fine, but for some reason this time once I’ve set the constraint most of the characters either stop moving or jump around the scene. I’ve tried a few different settings, but to no avail. What am I doing wrong?

I’d suspect that your issue here is that they’re set to project, but not to project opposite. That means that they’re pointing a ray, in their -Z axis, at the surface. If it hits, they project. If it doesn’t, they don’t do anything.

But what if their +Z axis would hit the surface? They won’t project in the opposite direction. And if their pre-constraint location is somewhere between the max and min terrain surface, they’ll jump around, as sometimes their ray will strike the surface and sometimes it won’t.

So solution is maybe, enable “project opposite” or maybe, just raise or lower the terrain (or the objects) so that they’re consistently on the proper side of it to begin with, so that their rays always hit it.

1 Like

Thanks. That sounded promising, so I tried elevating them all a little above the surface, then applied it again with project opposite turned on, but still basically getting the same problem unfortunately.

Okay. So then, what are there actual object axes? Is Z the direction you should be using? Try enabling display of object axes on at least one object, via properties/object/viewport display/axis. Is the Z axis pointing toward (or away from) the ground?

1 Like

Ah, that was it! their up/down axis was set to Y for some reason. Thanks a million!