I want to create a simple expression that will rotate an object based on the current time.
You can assign a Float Script Controller to the respective rotation sub-controller and use the current Time global variable to get the time.
FOR EXAMPLE,
if you want to rotate the object about its X axis, you should assign a Float Script controller to the .rotation.x_rotation.controller property:
obj = Teapot() obj.rotation.x_rotation.controller = Float_Script() obj.rotation.x_rotation.controller.script = "currentTime"
This will rotate the object, but the rotation will be very fast because the time value is taken as radians, causing a full 360 degrees rotation every 6.28 frames!
To take the time as degrees,
YOU CAN USE
obj.rotation.x_rotation.controller.script = "degToRad currentTime"
This will rotate the object 360 degrees in 360 frames. You can of course multiply the result by any factor to control the exact speed,
LIKE
obj.rotation.x_rotation.controller.script = "0.1 * degToRad currentTime"
will rotate the object at 360 degrees in 3600 frames...
Another way to do the same is using the Float Expression controller. Unfortunately, it is not completely scriptable.
FOR EXAMPLE
obj = Box() obj.rotation.x_rotation.controller = Float_Expression()
will assign a float expression controller to the X rotation track.
Now you can open the Expression window by going to the Motion tab, right-clicking the controller and selecting Properties...
ENTER THE EXPRESSION
degToRad(F)
and press the Evaluate button.
The result should be the same as the Flot Script controller version.