Label all bodies, not just selected bodies, when mjLABEL_BODY is set.

An earlier refactor incorrectly assumed that only selected bodies needed
labels.

PiperOrigin-RevId: 818568645
Change-Id: I7aea07c5342673dd589e1891d0db1f2b0c489fe4
This commit is contained in:
Haroon Qureshi
2025-10-13 02:53:36 -07:00
committed by Copybara-Service
parent d9399d6f84
commit 66a1c22cae
+20 -18
View File
@@ -1827,31 +1827,33 @@ static void addSelectionPointGeoms(const mjModel* m, mjData* d, const mjvOption*
} }
static void addSelectionBodyLabelGeoms(const mjModel* m, mjData* d, const mjvOption* vopt, static void addBodyLabelGeoms(const mjModel* m, mjData* d, const mjvOption* vopt,
const mjvPerturb* pert, int catmask, mjvScene* scn) { const mjvPerturb* pert, int catmask, mjvScene* scn) {
if (vopt->flags[mjVIS_INERTIA]) { if (vopt->flags[mjVIS_INERTIA]) {
return; return;
} }
if (vopt->label != mjLABEL_SELECTION && vopt->label != mjLABEL_BODY) { if (vopt->label != mjLABEL_SELECTION && vopt->label != mjLABEL_BODY) {
return; return;
} }
if (pert->select <= 0 || pert->select >= m->nbody) { for (int i=1; i < m->nbody; i++) {
return; if (vopt->label == mjLABEL_SELECTION && pert->select != i) {
} continue;
if (bodycategory(m, pert->select) & ~catmask) { }
return; if (bodycategory(m, i) & ~catmask) {
} continue;
}
mjvGeom* thisgeom = acquireGeom(scn, pert->select, mjCAT_DECOR, mjOBJ_UNKNOWN); mjvGeom* thisgeom = acquireGeom(scn, i, mjCAT_DECOR, mjOBJ_UNKNOWN);
if (!thisgeom) { if (!thisgeom) {
return; return;
} }
thisgeom->type = mjGEOM_LABEL; thisgeom->type = mjGEOM_LABEL;
mju_n2f(thisgeom->pos, d->xpos+3*pert->select, 3); mju_n2f(thisgeom->pos, d->xpos+3*i, 3);
mju_n2f(thisgeom->mat, d->xmat+9*pert->select, 9); mju_n2f(thisgeom->mat, d->xmat+9*i, 9);
makeLabel(m, mjOBJ_BODY, pert->select, thisgeom->label); makeLabel(m, mjOBJ_BODY, i, thisgeom->label);
releaseGeom(&thisgeom, scn); releaseGeom(&thisgeom, scn);
}
} }
@@ -2640,7 +2642,7 @@ void mjv_addGeoms(const mjModel* m, mjData* d, const mjvOption* vopt,
addPerturbGeoms(m, d, vopt, pert, scn); addPerturbGeoms(m, d, vopt, pert, scn);
addWorldBodyFrameGeoms(m, d, vopt, catmask, scn); addWorldBodyFrameGeoms(m, d, vopt, catmask, scn);
addSelectionPointGeoms(m, d, vopt, pert, scn); addSelectionPointGeoms(m, d, vopt, pert, scn);
addSelectionBodyLabelGeoms(m, d, vopt, pert, catmask, scn); addBodyLabelGeoms(m, d, vopt, pert, catmask, scn);
addJointGeoms(m, d, vopt, scn); addJointGeoms(m, d, vopt, scn);
addActuatorGeoms(m, d, vopt, scn); addActuatorGeoms(m, d, vopt, scn);
addIslandLabelGeoms(m, d, vopt, scn); addIslandLabelGeoms(m, d, vopt, scn);