Do not use flexedge_length if trilinear interpolation is used.
PiperOrigin-RevId: 723452451 Change-Id: I5a67fb74c13e80ae6d390694dd0c9f8c5e4d5213
This commit is contained in:
committed by
Copybara-Service
parent
3235f69afc
commit
0d4bc1de00
@@ -502,22 +502,23 @@ static void setStat(mjModel* m, mjData* d) {
|
|||||||
|
|
||||||
// adjust body size for flex edges involving body
|
// adjust body size for flex edges involving body
|
||||||
for (int f=0; f < m->nflex; f++) {
|
for (int f=0; f < m->nflex; f++) {
|
||||||
mjtNum meanedge = 0;
|
if (m->flex_interp[f]) {
|
||||||
for (int e=m->flex_edgeadr[f]; e < m->flex_edgeadr[f]+m->flex_edgenum[f]; e++) {
|
for (int v1=m->flex_nodeadr[f]; v1 < m->flex_nodeadr[f]+m->flex_nodenum[f]; v1++) {
|
||||||
meanedge += m->flexedge_length0[e] / m->flex_edgenum[f];
|
for (int v2=m->flex_nodeadr[f]; v2 < m->flex_nodeadr[f]+m->flex_nodenum[f]; v2++) {
|
||||||
if (m->flex_interp[f]) {
|
mjtNum edge = mju_dist3(d->xpos+3*m->flex_nodebodyid[v1],
|
||||||
continue;
|
d->xpos+3*m->flex_nodebodyid[v2]);
|
||||||
|
body[m->flex_nodebodyid[v1]] = mju_max(body[m->flex_nodebodyid[v1]], edge);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
for (int e=m->flex_edgeadr[f]; e < m->flex_edgeadr[f]+m->flex_edgenum[f]; e++) {
|
||||||
int b1 = m->flex_vertbodyid[m->flex_vertadr[f]+m->flex_edge[2*e]];
|
int b1 = m->flex_vertbodyid[m->flex_vertadr[f]+m->flex_edge[2*e]];
|
||||||
int b2 = m->flex_vertbodyid[m->flex_vertadr[f]+m->flex_edge[2*e+1]];
|
int b2 = m->flex_vertbodyid[m->flex_vertadr[f]+m->flex_edge[2*e+1]];
|
||||||
|
|
||||||
body[b1] = mju_max(body[b1], m->flexedge_length0[e]);
|
body[b1] = mju_max(body[b1], m->flexedge_length0[e]);
|
||||||
body[b2] = mju_max(body[b2], m->flexedge_length0[e]);
|
body[b2] = mju_max(body[b2], m->flexedge_length0[e]);
|
||||||
}
|
}
|
||||||
for (int v=m->flex_nodeadr[f]; v < m->flex_nodeadr[f]+m->flex_node[f]; v++) {
|
|
||||||
body[m->flex_nodebodyid[v]] = mju_max(body[m->flex_nodebodyid[v]], meanedge);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// compute meansize, make sure all sizes are above min
|
// compute meansize, make sure all sizes are above min
|
||||||
|
|||||||
Reference in New Issue
Block a user