Add mjContact.solreffriction, mjModel.pair_solreffriction and related implementation, allowing contact reference acceleration to be different for normal and frictional contact directions. This is required for e.g. elastic frictional collisions.
PiperOrigin-RevId: 538513357 Change-Id: Id9eb910fe791cf898c712030cb2c0fc481389c91
This commit is contained in:
committed by
Copybara-Service
parent
83e70954d7
commit
d82f5ce5a4
@@ -1871,6 +1871,7 @@ void mjCModel::CopyObjects(mjModel* m) {
|
||||
m->pair_geom2[i] = pairs[i]->geom2;
|
||||
m->pair_signature[i] = pairs[i]->signature;
|
||||
copyvec(m->pair_solref+mjNREF*i, pairs[i]->solref, mjNREF);
|
||||
copyvec(m->pair_solreffriction+mjNREF*i, pairs[i]->solreffriction, mjNREF);
|
||||
copyvec(m->pair_solimp+mjNIMP*i, pairs[i]->solimp, mjNIMP);
|
||||
m->pair_margin[i] = (mjtNum)pairs[i]->margin;
|
||||
m->pair_gap[i] = (mjtNum)pairs[i]->gap;
|
||||
@@ -3037,6 +3038,7 @@ bool mjCModel::CopyBack(const mjModel* m) {
|
||||
// pairs
|
||||
for (int i=0; i<npair; i++) {
|
||||
copyvec(pairs[i]->solref, m->pair_solref+mjNREF*i, mjNREF);
|
||||
copyvec(pairs[i]->solreffriction, m->pair_solreffriction+mjNREF*i, mjNREF);
|
||||
copyvec(pairs[i]->solimp, m->pair_solimp+mjNIMP*i, mjNIMP);
|
||||
pairs[i]->margin = (double)m->pair_margin[i];
|
||||
pairs[i]->gap = (double)m->pair_gap[i];
|
||||
|
||||
Reference in New Issue
Block a user