I'm new to blender but not to 3d modeling, and I'm trying to rig a 7 cylinder radial engine, everything is set: crankshaft, piston, counterweight, planetary gear made with the extra mesh add-on(it could be important cause those gears are working perfectly) and rigged with a rotation driver for an output of 1/6 ratio. I'm know trying to rig a hand modeled piece (the cam ring ) which spin at the same speed as the ring gear with the same driver: -(var*1/6) of the sun gear. but a rotation of 180° on the X axis of the sun gear cause a sudden jump back of 30° on the x axis of the cam ring I tried to delete the driver on the cam ring and parent it to the ring gear directly but still doing the same. Could anyone help?
-
$\begingroup$ wow, sounds pretty complicated ;) can you somehow break it down to something like "i parent my rig and then this happens" and then provide your blend file? and maybe add some screenshots with annotations so we know what you are talking about? $\endgroup$– ChrisCommented Jul 13, 2021 at 14:00
-
$\begingroup$ Possibly related blender.stackexchange.com/questions/164765/… $\endgroup$– batFINGERCommented Jul 13, 2021 at 14:48
-
$\begingroup$ blender.stackexchange.com/questions/214576/… $\endgroup$– batFINGERCommented Jul 13, 2021 at 15:10
1 Answer
There are two different kinds of ways you could be driving this. One would be to drive it from a transform channel/rotation. The other would be to drive it from a single property, like "rotation_euler". The first will not work for you. The second should.
I don't know which method you're using. A file would make it clear.
Driving rotation from a transform channel gives you the rotation after it has been converted into a matrix and had all constraints applied to it. Matrix transformations do not represent rotations outside the -180, 180 degrees range, which is sufficient to represent all orientations of a specific object. But when you go from 120 degrees to 180 degrees to, say, 240 degrees, your driver is seeing this as going from 120 to 180 to -120 degrees-- and a sixth of that is 20, 30, -20, which creates a discontinuity.
If you instead drive rotation from a single property, you get the actual amount of rotation specified directly by the f-curve, before any constraints, before it's been converted into a form that destroys this information about "extra" rotations. In this case, in the example above, you would see a smooth 20, 30, 40, just like you'd expect.
-
$\begingroup$ thank you nathan , i think you understand where my problem come from even if don' t understand what you're answering me about matrix (i'm new to blender). i haven't created animation channel yet still rigging for now but i figured out something if i clear parents from the root bone created for the crank shaft i can rotate it whithout issues. I WISH I COULD HAVE NEO WITH ME. $\endgroup$– OliverCommented Jul 13, 2021 at 18:30
-
$\begingroup$ @Oliver Don't worry too much about understanding everything-- we grown-ups aren't so different from babies, we still learn when hearing things that don't make any sense to us yet, it only takes repetition and time. Just try using a different kind of driver and see if that fixes your problems. $\endgroup$– NathanCommented Jul 13, 2021 at 18:52
-
$\begingroup$ @nathan thanks for your answer. I get the "gimble" lock principle, though I don't know how to drive it from a single property? Any recommendations on how to do that? $\endgroup$– CromeXCommented May 9, 2023 at 21:34
-
$\begingroup$ @CromeX It doesn't have anything to do with gimbal lock. You drive from a single property by selecting the variable type for the driver in the driver editor viewport, in sidebar/driver. $\endgroup$– NathanCommented May 9, 2023 at 22:48