Merge pull request #3278 from tkelestemur:tarik/mjx-light-active-public-api

PiperOrigin-RevId: 924570592
Change-Id: I86d506e9f03d3230eaaca7061f6794ecdbfe164f
This commit is contained in:
Copybara-Service
2026-06-01 02:15:20 -07:00
4 changed files with 27 additions and 2 deletions
+24
View File
@@ -113,6 +113,15 @@ _SIMPLE_BODY = """
</mujoco>
"""
_LIGHTS = """
<mujoco>
<worldbody>
<light name="inactive" active="false"/>
<light name="active" active="true"/>
</worldbody>
</mujoco>
"""
def _get_name_from_path(path: jax.tree_util.KeyPath) -> str:
"""Returns a flattened name from a jax.tree_util.KeyPath."""
@@ -203,6 +212,21 @@ class ModelIOTest(parameterized.TestCase):
np.testing.assert_equal(mx.wrap_objid, m.wrap_objid)
np.testing.assert_almost_equal(mx.wrap_prm, m.wrap_prm)
@parameterized.parameters('jax', 'warp', 'cpp')
def test_put_model_light_active(self, impl):
"""Tests that light_active is copied to the public Model field."""
if impl == 'warp' and not mjxw.WARP_INSTALLED:
self.skipTest('Warp not installed.')
m = mujoco.MjModel.from_xml_string(_LIGHTS)
mx = mjx.put_model(m, impl=impl)
self.assertIn('light_active', [f.name for f in mx.fields()])
np.testing.assert_array_equal(
np.asarray(mx.light_active),
m.light_active.astype(np.asarray(mx.light_active).dtype),
)
def test_fluid_params(self):
"""Test that has_fluid_params is set when fluid params are present."""
m = mjx.put_model(
+1
View File
@@ -747,6 +747,7 @@ class Model(PyTreeNode):
cam_intrinsic: jax.Array
light_mode: np.ndarray
light_type: jax.Array
light_active: jax.Array
light_castshadow: jax.Array
light_pos: jax.Array
light_dir: jax.Array
+2 -1
View File
@@ -152,6 +152,7 @@ def _render_jax_impl(m: types.Model, d: types.Data, ctx: RenderContextPytree):
'geom_size',
'geom_xmat',
'geom_xpos',
'light_active',
'light_castshadow',
'light_type',
'mat_rgba',
@@ -175,7 +176,7 @@ def _render_jax_impl(m: types.Model, d: types.Data, ctx: RenderContextPytree):
m.geom_rgba,
m.geom_size,
m.geom_type,
m._impl.light_active,
m.light_active,
m.light_castshadow,
m.light_type,
m.mat_rgba,
-1
View File
@@ -240,7 +240,6 @@ class ModelWarp(PyTreeNode):
is_sparse: bool
jnt_limited_ball_adr: np.ndarray
jnt_limited_slide_hinge_adr: np.ndarray
light_active: jax.Array
light_bodyid: np.ndarray
light_targetbodyid: np.ndarray
mapD2M: np.ndarray