2
$\begingroup$

Just wondering if there is any add on, feature, tool or third party software to set an object too rotate at a certain speed during animations such as making a wheel rotate at 1000 rpm or something like a drill drilling at 150 rpm. Any answer is appreciated. Thanks.

$\endgroup$
4
$\begingroup$

For this you need to do a little math. We need to find out how much the wheel spins withing 1 second.

Let's say you render at 30fps and one rotation equals 360°. First we have convert rotations per minute into rotations per second. Then we have to convert rotations per second into degrees per second.

1000rpm / 60s = 16.667rps

We multiply 360° by 16.667rps to get how many degrees it spins in a second.

16.667rps * 360° = 6000°ps

The wheel spins ~6000° per second. To find out how many degrees it spins in a frame, divide the spins per second (6000°) by the number of frames per second (30fps).

6000° / 30 = 500°

The wheel needs to spin 500° per frame to complete 1000rpm.

To do that, go to frame 1 and set a keyframe at 0° rotation. Then set a keyframe at 500° rotation on frame 2. To make it continue speaking, location the rotation fcurve in the graph editor, select it and press ⇧ ShiftE > Linear Extrapolation. (See this related answer.)

You can also use this online calculator.

$\endgroup$
  • $\begingroup$ Thank you, I haven't thought of that, will try to use that more in the future $\endgroup$ – DrachenSeele Apr 26 at 14:15
2
$\begingroup$

For constant rpm use a driver

Similarly to answer by @DrachenSeele some simple maths.

The frame rate of your blender scene. Test in python console, where C = bpy.context

>>> fps = C.scene.render.fps / C.scene.render.fps_base

Convert revs per minute to revs per frame

>>> rpm = 150
>>> rps = 150 / 60
>>> rpf = rps / fps

Make this an angular velocity. Note that blender uses radians as its native unit of angle. (displayed as degrees if that is the unit set in scene units) One revolution is 2pi radians.

>>> angular_velocity = 2 * pi * rpf
>>> angular_velocity
0.6551529985521121

Ok now add a simple driver 0.6552 * frame (rounded for example sake) to a rotation value, an axis of euler rotation or an angle of angle-axis rotation.

The expression above can be typed directly into the field with a hash prefix to designate it as a driver #0.6552 * frame The variable frame is known to the driver namespace and is the value of context.scene.frame_current.

enter image description here Driver added to default cube to spin around X axis at 150 rpm. Notice the sampling rate of animated gif makes this look sluggish due to the wagon wheel effect

To avoid the wagon wheel effect try setting the rpm to a prime number near the target rpm (eg 151 instead of 150) or add a slight randomness to the driver.

0.655153 * frame + noise.random()

mathutils.noise module is known to driver namespaces as noise

Also note that this is easily extended using the driver system. Another driver variable could be a custom property ranging from 0 to 1, eg stopped to full speed which can also be animated.

An example using an rpm custom property.

similarly to above make a custom property named "rpm"

enter image description here

Make a driver

enter image description here

check the use self option, this way self["rpm"] is our custom property. Can get the fps from the scene. I haven't bothered with base frame rate per example here. Also notice this spits the "slow driver expression" warning. I don't think for simple examples like this it is an issue. I have enquired here Use self and the slow python expression .

The expression

pi * frame * self["rpm"]  / (30 * fps)

Now I can adjust the custom property to spin the cube around Y (where i stuck the driver) at the designated rpm.

enter image description here

$\endgroup$
-3
$\begingroup$

If you want it to increase your rotation speed try changing the frame rate to a faster setting and adjust your animation to suit it.

$\endgroup$
  • 1
    $\begingroup$ This would not be a good solution as other things need to be at a certain speed too $\endgroup$ – DrachenSeele Apr 26 at 13:10
-3
$\begingroup$

You can use rigid body

You just need to use "hinge" and "motor",

With that, you can set the " Angular Velocity"

You can also control the "Torgue"

$\endgroup$
  • $\begingroup$ This question is asking for angular control at a high rate, not how to simulate rotation $\endgroup$ – Kirbinator Apr 26 at 15:16

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.