Animate Actors Using Kinetics Properties
This example shows how to set kinetics properties such as Force
and Torque
to animate actors using MATLAB®.
First, you use the sim3d.World
object to create a virtual world. You then use the sim3d.Actor
object and functions to build sphere and box actors and set the physical properties of the actors. Then, you add the actors to the world and set a view in the scene. Finally, view the animation in the Simulation 3D Viewer window.
Unreal Engine® uses the PhysX® engine to control actor motion and perform real-time physics calculations when the physics property of an actor is enabled.
Create World
Create a world scene.
world = sim3d.World();
Build Sphere and Box Actors
Instantiate actors named sphere
and box
. Use the createShape
function to build sphere and box shapes of specific sizes or use the default unit sizes. Set the Mobility
and Physics
properties of the actors to react to physical forces.
Specify the color and initial position of sphere
. Use the Force
property to apply a force of [0 10 0]
to the sphere
actor. Add actor to the world.
sphere = sim3d.Actor('ActorName','sphere', ... 'Mobility', sim3d.utils.MobilityTypes.Movable); sphere.createShape('sphere'); sphere.Translation = [2,-2,2]; sphere.Color = [1,0,0]; sphere.Force = [1 10 0]; sphere.Physics=true; sphere.Mass = 1; world.add(sphere);
Specify the color and initial position of box
. Use the Torque
property to apply a torque of [0 0 pi/2]
to the box
actor. Add actor to the world.
box = sim3d.Actor('ActorName','box', ... 'Mobility', sim3d.utils.MobilityTypes.Movable); box.createShape('box'); box.Translation = [2,0,-1]; box.Color = [0,0,1]; box.Torque = [0 0 pi/2]; box.Physics=true; box.Mass = 1; world.add(box);
Set Viewer Window Point of View
If you do not create a viewport, then the point of view is set to 0, 0, 0, and you can use the keyboard shortcuts and mouse controls to navigate in the Simulation 3D Viewer window.
For this example, use the createViewport
function to create a viewport with a single field, Main
, that contains a sim3d.sensors.MainCamera
object.
viewport = createViewport(world); viewport.Translation = [-10 0 0];
Run Animation
Run the animation set for 20
seconds with a sample time of 0.02
seconds.
run(world,0.02,20)
Delete World
Delete the world object.
world.delete();