Hi there! I have a very specific issue, I could really use some help. I'm rigging the wheel of a character I'm working on and I'm trying to make the rotation of the wheels go along with the main controller. To do that I connected the Z translation of the main controller to the X rotation of the group of the wheel. It works only if I translate in positive X, but when I rotate the character and move him forward, while going to negative X the wheel goes backwards. How do I solve it?
The concept of a rolling wheel is so simple and straight forward...roll the wheel based on the distance traveled. But to execute it is not so simple. First thing your example illustrated is that it only works on the X axis. So what if you want to travel in another direction? As you did on the Z axis, the wheel doesn't turn. What I typically do is to use a path animation. Then the wheel can travel in any direction and you can use the traveled length along the curve as your distance to drive your wheel rotation.
Another issue you will notice with the "simple" connection method is what happens when you animate the speed (accelerate). Speeding up is usually not as much of an issue as slowing down. Most people use a straight multiplication for the rotation value. So that when slowing down, the wheel will actually start rotating in reverse. Instead of a mutliplication approach, the proper way is an additive approach. At each frame, a certain amount of rotation is added. This allows for acceleration and deceleration. And for burn outs. 🙂
Now back to your original question with your specific case, you have to measure your direction and compare it to your default X axis direction. A dot product will give you a positive value if pointing in the same direction as the X axis. And a negative value if pointing in the opposite direction. Use this to multiply your rotation value.
Can't find what you're looking for? Ask the community or share your knowledge.