Cube with different side color in RGB
1 Ansicht (letzte 30 Tage)
Ältere Kommentare anzeigen
I created a cube using rigid body tree (code below). Then I wanted to color different sides of the cube, red, gree, blue, etc... but when I use the command
addVisual(body, 'box', [1 1 1], 'FaceColor', 'r');
for a side to be in red color, the issue is, it is giving me error of too many arguments.
cube = rigidBodyTree;
body1 = rigidBody('body1');
joint1 = rigidBodyJoint('joint1','floating');
body1.Joint = joint1;
addVisual(body1, 'box', [1 1 1], 'FaceColor', 'r');
addVisual(body1, 'box', [1 1 1]);
%addVisual(body1, 'box', [1 1 1], 'FaceColor', colors{i});
addBody(cube,body1,cube.BaseName);
2 Kommentare
DGM
am 26 Apr. 2024
I don't have that toolbox, but I think you might just have to set those properties after calling addVisual(). That's what other examples seem to do.
Antworten (1)
Karsh Tharyani
am 3 Mai 2024
Bearbeitet: Karsh Tharyani
am 3 Mai 2024
The addVisual function on a rigidBody doesn't support the additional name-value arguments that you are trying to pass i.e., "FaceColor". I have conveyed this enhancement request to the development team at MathWorks for a future release of MATLAB.
As a workaround, you can try to use findobj and set to modify the patch colors.
Here are some code snippets to illustrate:
rbt=loadrobot('kinovagen3');
ax=show(rbt);
% All the visual mesh patches on the rigid body tree visualization
patches=findobj(ax.Children,'-regexp','DisplayName','_mesh');
% Set the ForeArm_Link's visual mesh color to "magenta".
forearmlinkmeshes=findobj(patches,'-regexp','DisplayName','ForeArm_Link_mesh');
set(forearmlinkmeshes,'FaceColor','magenta');
% Set all the visual mesh patches of the robot to the color 'blue'
set(patches,'FaceColor','blue');
Hope this helps,
Karsh
0 Kommentare
Siehe auch
Kategorien
Mehr zu Robotics finden Sie in Help Center und File Exchange
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!