This topic describes how to record animation files programmatically for virtual worlds that are not associated with Simulink® models (in other words, from the MATLAB® interface). In this instance, you must specify the relationship between the events that change the virtual world state and the time in the animation file. This requirement is different from virtual worlds associated with Simulink models. Virtual worlds that are controlled completely from the MATLAB interface have no default, intuitive interpretation of time relation between MATLAB environment models and virtual scenes.
Note
Many engineering time-dependent problems are modeled and solved
in MATLAB. For those problems that have meaningful visual representation,
you can create virtual reality models and animate their solutions.
In addition, the offline animation time can represent any independent
variable along which you can observe and visualize a model solution.
Using offline animation files can bring the communication of such
engineering problem resolutions to new levels. The Simulink
3D Animation™ example vrheat
(heat
transfer visualization) is an example of a time-dependent problem
modeled and solved in MATLAB. Its modified version, vrheat_anim
,
shows the use of the programming technique described in this topic.
To record animation files for virtual worlds that are not associated with Simulink models, note the following guidelines, which require a strong understanding of the advanced Simulink 3D Animation software.
Retrieve the vrworld
object handle
of the virtual scene that you want to record.
To record 2-D animations,
Retrieve the corresponding vrfigure
object.
For 2-D animations, the Simulink
3D Animation software records
exactly what you see in the viewer window. Because 2-D animations
record exactly what you see in the Simulink
3D Animation Viewer
window, the properties that control 2-D file recording belong to vrfigure
objects.
Set the Record2D
vrfigure
property.
To override default filenames for animation files,
set the vrfigure
Record2DFileName
property.
To create 3-D animation files,
Retrieve the corresponding vrworld
object.
Set the Record3D
vrworld
property.
To override default filenames for animation files,
set the vrworld
Record3DFileName
property.
Set the RecordMode
vrworld
object
property to manual
or scheduled
.
For optimal results, select scheduled
.
If you select scheduled
for RecordMode
,
be sure to set the vrworld
RecordInterval
property
to a desired time interval.
To specify that the virtual world time source is an
external one, set the vrworld
property TimeSource
to external
.
This setting ensures that the MATLAB software controls the virtual
world scene time. Type
set(virtual_world,'TimeSource', 'external')
To specify time values at which you want to save animation
frames, iteratively set the vrworld
Time
property.
For a smoother animation, set the time at equal intervals, for example,
every five seconds. Use a sequence like this one:
set(virtual_world,'Time',time_value)
For example, to set the Time
property for vrworld
, w
,
with values increasing by 10, enter
set(w,'Time',10); set(w,'Time',20); set(w,'Time',30); set(w,'Time',40); set(w,'Time',50); set(w,'Time',60); set(w,'Time',70); set(w,'Time',80); set(w,'Time',90); set(w,'Time',100); set(w,'Time',110); set(w,'Time',120); set(w,'Time',130); set(w,'Time',140);
If you select a start time of 60 and a stop time of 120 (as
described in Scheduled 3-D Recording with MATLAB), the Simulink
3D Animation software
starts recording at 60
and stops at 120
.
Because of the repetitive nature of the time interval setting,
set the Time
property in a loop from within a script
or program.
After you set the vrworld
Time
property,
set the virtual scene object properties as necessary. Set these properties
to values that correspond to the given time frame to achieve the desired
animation effect.
In each time frame, issue the vrdrawnow
command
for scene changes. This command renders and updates the scene.
The following code fragment contains a typical loop that iteratively
sets the Time
property, changes a virtual scene
object property, and calls vrdrawnow
to render
the scene:
for time=StartTime:Step:StopTime % advance the time in the virtual scene set(myworld,'Time',time); % here we change node properties myworld.Car.translation = [ time*speed 0 0 ]; % render the changed position vrdrawnow; end
If you set the Time
property at or outside
the end boundary of RecordInterval
, the Simulink
3D Animation software
stops recording. You can then view the resulting animation file.
For a complete example of how to perform this kind of animation
recording, refer to the Simulink
3D Animation vrheat_anim
example.