3-dimensional visual objects used for animation
Package Visualizers contains components to visualize 3-dimensional shapes. These components are the basis for the animation features of the MultiBody library.
FixedShape FixedShape2 |
Visualizing an elementary shape with dynamically varying shape attributes.
FixedShape has one connector frame_a, whereas FixedShape2 has additionally
a frame_b for easier connection to further visual objects.
The following shape types are supported: |
FixedFrame | Visualizing a coordinate system including axes labels with fixed sizes: |
FixedArrow, SignalArrow |
Visualizing an arrow. Model "FixedArrow" provides
a fixed sized arrow, model "SignalArrow" provides
an arrow with dynamically varying length that is defined
by an input signal vector: |
Torus | Visualizing a torus: |
VoluminousWheel | Visualizing a wheel: |
PipeWithScalarField | Visualizing a pipe with a scalar field represented by a color coding: |
Advanced | Package that contains components to visualize 3-dimensional shapes where all parts of the shape can vary dynamically. Basic knowledge of Modelica is needed in order to utilize the components of this package. |
The colors of the visualization components are declared with the predefined type MultiBody.Types.Color. This is a vector with 3 elements, {r, g, b}, and specifies the color of the shape. {r,g,b} are the "red", "green" and "blue" color parts. Note, r g, b are given as Integer[3] in the ranges 0 … 255, respectively.
Extends from Modelica.Icons.Package (Icon for standard packages).
Name | Description |
---|---|
FixedShape | Visualizing an elementary shape with dynamically varying shape attributes (has one frame connector) |
FixedShape2 | Visualizing an elementary shape with dynamically varying shape attributes (has two frame connectors) |
FixedFrame | Visualizing a coordinate system including axes labels (visualization data may vary dynamically) |
FixedArrow | Visualizing an arrow with dynamically varying size in frame_a |
SignalArrow | Visualizing an arrow with dynamically varying size in frame_a based on input signal |
Torus | Visualizing a torus |
VoluminousWheel | Visualizing a voluminous wheel |
PipeWithScalarField | Visualizing a pipe with scalar field quantities along the pipe axis |
Rectangle | Visualizing a planar rectangular surface |
Colors | Library of functions operating on color |
Advanced | Visualizers that require basic knowledge about Modelica in order to use them |
Internal | Makeshift visualizers for display of three-dimensional fonts using cylinders |
Visualizing an elementary shape with dynamically varying shape attributes (has one frame connector)
Model FixedShape defines a visual shape that is
shown at the location of its frame_a.
All describing data such as size and color can vary dynamically by
providing appropriate expressions in the input fields of the
parameter menu. The only exception is parameter shapeType
that cannot be changed during simulation.
The following shapes are currently supported via
parameter shapeType (e.g., shapeType="box"):
The dark blue arrows in the figure above are directed along variable lengthDirection. The light blue arrows are directed along variable widthDirection. The coordinate systems in the figure represent frame_a of the FixedShape component.
Additionally, external shapes can be specified as (not all options might be supported by all tools):
The supported file formats are tool dependent. Most tools support at least DXF-files but may support other format as well (such as stl, obj, 3ds). Since visualization files contain color and other data, the corresponding information in the model is usually ignored. For information about DXF files, see Wikipedia. As a default it is assumed that the DXF coordinates are in the "frame_a"-system and in meters, and that the 3dfaces are two-sided. Some tools support only 3dface (for geometry) and layer (for advanced coloring).
The sizes of any of the above components are specified by the length, width and height variables. Via variable extra additional data can be defined:
shapeType | Meaning of parameter extra |
---|---|
"cylinder" | if extra > 0, a black line is included in the cylinder to show the rotation of it. |
"cone" | extra = diameter-left-side / diameter-right-side, i.e., extra = 1: cylinder extra = 0: "real" cone. |
"pipe" | extra = outer-diameter / inner-diameter, i.e, extra = 1: cylinder that is completely hollow extra = 0: cylinder without a hole. |
"gearwheel" | extra is the number of teeth of the (external) gear. If extra < 0, an internal gear is visualized with |extra| teeth. The axis of the gearwheel is along "lengthDirection", and usually: width = height = 2*radiusOfGearWheel. |
"spring" | extra is the number of windings of the spring. Additionally, "height" is not the "height" but 2*coil-width. |
external shape | extra = 0: Visualization from file is not scaled. extra = 1: Visualization from file is scaled with "length", "width" and "height" of the shape |
Parameter color is a vector with 3 elements, {r, g, b}, and specifies the color of the shape. {r, g, b} are the "red", "green" and "blue" color parts. Note, r, g and b are given as Integer[3] in the ranges 0 … 255, respectively. The predefined type MultiBody.Types.Color contains a menu definition of the colors used in the MultiBody library together with a color editor.
Extends from Modelica.Mechanics.MultiBody.Interfaces.PartialVisualizer (Base model for visualizers (has a frame_a on the left side + outer world + assert to guarantee that the component is connected)).
Name | Description |
---|---|
animation | = true, if animation shall be enabled |
if animation = true | |
shapeType | Type of shape |
r_shape[3] | Vector from frame_a to shape origin, resolved in frame_a [m] |
lengthDirection | Vector in length direction of shape, resolved in frame_a [1] |
widthDirection | Vector in width direction of shape, resolved in frame_a [1] |
length | Length of shape [m] |
width | Width of shape [m] |
height | Height of shape [m] |
color | Color of shape |
extra | Additional data for cylinder, cone, pipe, gearwheel and spring |
specularCoefficient | Reflection of ambient light (= 0: light is completely absorbed) |
Name | Description |
---|---|
frame_a | Coordinate system in which visualization data is resolved |
Visualizing an elementary shape with dynamically varying shape attributes (has two frame connectors)
Model FixedShape2 defines a visual shape that is
shown at the location of its frame_a. This model is identical
to FixedShape with the only difference that an
additional frame_b is present which is parallel to frame_a.
This makes it more convenient to connect several visual
shapes together when building up more complex visual
objects. All describing data such as size and color can vary dynamically by
providing appropriate expressions in the input fields of the
parameter menu. The only exception is parameter shapeType
that cannot be changed during simulation.
The following shapes are currently supported via
parameter shapeType (e.g., shapeType="box"):
The dark blue arrows in the figure above are directed along
variable lengthDirection. The light blue arrows are directed
along variable widthDirection. The coordinate systems
in the figure represent frame_a of the FixedShape component.
Additionally, external shapes can be specified as (not all options might be supported by all tools):
The supported file formats are tool dependent. Most tools support at least DXF-files but may support other format as well (such as stl, obj, 3ds). Since visualization files contain color and other data, the corresponding information in the model is usually ignored. For information about DXF files, see Wikipedia. As a default it is assumed that the DXF coordinates are in the "frame_a"-system and in meters, and that the 3dfaces are two-sided. Some tools support only 3dface (for geometry) and layer (for advanced coloring).
The sizes of any of the above components are specified by the length, width and height variables. Via variable extra additional data can be defined:
shapeType | Meaning of parameter extra |
---|---|
"cylinder" | if extra > 0, a black line is included in the cylinder to show the rotation of it. |
"cone" | extra = diameter-left-side / diameter-right-side, i.e., extra = 1: cylinder extra = 0: "real" cone. |
"pipe" | extra = outer-diameter / inner-diameter, i.e, extra = 1: cylinder that is completely hollow extra = 0: cylinder without a hole. |
"gearwheel" | extra is the number of teeth of the (external) gear. If extra < 0, an internal gear is visualized with |extra| teeth. The axis of the gearwheel is along "lengthDirection", and usually: width = height = 2*radiusOfGearWheel. |
"spring" | extra is the number of windings of the spring. Additionally, "height" is not the "height" but 2*coil-width. |
external shape | extra = 0: Visualization from file is not scaled. extra = 1: Visualization from file is scaled with "length", "width" and "height" of the shape |
Parameter color is a vector with 3 elements, {r, g, b}, and specifies the color of the shape. {r, g, b} are the "red", "green" and "blue" color parts. Note, r, g, b are given as Integer[3] in the ranges 0 … 255, respectively. The predefined type MultiBody.Types.Color contains a menu definition of the colors used in the MultiBody library together with a color editor.
In the following figure the relationships between frame_a and frame_b are shown. The origin of frame_b with respect to frame_a is specified via parameter vector r.
Name | Description |
---|---|
animation | = true, if animation shall be enabled |
if animation = true | |
shapeType | Type of shape |
r_shape[3] | Vector from frame_a to shape origin, resolved in frame_a [m] |
lengthDirection | Vector in length direction of shape, resolved in frame_a [1] |
widthDirection | Vector in width direction of shape, resolved in frame_a [1] |
length | Length of shape [m] |
width | Width of shape [m] |
height | Height of shape [m] |
extra | Additional data for cylinder, cone, pipe, gearwheel and spring |
color | Color of shape |
specularCoefficient | Reflection of ambient light (= 0: light is completely absorbed) |
Name | Description |
---|---|
frame_a | Coordinate system a (all shape definition vectors are resolved in this frame) |
frame_b | Coordinate system b |
Visualizing a coordinate system including axes labels (visualization data may vary dynamically)
Model FixedFrame visualizes the three axes of
its coordinate system frame_a together with appropriate axes
labels. A typical example is shown in the following figure:
The sizes of the axes, the axes colors and the specular coefficient (= reflection factor for ambient light) can vary dynamically by providing appropriate expressions in the input fields of the parameter menu.
Extends from Modelica.Mechanics.MultiBody.Interfaces.PartialVisualizer (Base model for visualizers (has a frame_a on the left side + outer world + assert to guarantee that the component is connected)).
Name | Description |
---|---|
animation | = true, if animation shall be enabled |
if animation = true | |
showLabels | = true, if labels shall be shown |
length | Length of axes arrows [m] |
diameter | Diameter of axes arrows [m] |
color_x | Color of x-arrow |
color_y | Color of y-arrow |
color_z | Color of z-arrow |
specularCoefficient | Reflection of ambient light (= 0: light is completely absorbed) |
Name | Description |
---|---|
frame_a | Coordinate system in which visualization data is resolved |
Visualizing an arrow with dynamically varying size in frame_a
Model FixedArrow defines an arrow that is
shown at the location of its frame_a.
The direction of the arrow specified with vector
n
is with respect to frame_a, i.e., the local frame to which the
arrow component is attached. The direction, length and color of the arrow
can vary dynamically by providing appropriate expressions in the input
fields of the parameter menu.
The quantity
parameter defines what the vector represents, allowing
tools to scale e.g. forces and torques differently in a consistent way.
For the default value RelativePosition the obvious scaling is
1 and the relative position is shown as is.
Extends from Modelica.Mechanics.MultiBody.Interfaces.PartialVisualizer (Base model for visualizers (has a frame_a on the left side + outer world + assert to guarantee that the component is connected)).
Name | Description |
---|---|
animation | = true, if animation shall be enabled |
if animation = true | |
r_tail[3] | Vector from frame_a to arrow tail, resolved in frame_a [m] |
n | Vector in arrow direction, resolved in frame_a [1] |
length | Length of complete arrow [m] |
color | Color of arrow |
specularCoefficient | Reflection of ambient light (= 0: light is completely absorbed) |
quantity | Kind of physical quantity represented by the vector |
headAtOrigin | = true, if the vector is pointing towards the origin of vector frame |
Name | Description |
---|---|
frame_a | Coordinate system in which visualization data is resolved |
Visualizing an arrow with dynamically varying size in frame_a based on input signal
Model SignalArrow defines an arrow that is dynamically visualized
at the location where its frame_a is attached. The
vector from the tail to the head of the arrow,
resolved in frame_a, is defined via the signal vector of
the connector r_head
(Real r_head[3]
):
The quantity
parameter defines what the vector represents, allowing
tools to scale e.g. forces and torques differently in a consistent way.
For the default value RelativePosition the obvious scaling is
1 and the relative position is shown as is.
The tail of the arrow is defined with input r_tail
with respect to frame_a (vector from the origin of frame_a to the arrow tail).
Extends from Modelica.Mechanics.MultiBody.Interfaces.PartialVisualizer (Base model for visualizers (has a frame_a on the left side + outer world + assert to guarantee that the component is connected)).
Name | Description |
---|---|
animation | = true, if animation shall be enabled |
if animation = true | |
r_tail[3] | Vector from frame_a to arrow tail, resolved in frame_a [m] |
color | Color of arrow |
specularCoefficient | Reflection of ambient light (= 0: light is completely absorbed) |
quantity | Kind of physical quantity represented by the vector |
headAtOrigin | = true, if the vector is pointing towards the origin of vector frame |
Name | Description |
---|---|
frame_a | Coordinate system in which visualization data is resolved |
r_head[3] | Vector resolved in frame_a |
Visualizing a torus
Model Torus visualizes a torus. The center of the torus is located at connector frame_a (visualized by the red coordinate system in the figure below). The left image below shows a torus with R = 0.5 m and r = 0.2 m. The right images below shows the torus with the additional parameter settings:
opening = 45 degree startAngle = -135 degree stopAngle = 135 degree
In the advanced menu the discretization of the surface visualization can be defined by
the number nR of points along the major radius of the torus and by
the number nr of points along the minor radius of the torus.
In case the torus is closed (that is, opening
= 0 degree),
the actual number of points is one less (that is nR - 1, nr - 1), because the first and
the last point of the parametrization coincide in this case.
Extends from Modelica.Mechanics.MultiBody.Interfaces.PartialVisualizer (Base model for visualizers (has a frame_a on the left side + outer world + assert to guarantee that the component is connected)).
Name | Description |
---|---|
animation | = true, if animation shall be enabled |
R | Major radius (distance from center of torus to center of tube) [m] |
r | Minor radius (radius of tube) [m] |
opening | Opening angle of torus [rad] |
startAngle | Start angle of torus slice [rad] |
stopAngle | End angle of torus slice [rad] |
Material properties | |
wireframe | = true: 3D model will be displayed without faces |
color | Color of surface |
specularCoefficient | Reflection of ambient light (= 0: light is completely absorbed) |
transparency | Transparency of shape: 0 (= opaque) ... 1 (= fully transparent) |
Discretization | |
n_R | Number of points along major radius R |
n_r | Number of points along minor radius r |
Name | Description |
---|---|
frame_a | Coordinate system in which visualization data is resolved |
Visualizing a voluminous wheel
Model VoluminousWheel provides a simple visualization of a tire using a torus and a pipe shape object. The center of the wheel is located at connector frame_a (visualized by the red coordinate system in the figure below).
Extends from Modelica.Mechanics.MultiBody.Interfaces.PartialVisualizer (Base model for visualizers (has a frame_a on the left side + outer world + assert to guarantee that the component is connected)).
Name | Description |
---|---|
animation | = true, if animation shall be enabled |
rTire | Radius of the tire [m] |
rRim | Radius of the rim [m] |
width | Width of the tire [m] |
rCurvature | Radius of the tire's cross section [m] |
Material properties | |
color | Color of tire |
specularCoefficient | Reflection of ambient light (= 0: light is completely absorbed) |
Discretization | |
n_rTire | Number of points along rTire |
n_rCurvature | Number of points along rCurvature |
Name | Description |
---|---|
frame_a | Coordinate system in which visualization data is resolved |
Visualizing a pipe with scalar field quantities along the pipe axis
Model PipeWithScalarField visualizes a pipe and a scalar field along the pipe axis. The latter is shown by mapping the scalar field to color values with a color map and utilizing this color at the perimeter associated with the corresponding axis location. Typically the scalar field value is a temperature, but might be also another quantity. Predefined color maps are available from MultiBody.Visualizers.Colors.ColorMaps and can be selected via parameter "colorMap". A color map with the corresponding scalar field values can be exported as vector-graphics in svg-format with function MultiBody.Visualizers.Colors.colorMapToSvg. Connector frame_a of this component is located in the center of the circle at the left side of the pipe and the pipe axis is oriented along the x-axis of frame_a, see figure below in which frame_a is visualized with a coordinate system:
The color coding is shown in the next figure. It was generated with MultiBody.Visualizers.Colors.colorMapToSvg using the following call:
colorMapToSvg(Modelica.Mechanics.MultiBody.Visualizers.Colors.ColorMaps.jet(), height=50, nScalars=6, T_max=100, caption="Temperature in C");
Extends from Modelica.Mechanics.MultiBody.Interfaces.PartialVisualizer (Base model for visualizers (has a frame_a on the left side + outer world + assert to guarantee that the component is connected)).
Name | Description |
---|---|
animation | = true, if animation shall be enabled |
rOuter | Outer radius of pipe [m] |
length | Length of pipe [m] |
xsi[:] | Vector of relative positions along the pipe with x[1] = 0, x[end] = 1 |
T[size(xsi, 1)] | Vector of values at positions xsi*length (will be visualized by color) |
T_min | Minimum value of T that corresponds to colorMap[1,:] |
T_max | Maximum value of T that corresponds to colorMap[end,:] |
Color coding | |
replaceable function colorMap | Function defining the color map |
n_colors | Number of colors in the colorMap |
specularCoefficient | Reflection of ambient light (= 0: light is completely absorbed) |
transparency | Transparency of shape: 0 (= opaque) ... 1 (= fully transparent) |
Discretization | |
n_rOuter | Number of points along outer radius |
n_length | Number of points along length |
Name | Description |
---|---|
frame_a | Coordinate system in which visualization data is resolved |
Color coding | |
replaceable function colorMap | Function defining the color map |
Visualizing a planar rectangular surface
This model visualizes a planar rectangle. The center of the rectangle is located at connector frame_a (visualized by the red coordinate system in the figure below). The figure below shows two rectangles of the same parameters
nu = 8, nv = 3, length_u = 3, length_v = 2.
The green rectangle on the right is visualized in wireframe thus highlighting the influence of the discretization. Moreover, the u-axis of this rectangle is modified so that the rectangle is rotated about the z-axis of frame_a.
Extends from Modelica.Mechanics.MultiBody.Interfaces.PartialVisualizer (Base model for visualizers (has a frame_a on the left side + outer world + assert to guarantee that the component is connected)).
Name | Description |
---|---|
animation | = true, if animation shall be enabled |
direction_u | Vector along u-axis of rectangle resolved in frame_a [1] |
direction_v | Vector along v-axis of rectangle resolved in frame_a [1] |
length_u | Length of rectangle in direction u [m] |
length_v | Length of rectangle in direction v [m] |
Discretization | |
nu | Number of points in direction u |
nv | Number of points in direction v |
Material properties | |
wireframe | = true: 3D model will be displayed without faces |
color | Color of surface |
specularCoefficient | Reflection of ambient light (= 0: light is completely absorbed) |
transparency | Transparency of shape: 0 (= opaque) ... 1 (= fully transparent) |
Name | Description |
---|---|
frame_a | Coordinate system in which visualization data is resolved |