39 lines
1.3 KiB
Python
39 lines
1.3 KiB
Python
import unittest
|
|
|
|
import numpy as np
|
|
|
|
from hippolyzer.lib.base.mesh_skeleton import load_avatar_skeleton
|
|
|
|
|
|
class TestSkeleton(unittest.TestCase):
|
|
@classmethod
|
|
def setUpClass(cls) -> None:
|
|
cls.skeleton = load_avatar_skeleton()
|
|
|
|
def test_get_joint(self):
|
|
node = self.skeleton["mNeck"]
|
|
self.assertEqual("mNeck", node.name)
|
|
self.assertEqual(self.skeleton, node.skeleton())
|
|
|
|
def test_get_joint_index(self):
|
|
self.assertEqual(7, self.skeleton["mNeck"].index)
|
|
self.assertEqual(113, self.skeleton["mKneeLeft"].index)
|
|
|
|
def test_get_joint_parent(self):
|
|
self.assertEqual("mChest", self.skeleton["mNeck"].parent.name)
|
|
|
|
def test_get_joint_matrix(self):
|
|
expected_mat = np.array([
|
|
[1., 0., 0., -0.01],
|
|
[0., 1., 0., 0.],
|
|
[0., 0., 1., 0.251],
|
|
[0., 0., 0., 1.]
|
|
])
|
|
np.testing.assert_equal(expected_mat, self.skeleton["mNeck"].matrix)
|
|
|
|
def test_get_inverse_joint(self):
|
|
self.assertEqual("R_CLAVICLE", self.skeleton["L_CLAVICLE"].inverse.name)
|
|
self.assertEqual(None, self.skeleton["mChest"].inverse)
|
|
self.assertEqual("mHandMiddle1Right", self.skeleton["mHandMiddle1Left"].inverse.name)
|
|
self.assertEqual("RIGHT_HANDLE", self.skeleton["LEFT_HANDLE"].inverse.name)
|