Skip to content

Commit 5fa6b43

Browse files
authored
Fix contact frame inconsistency in visualization with mjContact.frame
1 parent 6f7fba7 commit 5fa6b43

File tree

1 file changed

+3
-8
lines changed

1 file changed

+3
-8
lines changed

src/engine/engine_vis_visualize.c

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ static void makeTriangle(mjvGeom* thisgeom, const mjtNum v0[3], const mjtNum v1[
115115
static void addContactGeom(const mjModel* m, mjData* d, const mjtByte* flags,
116116
const mjvOption* vopt, mjvScene* scn) {
117117
int objtype = mjOBJ_UNKNOWN, category = mjCAT_DECOR;
118-
mjtNum mat[9], tmp[9], vec[3], frc[3], confrc[6], axis[3];
118+
mjtNum mat[9], vec[3], frc[3], confrc[6], axis[3];
119119
mjtNum framewidth, framelength, scl = m->stat.meansize;
120120
mjContact* con;
121121
mjvGeom* thisgeom;
@@ -131,10 +131,8 @@ static void addContactGeom(const mjModel* m, mjData* d, const mjtByte* flags,
131131
// get pointer
132132
con = d->contact + i;
133133

134-
// mat = contact rotation matrix (normal along z)
135-
mju_copy(tmp, con->frame+3, 6);
136-
mju_copy(tmp+6, con->frame, 3);
137-
mju_transpose(mat, tmp, 3, 3);
134+
// mat = contact frame rotation matrix (normal along x)
135+
mju_transpose(mat, con->frame, 3, 3);
138136

139137
// contact point
140138
if (flags[mjVIS_CONTACTPOINT]) {
@@ -244,9 +242,6 @@ static void addContactGeom(const mjModel* m, mjData* d, const mjtByte* flags,
244242
continue;
245243
}
246244

247-
// mat = contact frame rotation matrix (normal along x)
248-
mju_transpose(mat, con->frame, 3, 3);
249-
250245
// get contact force:torque in contact frame
251246
mj_contactForce(m, d, i, confrc);
252247

0 commit comments

Comments
 (0)