Enable multiccd by default.
PiperOrigin-RevId: 902752921 Change-Id: I8e2085ff17db0ac0db1641b8837415c458e5eca4
This commit is contained in:
committed by
Copybara-Service
parent
8e7787ad09
commit
6cb6e5a93f
@@ -828,7 +828,7 @@ static int maxContacts(const mjModel* m, const mjCCDObj* obj1, const mjCCDObj* o
|
||||
// reduce mesh collisions to 4 contacts max
|
||||
if (type1 == mjGEOM_BOX || type1 == mjGEOM_MESH) {
|
||||
if (type2 == mjGEOM_BOX || type2 == mjGEOM_MESH) {
|
||||
return mjENABLED(mjENBL_MULTICCD) ? 4 : 1;
|
||||
return mjDISABLED(mjDSBL_MULTICCD) ? 1 : 4;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -857,7 +857,7 @@ int mjc_Convex(const mjModel* m, mjData* d, mjContact* con, int g1, int g2, mjtN
|
||||
}
|
||||
|
||||
// look for additional contacts
|
||||
if (ncon == 1 && mjENABLED(mjENBL_MULTICCD) // TODO(tassa) leave as bitflag or make geom attribute (?)
|
||||
if (ncon == 1 && !mjDISABLED(mjDSBL_MULTICCD) // TODO(tassa) leave as bitflag or make geom attribute (?)
|
||||
&& m->geom_type[g1] != mjGEOM_ELLIPSOID && m->geom_type[g1] != mjGEOM_SPHERE
|
||||
&& m->geom_type[g2] != mjGEOM_ELLIPSOID && m->geom_type[g2] != mjGEOM_SPHERE) {
|
||||
// multiCCD parameters
|
||||
|
||||
@@ -66,7 +66,8 @@ const char* mjDISABLESTRING[mjNDISABLE] = {
|
||||
"Eulerdamp",
|
||||
"AutoReset",
|
||||
"NativeCCD",
|
||||
"Island"
|
||||
"Island",
|
||||
"MultiCCD"
|
||||
};
|
||||
|
||||
|
||||
@@ -76,7 +77,6 @@ const char* mjENABLESTRING[mjNENABLE] = {
|
||||
"Energy",
|
||||
"Fwdinv",
|
||||
"InvDiscrete",
|
||||
"MultiCCD",
|
||||
"Sleep"
|
||||
};
|
||||
|
||||
|
||||
@@ -649,7 +649,6 @@ class ModelWriter {
|
||||
};
|
||||
|
||||
const std::vector<std::pair<pxr::TfToken, int>> enable_flags = {
|
||||
{MjcPhysicsTokens->mjcFlagMulticcd, mjENBL_MULTICCD},
|
||||
{MjcPhysicsTokens->mjcFlagFwdinv, mjENBL_FWDINV},
|
||||
{MjcPhysicsTokens->mjcFlagEnergy, mjENBL_ENERGY},
|
||||
{MjcPhysicsTokens->mjcFlagOverride, mjENBL_OVERRIDE},
|
||||
@@ -677,7 +676,8 @@ class ModelWriter {
|
||||
{MjcPhysicsTokens->mjcFlagEulerdamp, mjDSBL_EULERDAMP},
|
||||
{MjcPhysicsTokens->mjcFlagAutoreset, mjDSBL_AUTORESET},
|
||||
{MjcPhysicsTokens->mjcFlagNativeccd, mjDSBL_NATIVECCD},
|
||||
{MjcPhysicsTokens->mjcFlagIsland, mjDSBL_ISLAND}};
|
||||
{MjcPhysicsTokens->mjcFlagIsland, mjDSBL_ISLAND},
|
||||
{MjcPhysicsTokens->mjcFlagMulticcd, mjDSBL_MULTICCD}};
|
||||
for (const auto &[token, flag] : disable_flags) {
|
||||
create_flag_attr(token, flag, false);
|
||||
}
|
||||
|
||||
@@ -1284,6 +1284,7 @@ void mjXReader::Option(XMLElement* section, mjOption* opt) {
|
||||
READDSBL("autoreset", mjDSBL_AUTORESET)
|
||||
READDSBL("nativeccd", mjDSBL_NATIVECCD)
|
||||
READDSBL("island", mjDSBL_ISLAND)
|
||||
READDSBL("multiccd", mjDSBL_MULTICCD)
|
||||
#undef READDSBL
|
||||
|
||||
#define READENBL(NAME, MASK) \
|
||||
@@ -1295,7 +1296,6 @@ void mjXReader::Option(XMLElement* section, mjOption* opt) {
|
||||
READENBL("energy", mjENBL_ENERGY)
|
||||
READENBL("fwdinv", mjENBL_FWDINV)
|
||||
READENBL("invdiscrete", mjENBL_INVDISCRETE)
|
||||
READENBL("multiccd", mjENBL_MULTICCD)
|
||||
READENBL("sleep", mjENBL_SLEEP)
|
||||
#undef READENBL
|
||||
}
|
||||
|
||||
@@ -1093,7 +1093,7 @@ void mjXWriter::Option(XMLElement* root) {
|
||||
XMLElement* sub = InsertEnd(section, "flag");
|
||||
|
||||
#define WRITEDSBL(NAME, MASK) \
|
||||
if( model->option.disableflags & MASK ) \
|
||||
if (model->option.disableflags & MASK) \
|
||||
WriteAttrKey(sub, NAME, enable_map, 2, 0);
|
||||
WRITEDSBL("constraint", mjDSBL_CONSTRAINT)
|
||||
WRITEDSBL("equality", mjDSBL_EQUALITY)
|
||||
@@ -1114,16 +1114,16 @@ void mjXWriter::Option(XMLElement* root) {
|
||||
WRITEDSBL("autoreset", mjDSBL_AUTORESET)
|
||||
WRITEDSBL("nativeccd", mjDSBL_NATIVECCD)
|
||||
WRITEDSBL("island", mjDSBL_ISLAND)
|
||||
WRITEDSBL("multiccd", mjDSBL_MULTICCD)
|
||||
#undef WRITEDSBL
|
||||
|
||||
#define WRITEENBL(NAME, MASK) \
|
||||
if( model->option.enableflags & MASK ) \
|
||||
if (model->option.enableflags & MASK) \
|
||||
WriteAttrKey(sub, NAME, enable_map, 2, 1);
|
||||
WRITEENBL("override", mjENBL_OVERRIDE)
|
||||
WRITEENBL("energy", mjENBL_ENERGY)
|
||||
WRITEENBL("fwdinv", mjENBL_FWDINV)
|
||||
WRITEENBL("invdiscrete", mjENBL_INVDISCRETE)
|
||||
WRITEENBL("multiccd", mjENBL_MULTICCD)
|
||||
WRITEENBL("sleep", mjENBL_SLEEP)
|
||||
#undef WRITEENBL
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user