aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--generat3d/scene.py2
-rw-r--r--tests/test_scene.py6
2 files changed, 8 insertions, 0 deletions
diff --git a/generat3d/scene.py b/generat3d/scene.py
index 28dc00c..cccfcff 100644
--- a/generat3d/scene.py
+++ b/generat3d/scene.py
@@ -126,6 +126,7 @@ class _Loader:
self.pending = []
self.figure = self._figure(*figs[0])
self.ids = {n.id for n in self.figure.nodes} | {n.name for n in self.figure.nodes}
+ self.name2id = {n.name: n.id for n in self.figure.nodes}
for f, source in self.pending:
self._formula(f, source)
self._morphs(figs[0][1])
@@ -168,6 +169,7 @@ class _Loader:
node, _, ident, channel = parse_url(url)
if node not in self.ids or node == self.figure.name:
node = self.figure.id
+ node = self.name2id.get(node, node)
return key(node, ident, channel)
def _formula(self, f, source):
diff --git a/tests/test_scene.py b/tests/test_scene.py
index 056f3e1..0d2e3c9 100644
--- a/tests/test_scene.py
+++ b/tests/test_scene.py
@@ -265,3 +265,9 @@ class SceneTest(unittest.TestCase):
def test_bad_vertices(self):
with self.assertRaisesRegex(Error, "bad vertices"):
self.fig2(verts=[[0, 0], [1, 0], [0, 1]])
+
+ def test_bone_name_mapped_to_id(self):
+ scene, _ = self.fig2(hip_extra={"name": "Hip", "formulas": [{
+ "output": "Hip:/data/Test/Fig2/Fig2.dsf#hip?center_point/y",
+ "operations": [{"op": "push", "val": 1}]}]})
+ self.assertEqual(len(scene.graph.formulas["hip:hip?center_point/y"]), 1)