plotMesh
Description
plotMesh(
displays meshes composed of the specified vertices and faces on a bird's-eye plot. To
obtain the mesh vertices and faces of an object in a driving scenario, use the mPlotter
,vertices
,faces
)targetMeshes
function. The mesh plotter, mPlotter
, is associated with a birdsEyePlot
object and configures the display of the meshes.
The bird's-eye plot assigns a different color to each actor, based on the default color
order of Axes
objects. For more details, see the ColorOrder
property for Axes
objects.
To remove all meshes associated with mesh plotter mPlotter
, call
the clearData
function and specify mPlotter
as the input argument.
Examples
Display Actor Meshes in Driving Scenario
Display actors in a driving scenario by using their mesh representations instead of their cuboid representations.
Create a driving scenario, and add a 25-meter straight road to the scenario.
scenario = drivingScenario; roadcenters = [0 0 0; 25 0 0]; road(scenario,roadcenters);
Add a pedestrian and a vehicle to the scenario. Specify the mesh dimensions of the actors using prebuilt meshes.
Specify the pedestrian mesh as a
driving.scenario.pedestrianMesh
object.Specify the vehicle mesh as a
driving.scenario.carMesh
object.
p = actor(scenario,'ClassID',4, ... 'Length',0.2,'Width',0.4, ... 'Height',1.7,'Mesh',driving.scenario.pedestrianMesh); v = vehicle(scenario,'ClassID',1, ... 'Mesh',driving.scenario.carMesh);
Add trajectories for the pedestrian and vehicle.
Specify for the pedestrian to cross the road at 1 meter per second.
Specify for the vehicle to follow the road at 10 meters per second.
waypointsP = [15 -3 0; 15 3 0]; speedP = 1; smoothTrajectory(p,waypointsP,speedP); wayPointsV = [v.RearOverhang 0 0; (25 - v.Length + v.RearOverhang) 0 0]; speedV = 10; smoothTrajectory(v,wayPointsV,speedV)
Add an egocentric plot for the vehicle. Turn the display of meshes on.
chasePlot(v,'Meshes','on')
Create a bird's-eye plot in which to display the meshes. Also create a mesh plotter and lane boundary plotter. Then run the simulation loop.
Obtain the road boundaries of the road the vehicle is on.
Obtain the mesh vertices, faces, and colors of the actor meshes, with positions relative to the vehicle.
Plot the road boundaries and actor meshes on the bird's-eye plot.
Pause the scenario to allow time for the plots to update. The chase plot updates every time you advance the scenario.
bep = birdsEyePlot('XLim',[-25 25],'YLim',[-10 10]); mPlotter = meshPlotter(bep); lbPlotter = laneBoundaryPlotter(bep); legend('off') while advance(scenario) rb = roadBoundaries(v); [vertices,faces,colors] = targetMeshes(v); plotLaneBoundary(lbPlotter,rb) plotMesh(mPlotter,vertices,faces,'Color',colors) pause(0.01) end
Input Arguments
mPlotter
— Mesh plotter
MeshPlotter
object
Mesh plotter, specified as a MeshPlotter
object. This object is
stored in the Plotters
property of a birdsEyePlot
object and configures the display of meshes in the bird's-eye
plot. To create this object, use the meshPlotter
function.
vertices
— Mesh vertices of each actor
N-element cell array
Mesh vertices of each actor, specified as an N-element cell array, where N is the number of actors.
Each element in vertices
must be a V-by-3
real-valued matrix containing the vertices of an actor, where:
V is the number of vertices.
Each row defines the 3-D (x,y,z) position of a vertex. When you use the
targetMeshes
function to obtain mesh vertices, the vertex positions are relative to the position of the actor that is input to that function. Units are in meters.
faces
— Mesh faces of each actor
N-element cell array
Mesh faces of each actor, specified as an N-element cell array, where N is the number of actors.
Each element in faces
must be an F-by-3
integer-valued matrix containing the faces of an actor, where:
F is the number of faces.
Each row defines a triangle of vertex IDs that make up the face. The vertex IDs correspond to row numbers within
vertices
.
Suppose the first face of the i
th element of
faces
has these vertex IDs.
faces{i}(1,:)
ans = 1 2 3
In the i
th element of vertices
, rows 1, 2,
and 3 contain the (x, y, z)
positions of the vertices that make up this face.
vertices{i}(1:3,:)
ans = 3.7000 0.9000 0.8574 3.7000 -0.9000 0.8574 3.7000 -0.9000 0.3149
colors
— Color of mesh faces for each actor
N-by-3 matrix of RGB triplets
Color of the mesh faces for each actor, specified as an N-by-3
matrix of RGB triplets. N is the number of actors and is equal to the
number of elements in vertices
and
faces
.
The i
th row of colors
is the RGB color value
of the faces in the i
th element of faces
. The
function applies the same color to all mesh faces of an actor.
An RGB triplet is a three-element row vector whose elements specify the intensities
of the red, green, and blue components of the color. The intensities must be in the
range [0, 1]. For example, [0.4 0.6 0.7]
.
More About
Meshes
In driving scenarios, a mesh is a triangle-based 3-D representation of an object. Mesh representations of objects are more detailed than the default cuboid (box-shaped) representations of objects. Meshes are useful for generating synthetic point cloud data from a driving scenario.
This table shows the difference between a cuboid representation and a mesh representation of a vehicle in a driving scenario.
Cuboid | Mesh |
---|---|
Version History
Introduced in R2020b
See Also
MATLAB Command
You clicked a link that corresponds to this MATLAB command:
Run the command by entering it in the MATLAB Command Window. Web browsers do not support MATLAB commands.
Select a Web Site
Choose a web site to get translated content where available and see local events and offers. Based on your location, we recommend that you select: .
You can also select a web site from the following list
How to Get Best Site Performance
Select the China site (in Chinese or English) for best site performance. Other MathWorks country sites are not optimized for visits from your location.
Americas
- América Latina (Español)
- Canada (English)
- United States (English)
Europe
- Belgium (English)
- Denmark (English)
- Deutschland (Deutsch)
- España (Español)
- Finland (English)
- France (Français)
- Ireland (English)
- Italia (Italiano)
- Luxembourg (English)
- Netherlands (English)
- Norway (English)
- Österreich (Deutsch)
- Portugal (English)
- Sweden (English)
- Switzerland
- United Kingdom (English)
Asia Pacific
- Australia (English)
- India (English)
- New Zealand (English)
- 中国
- 日本Japanese (日本語)
- 한국Korean (한국어)