def test_namespace(self): test_joints = [self.create_joint(position=(i, i, i)) for i in range(5)] self.create_namespace('foo') dup_root = skeletonutils.duplicate_skeleton(test_joints[0], dup_namespace='foo') expected = [x.nodeName(stripNamespace=True) for x in skeletonutils.get_hierarchy_from_root(test_joints[0])] result = [x.nodeName(stripNamespace=True) for x in skeletonutils.get_hierarchy_from_root(dup_root)] self.assertListEqual(expected, result) self.assertEqual('foo', dup_root.parentNamespace())
def test_parent(self): test_joints = [self.create_joint(position=(i, i, i)) for i in range(5)] parent_node = self.create_transform_node() dup_root = skeletonutils.duplicate_skeleton(test_joints[0], dup_parent=parent_node) expected = [x.nodeName() for x in skeletonutils.get_hierarchy_from_root(test_joints[0])] result = [x.nodeName() for x in skeletonutils.get_hierarchy_from_root(dup_root)] self.assertListEqual(expected, result) self.assertEqual(parent_node, dup_root.getParent())
def test_dup_namespace(self): test_cube, test_joints, test_skincluster = self.create_skinned_cube() pm.namespace(set=':') self.create_namespace('foo') dup_cube, dup_root, dup_cluster = skinutils.duplicate_skinned_mesh_and_skeleton( test_cube, dup_namespace='foo') self.scene_nodes.extend([dup_cube, dup_root, dup_cluster]) expected_joint_names = [ x.nodeName(stripNamespace=True) for x in skelutils.get_hierarchy_from_root(test_joints[0]) ] result_joint_names = [ x.nodeName(stripNamespace=True) for x in skelutils.get_hierarchy_from_root(dup_root) ] self.assertListEqual(expected_joint_names, result_joint_names) self.assertNotEqual(test_joints, dup_cluster.influenceObjects()) self.assertNotEqual(test_cube, dup_cube) self.assertEqual('foo', dup_root.parentNamespace())
def duplicate_skinned_mesh_and_skeleton(skinned_mesh, dup_namespace=None, copy_skinning=True, bind_method=bind_mesh_to_joints, dup_parent=None): skin_cluster = get_skincluster(skinned_mesh) source_influences = skin_cluster.influenceObjects() source_skeleton_root = skelutils.get_root_joint_from_child(source_influences[0]) if dup_namespace: nsutils.add_namespace_to_root(dup_namespace) dup_root = skelutils.duplicate_skeleton(source_skeleton_root, dup_namespace=dup_namespace, dup_parent=dup_parent) dup_skel = skelutils.get_hierarchy_from_root(dup_root, joints_only=True) dup_mesh, dup_cluster = duplicate_skinned_mesh_to_influences(skinned_mesh, dup_skel, copy_skinning=copy_skinning, bind_method=bind_method, dup_namespace=dup_namespace, dup_parent=dup_parent) return dup_mesh, dup_root, dup_cluster
def test_default_params(self): test_joints = [self.create_joint(position=(i, i, i)) for i in range(5)] dummy_cube = self.create_cube() dummy_cube2 = self.create_cube() dummy_cube3 = self.create_cube() con = pm.parentConstraint(dummy_cube, test_joints[0]) dummy_cube2.setParent(test_joints[1]) dummy_cube3.setParent(test_joints[2]) test_joints[4].setParent(dummy_cube3) expected = test_joints[0].getChildren(allDescendents=True, type='transform') expected.append(test_joints[0]) expected.reverse() result = skeletonutils.get_hierarchy_from_root(test_joints[0]) self.assertListEqual(expected, result)
def test_duplicates_skeleton(self): test_joints = [self.create_joint(position=(i, i, i)) for i in range(5)] dup_root = skeletonutils.duplicate_skeleton(test_joints[0]) expected = [x.nodeName() for x in skeletonutils.get_hierarchy_from_root(test_joints[0])[1:]] result = [x.nodeName() for x in skeletonutils.get_hierarchy_from_root(dup_root)[1:]] self.assertListEqual(expected, result)