3
$\begingroup$

I'm try to rig a low poly clock for blender, so I added a copy rotation modifier so the minute had would automatically spin with the second hand, but when I rotate the second hand 180 degrees, the minute hand reverses its rotation.The settings of the copy rotation modifier It inverts the rotation

$\endgroup$
  • $\begingroup$ I think it has to do with how Blender handles rotations internally concerning positive and negative values, but I don't know hot to actually solve it. It also only seems to happen when the Influence parameter is set to lower than 1 unit $\endgroup$ – Duarte Farrajota Ramos Jan 17 '18 at 5:31
6
$\begingroup$

Maybe you can alternatively do it with drivers instead.

enter image description here

Instead of constrains add a driver to the rotation properties of the hour hand by right clicking them and choosing Add Driver > Manually Create Later

enter image description here

Then proceed to the Graph Editor, change to Drivers from the header and choose the desired channel (Z in this case).

From there open the properties panel (N Key), Drivers tab choose the option Scripted Expression and add a new variable.

Use the Transform Chanel option, pick the other hand and choose its $Z$ Rotation. The scripted expression should read something along the lines of $var/12$ so it rotates at one twelfth of the angular speed.

enter image description here

$\endgroup$
  • $\begingroup$ Thanks, I didn't know how to multiply scripted expressions. This fixed the problem. $\endgroup$ – Conner Jan 19 '18 at 4:47
4
$\begingroup$

There really seems to be a limitation with rotational constraints. You run into a similar problem if you are using Transformation Constraints instead of Rotation Constraints, where after a full revolution the hour hand would jump back to the 12 position and start again from there. But: Using Transform Constraints you can rig that situation the other way around. In other words, animate the hour hand, and have the minute hand follow accordingly.

Here is a blend file that shows this idea:

And a quick screenshot of the constraint setup:

enter image description here

As you can see, I have extrapolate checked, and map from a source rotation to a target rotation in local space. The values I set are simply the time values: If the hour hand moves by one hour, the minute hand shall rotate for 12 hours, or a full revolution of 360 degrees in other words.

$\endgroup$
  • 1
    $\begingroup$ This and @Duarte's answer were the two ways I originally thought about doing this too (UV'd both answers and Q 8^)). The hassle with constraint (or driving) the slow hand is the OP wanted a minute / second hand combo, ie use 60 rather than 12 above, which makes it very difficult to set to a particular second exactly & / or quickly. Thinking a third approach driving from scene.frame_current (with offset .. pick a frame for 12 o'clock) might be another way to go about this.. $\endgroup$ – batFINGER Jan 17 '18 at 21:44

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.