View Full Version : rotating without keyframes

06-11-2007, 12:00 PM
I have a lot of objects that need to rotate in my scene. They must all rotate at the same speed, but not with the same angle. Ex. At frame 0, object 1 rotation = 231 and object 2 rotation = 600.

The reason why I dont want to use key frames is that I want to be able to place them where I want and not need to change position of end keyframe.

Also, each objects must rotate with their own rotation point.

thank you

06-11-2007, 12:05 PM
When you set a keyframe, can't you exclude certain channels such as X or Y coordinates?

06-11-2007, 12:42 PM

I could try this, but this is not exactly what I am looking for.

Because this technique is very long, because I have over 30 objects to set rotation to. So what I want is basicly a function that can be applyed to all objects.

It would look somthing like this :
rotation.B = -11*360deg / minutes....

06-11-2007, 12:55 PM
Another thing I failed to mention is, you can add nulls to the mix. Place your null, parent the object to the null (allowing you to tweak the rotation point) and spin the null, not the object.

Doesn't solve how to do it without keyframes, I don't think, but may be useful.

06-11-2007, 01:01 PM
If I get what you are saying, I could parent all the objects to a single null so that the null defines the rotations but the object can still have their own starting rotation angle.

But the problem for this is that the rotation point will be at the null, when I want to let it at the object's rotation point.

Do you have a solution for this?

06-11-2007, 03:17 PM
It might be helpful to mention what kind of objects you are creating and what exactly is the effect you're going for.

06-11-2007, 05:38 PM
This is a 3d vizualisation project. I am animating windmills , but their is a lot per picture and I need to place them individualy so that they match the reality.

The final product will be exactly as this video (http://www.mediafire.com/?9gydjjjpzjt). But this takes a long time to do, as I need to set up each windmill a end key point

06-11-2007, 09:19 PM
Some ideas:

Create a null or use one of the windmills and open up the graph editor.

Select the HPB angle you want to rotate in the channel bin to the left.

For post behavior set it to linear and create one keyframe.

Now moving this one key frame up and down or sideways in the graph editor will adjust the speed.

Thats one way to set the rotation you could do other things. But in any case set the rotation for your null/windmill as you want it.

Now place all of your windmills.

There are several ways to follow the rotation.

Follower, simple orient constraints, etc. that you can access from the motion options panel. You can offset the start frame to randomize the rotations.

Or if you don't want to use a followers plugin, you can just copy and paste the curves to each windmill in the graph editor. Right click in the channel bin to get this menu.

06-12-2007, 12:18 AM
I would do this with an expression.
I'd start by building my windmills with unique names, each with a uniquely named "fan" object, parented to each windmill. (Each windmill would be 2 layers, built with the fan's center at 0,0,0.)
I'd create a new scene and populate it with the windmills.
I'd then create a null object named something clever like "FanRotater".
(that's the only object I'll keyframe)
I'd then make an expression for the first fan, like "FanRotater.rot(Time).b*1".
For all the other fans, I'd paste the same expression, but alter the multiplier to an appropriate number. Like "FanRotater.rot(Time).b*1.6", or "FanRotater.rot(Time).b*.29"
Very simple set-up, quick and easy. Keyframe only the one null object, and the expression varies the rotation speed.

06-12-2007, 03:49 AM
Yeah, I like the expression idea. I would not have known how to do the multiplier part. Now I do. :)

06-12-2007, 07:40 AM
Ok, two things...

#1, I read your original description wrong. You want the blades to all rotate at the same speed, but you don't want them to be aligned with each other.
I'd still do that with expressions, but instead of the multiplier, just add a number to offset the rotation. The expression should look like this...
"FanRotater.rot(Time).b + 10", or "FanRotater.rot(Time).b + 48"
Let's say you set keys for the null at frames 0 and 360, with a single revolution. The number you add will advance the start position of the blades by that many degrees, but the rotation speed will match the null.
#2, I got the syntax wrong in my first post. You need these spaces before and after the math function.
"FanRotater.rot(Time).b + 48", not "FanRotater.rot(Time).b+48"

06-12-2007, 09:31 AM
This is very interesting

So I would need to copy that expression to every blade H.rotation objects?

but then it would be simple to randomize and add new turbines.

Ill try this soon