Main Content

Simulation 3D Actor

Create actors in 3D environment

Since R2022b

  • Simulation 3D Actor Block Mask

Libraries:
Simulink 3D Animation / Simulation 3D / Actors

Description

The Simulation 3D Actor block implements an actor in the Unreal Engine® environment. You can use this block to specify actor name and source file, set how the actor is created and behaves during simulation, and initialize the actor. The block creates a movable actor. Additionally, you can create and add other actors to the 3D environment as children of this actor.

Examples

expand all

Create custom lighting with a point light, a spot light, and a rectangular light using the Simulation 3D Actor block. First, create a room in the 3D environment. Next, create three actors using sim3d.Actor objects, add them as child actors of the room, and position them inside the room. Then, create a point light, a spot light, and a rectangular light, add them as child actors of the room, and position them above the actors inside the room. Finally, in the Simulation 3D Viewer, view the room and its actors illuminated by the different types of light.

Open the model.

open_system("CreateLightUsingSimulink.slx");

SImulink model with a Simulation 3D Scene Configuration block and a Simulation 3D Actor block.

The model includes a Simulation 3D Scene Configuration block and a Simulation 3D Actor block. The Simulation 3D Scene Configuration block implements a 3D simulation environment and sets a view in the scene with the Scene view parameter. The Simulation 3D Actor block, named Room, creates an actor in the 3D environment. The block first creates an empty actor named Room, as specified by the Actor name parameter. The block then runs the Initialization script. In the Initialization script, use Actor as the handle to the actor object created by the Simulation 3D Actor block and World as the handle to the world object created by the Simulation 3D Scene Configuration block. The script builds a box shape for Actor using the createShape function to create a room in the 3D environment and set the properties of the room to visualize the custom lighting. The Initialization script then creates three actors using sim3d.Actor objects with box, sphere, and cone shapes. Set the translation of the actors to position them inside the room. Add the actors to World as child actors of Actor. The Initialization script finally creates a point light, spot light, and rectangular light using the sim3d.Light objects, positions the lights above the actors inside the room, and adds them to World as child actors of Actor. Transform properties of an actor are relative to its parent actor. Set the properties of the child actors for enhanced lighting effects.

Block parameter dialog box with parameters, actor name and initialization script.

Simulate the model and view the custom lighting in the Simulation 3D Viewer. You can visualize the reflections of each light type on the wall behind the actors.

sim("CreateLightUsingSimulink.slx");

An unlit room featuring a box on the left, a sphere in the center, and a cone on the right, each illuminated differently. The box by a point light, the sphere by a spotlight, and the cone by a rectangular light.

close_system("CreateLightUsingSimulink.slx");

Create arrows and text labels in the 3D environment and attach them to an actor using Simulation 3D Actor block.

Open the model.

open_system("CreateAnnotationsUsingSimulink.slx");

Simulink model with simulation 3D scene configuration block and simulation 3D Actor block named box.

The model includes Simulation 3D Scene Configuration and Simulation 3D Actor blocks. The Simulation 3D Scene Configuration block implements a 3D simulation environment and sets a view in the scene that you specify with the Scene view parameter. The Simulation 3D Actor block named Box creates a box actor in the 3D environment. The block creates an empty actor with the name you specify in the Actor name parameter. Then, the block runs the Initialization script. In the Initialization script, use Actor as the handle to the actor object created by the Simulation 3D Actor block and World as the handle to the world object created by the Simulation 3D Scene Configuration block. The Initialization script builds a box shape for the Actor object using the createShape function. The Initialization script then creates arrows and text labels as child actors of the Actor object using the sim3d.graphics.Arrow and sim3d.graphics.Text objects, respectively. Set the properties of the box, arrows, and text labels. Transform properties of the child actors are relative to the parent actor.

Block parameter dialog box with parameters actor name and initialization script.

Simulate the model and view the annotated box actor in the Simulation 3D Viewer.

sim("CreateAnnotationsUsingSimulink.slx");

Annotated box actor with arrows along the x,y, and z directions and text labels on the axes.

close_system("CreateAnnotationsUsingSimulink.slx");

Extended Examples

Ports

Input

expand all

Instance number of actor, specified as a real integer.

  • For positive values, a new actor is created if it has not been created already. The reference block refers to this actor if the actor is present in the world.

  • For negative values, actor instances are deleted, if they exist. For example, instance 1 is deleted if the value of this port is -1 at a given time step.

Dependencies

This input is visible when the operating mode of the block is set to either Create at step or Reference by instance number.

Output

expand all

Validity of the specified actor, returned as false if the specified actor cannot be found in the world or true if the actor is found.

Parameters

expand all

Main

Name of the root actor for the current Simulation 3D Actor block.

Name of the parent actor of the actor, specified as a string.

Operating mode that determines block behavior, specified as one of these options.

  • Create at setup – Use this option to create actors in the scene. The actors are created during game setup, before the simulation runs. You can also control the simulation of these actors using the Input, Output, and Event ports.

  • Create at step – Use this option to dynamically create and delete actors when the simulation is running. An Instance input port of the type int is created in this mode, and the actors are dynamically generated based on the values input to the block. If the value of Instance is greater than zero, an actor with the name 'Actor name + Instance value' is created. The name of the actor is derived from 'Actor Name' in the block mask. The instance value is the current value of the port. When the value of Instance is negative, then the actor is deleted. Unlike the Create at setup option, you cannot control the actors created with this option selected in the block mask.

  • Reference by name – Use this option to refer to an actor in the scene using Actor Name, and control this actor's simulation using the inputs of the block. Get data of the actor using the outputs or events. This also provides a Valid output port.

    If an actor with the specified name is not present, the Valid port returns false or 0. In this case, default values will be passed as output for rest of the out ports (if any). Use the Valid port to verify whether the other outputs generated are currently valid or not.

    Note

    Source file and Initialization script parameters are unavailable in the Reference by name operating mode.

  • Reference by instance number – Use this option to refer to an instance created via a different actor block. Similar to the Create at step operating mode, this option creates an Instance input in the block, and the effective actor name 'Actor name + Instance value' is used to reference the actor.

    If an actor with the generated name is not present, the Valid port returns false or 0. In this case, default values are passed as output for rest of the output ports, if any. Use the Valid port to verify whether the other outputs generated are currently valid or not.

    Note

    Source file and Initialization script parameters are unavailable in the Reference by instance number operating mode.

Dependencies

The Transform tab is available if you set Operation as either Create at setup or Create at step.

File from which actors are sourced, specified as a string.

This option loads a 3D file or imports a sim3d.Actor object, including child actor objects from MAT or STL files.

Alternatively, the Select button can also be used to select a file from the Windows® file browser.

Code to initialize the actor created by the block, specified as a MATLAB® script. You can also use this script to create other actor objects, set their properties, and add them to the 3D environment as child actors using the add function. You must set the parent actor using the parent in the add function. This MATLAB script runs when the 3D environment initializes the actors created by the block.

The order of actor creation is:

  1. Root actor with specified name is created.

  2. The Source file is loaded into the root actor.

  3. The Initialization script runs.

Use the name Actor when modifying the root actor of the block. Actor is a reserved handle in the initialization script. Otherwise, use the findBy function to get the actor handle of a different name, for example, one of the child actors. Then use the retrieved actor handle to initialize that specific actor. For example, to add an actor as child of the root actor, set Actor as the parent actor in the add function.

Use the name World for actors in the 3D environment. World is a reserved handle in the initialization script for the 3D environment created by the Simulation 3D Scene Configuration block.

Initialization script does not use the base workspace variables.

Sample time, Ts. The graphics frame rate is the inverse of the sample time.

If you set the sample time to -1, the block uses the sample time specified in the Simulation 3D Scene Configuration block.

For optimal performance, check that this value is not less than the value of Sample time specified in the Simulation 3D Scene Configuration block.

Transform

The Transform tab is available to set the initial transform properties when you set Operation as either Create at setup or Create at step. Otherwise, the transform properties set in the Initialization script are used in the Transform tab and overwrite any value set there.

Translation (x,y,z) of the actor object relative to its parent actor, specified as a real 1-by-3 vector, in meters.

Rotation (roll, pitch, yaw) of the actor object relative to its parent actor, specified as a real 1-by-3 vector, in radians.

Relative scale in x, y and z coordinates, specified as a real 1-by-3 vector.

Note

Setting the initial transform properties in the Initialization script overwrites the Transform tab values.

Inputs

This text area lists the user-selected input ports of the block and provides a button that opens the port selector app, which you can use to modify the input ports. Each line in the text area represents one block port.

You can manually modify the ports using the text area, but using the port selector app is recommended for choosing the ports.

Outputs

This text area lists the user-selected output ports of the block and provides a button that opens the port selector app, which you can use to modify the output ports. Each line in the text area represents one block port.

You can manually modify the ports using the text area, but using the port selector app is recommended for choosing the ports.

More About

expand all

Version History

Introduced in R2022b

expand all