Skip to content

Commit 82e1203

Browse files
committed
Update to mujoco 3.3.7
There are a few option & flag changes that impact the schema & thus the converter
1 parent cab3992 commit 82e1203

File tree

6 files changed

+45
-45
lines changed

6 files changed

+45
-45
lines changed

mujoco_usd_converter/_impl/scene.py

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -35,36 +35,36 @@ def convert_scene(data: ConversionData):
3535
scene.CreateGravityMagnitudeAttr().Set(gravity_vector.GetLength())
3636

3737
# Flag attributes - disable flags (default enabled = 1, disabled when bit is set)
38-
set_schema_attribute(scene_prim, "mjc:flag:actuation", not is_disabled(1 << 10, data))
39-
set_schema_attribute(scene_prim, "mjc:flag:autoreset", not is_disabled(1 << 15, data))
40-
set_schema_attribute(scene_prim, "mjc:flag:clampctrl", not is_disabled(1 << 7, data))
38+
set_schema_attribute(scene_prim, "mjc:flag:actuation", not is_disabled(1 << 11, data))
39+
set_schema_attribute(scene_prim, "mjc:flag:autoreset", not is_disabled(1 << 16, data))
40+
set_schema_attribute(scene_prim, "mjc:flag:clampctrl", not is_disabled(1 << 8, data))
4141
set_schema_attribute(scene_prim, "mjc:flag:constraint", not is_disabled(1 << 0, data))
4242
set_schema_attribute(scene_prim, "mjc:flag:contact", not is_disabled(1 << 4, data))
43+
set_schema_attribute(scene_prim, "mjc:flag:damper", not is_disabled(1 << 6, data))
4344
set_schema_attribute(scene_prim, "mjc:flag:equality", not is_disabled(1 << 1, data))
44-
set_schema_attribute(scene_prim, "mjc:flag:eulerdamp", not is_disabled(1 << 14, data))
45-
set_schema_attribute(scene_prim, "mjc:flag:filterparent", not is_disabled(1 << 9, data))
45+
set_schema_attribute(scene_prim, "mjc:flag:eulerdamp", not is_disabled(1 << 15, data))
46+
set_schema_attribute(scene_prim, "mjc:flag:filterparent", not is_disabled(1 << 10, data))
4647
set_schema_attribute(scene_prim, "mjc:flag:frictionloss", not is_disabled(1 << 2, data))
47-
set_schema_attribute(scene_prim, "mjc:flag:gravity", not is_disabled(1 << 6, data))
48+
set_schema_attribute(scene_prim, "mjc:flag:gravity", not is_disabled(1 << 7, data))
49+
set_schema_attribute(scene_prim, "mjc:flag:island", not is_disabled(1 << 18, data))
4850
set_schema_attribute(scene_prim, "mjc:flag:limit", not is_disabled(1 << 3, data))
49-
set_schema_attribute(scene_prim, "mjc:flag:midphase", not is_disabled(1 << 13, data))
50-
set_schema_attribute(scene_prim, "mjc:flag:nativeccd", not is_disabled(1 << 16, data))
51-
set_schema_attribute(scene_prim, "mjc:flag:passive", not is_disabled(1 << 5, data))
52-
set_schema_attribute(scene_prim, "mjc:flag:refsafe", not is_disabled(1 << 11, data))
53-
set_schema_attribute(scene_prim, "mjc:flag:sensor", not is_disabled(1 << 12, data))
54-
set_schema_attribute(scene_prim, "mjc:flag:warmstart", not is_disabled(1 << 8, data))
51+
set_schema_attribute(scene_prim, "mjc:flag:midphase", not is_disabled(1 << 14, data))
52+
set_schema_attribute(scene_prim, "mjc:flag:nativeccd", not is_disabled(1 << 17, data))
53+
set_schema_attribute(scene_prim, "mjc:flag:refsafe", not is_disabled(1 << 12, data))
54+
set_schema_attribute(scene_prim, "mjc:flag:sensor", not is_disabled(1 << 13, data))
55+
set_schema_attribute(scene_prim, "mjc:flag:spring", not is_disabled(1 << 5, data))
56+
set_schema_attribute(scene_prim, "mjc:flag:warmstart", not is_disabled(1 << 9, data))
5557

5658
# Flag attributes - enable flags (default disabled = 0, enabled when bit is set)
5759
set_schema_attribute(scene_prim, "mjc:flag:energy", is_enabled(1 << 1, data))
5860
set_schema_attribute(scene_prim, "mjc:flag:fwdinv", is_enabled(1 << 2, data))
5961
set_schema_attribute(scene_prim, "mjc:flag:invdiscrete", is_enabled(1 << 3, data))
60-
set_schema_attribute(scene_prim, "mjc:flag:island", is_enabled(1 << 5, data))
6162
set_schema_attribute(scene_prim, "mjc:flag:multiccd", is_enabled(1 << 4, data))
6263
set_schema_attribute(scene_prim, "mjc:flag:override", is_enabled(1 << 0, data))
6364

6465
actuator_groups = [i for i in range(31) if data.spec.option.disableactuator & (1 << i)]
6566
set_schema_attribute(scene_prim, "mjc:option:actuatorgroupdisable", Vt.IntArray(actuator_groups))
6667

67-
set_schema_attribute(scene_prim, "mjc:option:apirate", data.spec.option.apirate)
6868
set_schema_attribute(scene_prim, "mjc:option:ccd_iterations", data.spec.option.ccd_iterations)
6969
set_schema_attribute(scene_prim, "mjc:option:ccd_tolerance", data.spec.option.ccd_tolerance)
7070
set_schema_attribute(scene_prim, "mjc:option:cone", get_cone_token(data.spec.option.cone))

pyproject.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ license = {text = "Apache-2.0"}
77
readme = "README.md"
88
requires-python = ">=3.10,<3.13"
99
dependencies = [
10-
"mujoco>=3.3.5",
10+
"mujoco==3.3.7",
1111
"usd-exchange>=2.1.0a3", # locked to USD 25.05
1212
"numpy-stl>=3.2",
1313
"tinyobjloader>=2.0.0rc13",

tests/data/scene_attributes.xml

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@
55
inertiagrouprange="1 3" saveinertial="true"
66
settotalmass="10.5" usethread="false"/>
77

8-
<option timestep="0.01" apirate="50"
8+
<option timestep="0.01"
99
impratio="0.5" tolerance="1e-6"
1010
ls_tolerance="0.02" noslip_tolerance="0.00001"
1111
ccd_tolerance="0.00001"
@@ -23,16 +23,16 @@
2323
actuatorgroupdisable="1 3 5">
2424
<flag constraint="disable" equality="disable"
2525
frictionloss="disable" limit="disable"
26-
contact="disable" passive="disable"
26+
contact="disable" spring="disable" damper="disable"
2727
gravity="disable" clampctrl="disable"
2828
warmstart="disable" filterparent="disable"
2929
actuation="disable" refsafe="disable"
3030
sensor="disable" midphase="disable"
3131
eulerdamp="disable" autoreset="disable"
32-
nativeccd="disable"
32+
nativeccd="disable" island="disable"
3333
energy="enable" fwdinv="enable"
3434
invdiscrete="enable" multiccd="enable"
35-
island="enable" override="enable"/>
35+
override="enable"/>
3636
</option>
3737

3838
<worldbody>

tests/testScene.py

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,12 @@ def test_scene_attributes_non_default(self):
5151
"mjc:flag:filterparent",
5252
"mjc:flag:frictionloss",
5353
"mjc:flag:gravity",
54+
"mjc:flag:island",
5455
"mjc:flag:limit",
5556
"mjc:flag:midphase",
5657
"mjc:flag:nativeccd",
57-
"mjc:flag:passive",
58+
"mjc:flag:spring",
59+
"mjc:flag:damper",
5860
"mjc:flag:refsafe",
5961
"mjc:flag:sensor",
6062
"mjc:flag:warmstart",
@@ -69,7 +71,6 @@ def test_scene_attributes_non_default(self):
6971
"mjc:flag:energy",
7072
"mjc:flag:fwdinv",
7173
"mjc:flag:invdiscrete",
72-
"mjc:flag:island",
7374
"mjc:flag:multiccd",
7475
"mjc:flag:override",
7576
]
@@ -80,7 +81,6 @@ def test_scene_attributes_non_default(self):
8081

8182
self.assertEqual(list(scene.GetAttribute("mjc:option:actuatorgroupdisable").Get()), [1, 3, 5])
8283

83-
self.assertAlmostEqual(scene.GetAttribute("mjc:option:apirate").Get(), 50)
8484
self.assertEqual(scene.GetAttribute("mjc:option:ccd_iterations").Get(), 100)
8585
self.assertAlmostEqual(scene.GetAttribute("mjc:option:ccd_tolerance").Get(), 0.00001)
8686
self.assertEqual(scene.GetAttribute("mjc:option:cone").Get(), "elliptic")
@@ -156,10 +156,12 @@ def test_scene_default_values(self):
156156
"mjc:flag:filterparent",
157157
"mjc:flag:frictionloss",
158158
"mjc:flag:gravity",
159+
"mjc:flag:island",
159160
"mjc:flag:limit",
160161
"mjc:flag:midphase",
161162
"mjc:flag:nativeccd",
162-
"mjc:flag:passive",
163+
"mjc:flag:spring",
164+
"mjc:flag:damper",
163165
"mjc:flag:refsafe",
164166
"mjc:flag:sensor",
165167
"mjc:flag:warmstart",
@@ -173,7 +175,6 @@ def test_scene_default_values(self):
173175
"mjc:flag:energy",
174176
"mjc:flag:fwdinv",
175177
"mjc:flag:invdiscrete",
176-
"mjc:flag:island",
177178
"mjc:flag:multiccd",
178179
"mjc:flag:override",
179180
]
@@ -184,8 +185,7 @@ def test_scene_default_values(self):
184185

185186
# Test that default values are accessible via schema defaults
186187
self.assertEqual(list(scene.GetAttribute("mjc:option:actuatorgroupdisable").Get()), [])
187-
self.assertAlmostEqual(scene.GetAttribute("mjc:option:apirate").Get(), 100)
188-
self.assertEqual(scene.GetAttribute("mjc:option:ccd_iterations").Get(), 50)
188+
self.assertEqual(scene.GetAttribute("mjc:option:ccd_iterations").Get(), 35)
189189
self.assertAlmostEqual(scene.GetAttribute("mjc:option:ccd_tolerance").Get(), 0.000001)
190190
self.assertEqual(scene.GetAttribute("mjc:option:cone").Get(), "pyramidal")
191191
self.assertAlmostEqual(scene.GetAttribute("mjc:option:density").Get(), 0)

tools/install_mjc_schema.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ def initialize(self, version, build_data):
2727

2828
def download_schema_files(self):
2929
"""Download the MJC schema files from GitHub"""
30-
schema_url = "https://raw.githubusercontent.com/google-deepmind/mujoco/refs/tags/3.3.5/src/experimental/usd/mjcPhysics"
30+
schema_url = "https://raw.githubusercontent.com/google-deepmind/mujoco/refs/tags/3.3.7/src/experimental/usd/mjcPhysics"
3131
for url, target_path in (
3232
(f"{schema_url}/generatedSchema.usda", self.target_dir / "generatedSchema.usda"),
3333
(f"{schema_url}/plugInfo.json", self.target_dir / "plugInfo.json"),

uv.lock

Lines changed: 18 additions & 18 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)