Add multiple actors in one Simulink Simulation 3D Actor Block
9 Ansichten (letzte 30 Tage)
Ältere Kommentare anzeigen
Alyssa
am 3 Sep. 2024
Kommentiert: Alyssa
am 4 Sep. 2024
I am trying to mimic the example https://www.mathworks.com/help/sl3d/automate-virtual-assembly-line.html, with a much simpler starting case. However, I am finding that the second object created in the block does not show in the 3D simulation viewer. Is there some command I need to run to force it to render? It is not Hidden, according to its properties.
Here is my "loadActors.m" file:
function loadActors(Actor, World)%Load actors
%Actor.load('Actor1_scene.mat')
Actor1 = Actor;
createShape(Actor1, 'box', [0.2, 0.2, 1]);
Actor2 = sim3d.Actor('ActorName','Actor2');
%Actor2.load('Actor2_scene.mat');
createShape(Actor2, 'cylinder', [0.5, 0.5, 0.75]);
add(World, Actor2);
It is called as follows:
And the output is:
0 Kommentare
Akzeptierte Antwort
Nishan Nekoo
am 3 Sep. 2024
Hi Alyssa,
When using the Simulation 3D Actor block, you are effectively creating an Actor in the World.
Any element that you add via a .m or .mat script must be a child of this Actor. Within one Simulation 3D Actor block, you cannot create multiple Actors that are children of the World when using this .m or .mat import workflow.
Using the following modified function would work:
function loadActors(Actor, World)%Load actors
Actor1 = sim3d.Actor();
createShape(Actor1, 'box', [0.2, 0.2, 1]);
World.add(Actor1, Actor)
Actor2 = sim3d.Actor('ActorName','Actor2');
createShape(Actor2, 'cylinder', [0.5, 0.5, 0.75]);
World.add(Actor2, Actor);
Alternatively, you can still make Actor 1 be the same as the Actor of the block, but Actor2 must be a child as follows:
function loadActors(Actor, World)%Load actors
Actor1 = Actor;
createShape(Actor1, 'box', [0.2, 0.2, 1]);
Actor2 = sim3d.Actor('ActorName','Actor2');
createShape(Actor2, 'cylinder', [0.5, 0.5, 0.75]);
World.add(Actor2, Actor1);
I have created a ticket internally to make this limitation clearer to the user instead of simply not creating the second actor in the world.
I hope that helps and I apologize for any inconvenience you faced!
Nishan
Weitere Antworten (0)
Siehe auch
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!