Add visualisation groups to skins.
PiperOrigin-RevId: 458441645 Change-Id: I14324e8efda5142b2718a5cc9215228c7556dbf7
This commit is contained in:
committed by
Copybara-Service
parent
040deb161f
commit
2d0995b47c
Vendored
+44
@@ -0,0 +1,44 @@
|
||||
<mujoco>
|
||||
<asset>
|
||||
<skin name="skin" rgba="1 0 1 1" inflate="0.01"
|
||||
vertex="
|
||||
-.5 -.5 -.5
|
||||
.5 -.5 -.5
|
||||
-.5 .5 -.5
|
||||
.5 .5 -.5
|
||||
-.5 -.5 .5
|
||||
.5 -.5 .5
|
||||
-.5 .5 .5
|
||||
.5 .5 .5"
|
||||
texcoord=".1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1 .1"
|
||||
face="0 1 4 4 1 5 5 1 3 5 3 7 7 3 2 7 2 6 6 2 0 6 0 4 4 5 7 4 7 6">
|
||||
<bone body="box" bindpos="0 0 .5" bindquat="1 0 0 0" vertid="4 5 6 7" vertweight="1 1 1 1"/>
|
||||
<bone body="world" bindpos="0 0 -.5" bindquat="1 0 0 0" vertid="0 1 2 3" vertweight="1 1 1 1"/>
|
||||
</skin>
|
||||
</asset>
|
||||
|
||||
|
||||
<worldbody>
|
||||
<geom type="plane" size="2 2 .01"/>
|
||||
<light pos="0 1 3" dir="0 -1 -2"/>
|
||||
<light pos="0 -1 3" dir="0 1 -2"/>
|
||||
<body name="box" pos="0 0 .9">
|
||||
<joint limited="true" range="-45 45"/>
|
||||
<geom type="box" size=".5 .5 .1"/>
|
||||
</body>
|
||||
<body pos="1 -1 .6">
|
||||
<freejoint/>
|
||||
<composite prefix="B0" type="box" count="4 4 4" spacing=".2">
|
||||
<geom group="4" size=".1"/>
|
||||
<skin rgba="1 1 0 1" group="2"/>
|
||||
</composite>
|
||||
</body>
|
||||
<body pos="-1 1 .6">
|
||||
<freejoint/>
|
||||
<composite prefix="B1" type="box" count="4 4 4" spacing=".2">
|
||||
<geom group="2" size=".1"/>
|
||||
<skin rgba="0 1 1 1" group="4"/>
|
||||
</composite>
|
||||
</body>
|
||||
</worldbody>
|
||||
</mujoco>
|
||||
@@ -379,6 +379,57 @@ TEST_F(UserDataTest, PositiveControlRange) {
|
||||
EXPECT_THAT(error.data(), HasSubstr("control range cannot be negative"));
|
||||
}
|
||||
|
||||
TEST_F(UserDataTest, ReadsSkinGroups) {
|
||||
static constexpr char xml[] = R"(
|
||||
<mujoco>
|
||||
<worldbody>
|
||||
<body>
|
||||
<composite prefix="B0" type="box" count="4 4 4" spacing=".2">
|
||||
<geom size=".1" group="2"/>
|
||||
<skin group="4"/>
|
||||
</composite>
|
||||
</body>
|
||||
<body>
|
||||
<composite prefix="B1" type="box" count="4 4 4" spacing=".2">
|
||||
<geom size=".1" group="4"/>
|
||||
<skin group="2"/>
|
||||
</composite>
|
||||
</body>
|
||||
</worldbody>
|
||||
</mujoco>
|
||||
)";
|
||||
std::array<char, 1024> error;
|
||||
mjModel* model = LoadModelFromString(xml, error.data(), error.size());
|
||||
ASSERT_THAT(model, NotNull());
|
||||
int geomid1 = mj_name2id(model, mjOBJ_GEOM, "B0G0_0_0");
|
||||
int geomid2 = mj_name2id(model, mjOBJ_GEOM, "B1G0_0_0");
|
||||
EXPECT_THAT(model->geom_group[geomid1], 2);
|
||||
EXPECT_THAT(model->skin_group[0], 4);
|
||||
EXPECT_THAT(model->geom_group[geomid2], 4);
|
||||
EXPECT_THAT(model->skin_group[1], 2);
|
||||
mj_deleteModel(model);
|
||||
}
|
||||
|
||||
TEST_F(UserDataTest, InvalidSkinGroup) {
|
||||
static constexpr char xml[] = R"(
|
||||
<mujoco>
|
||||
<worldbody>
|
||||
<body>
|
||||
<composite prefix="B0" type="box" count="6 6 6" spacing=".2">
|
||||
<geom size=".1"/>
|
||||
<skin group="6"/>
|
||||
</composite>
|
||||
</body>
|
||||
</worldbody>
|
||||
</mujoco>
|
||||
)";
|
||||
std::array<char, 1024> error;
|
||||
mjModel* model = LoadModelFromString(xml, error.data(), error.size());
|
||||
ASSERT_THAT(model, IsNull());
|
||||
EXPECT_THAT(error.data(), HasSubstr("skin group must be between 0 and 5\nElement 'skin', line 7"));
|
||||
mj_deleteModel(model);
|
||||
}
|
||||
|
||||
// ------------- test relative frame sensor parsing ----------------------------
|
||||
|
||||
using RelativeFrameSensorParsingTest = MujocoTest;
|
||||
|
||||
Reference in New Issue
Block a user