1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
|
import unittest
import maya.cmds as cmds
import artv2.components.base_components.rig_asset as rig_asset
import artv2.components.root as root
import artv2.components.camera as camera
def format_position(pos):
return [float("{0:.3f}".format(pos[0])), float("{0:.3f}".format(pos[1])), float("{0:.3f}".format(pos[2]))]
class Camera_Component_Tests(unittest.TestCase):
"""
Class containing tests for camera component creation and manipulation.
"""
def _create_asset(self):
new_asset = rig_asset.RigAsset()
self.assertEquals(new_asset.name, "asset")
self.assertEquals(new_asset.network_node, "asset_metadata")
return new_asset
def _create_camera_inst(self):
root.Root()
inst = camera.Camera()
inst.parent = "root"
return inst
def test_create_camera(self):
self._create_asset()
jnt_inst = self._create_camera_inst()
self.assertEquals(len(jnt_inst.joint_mover.get_created_joints()), 3)
def test_delete_camera(self):
self._create_asset()
jnt_inst = self._create_camera_inst()
component_containers = jnt_inst.joint_mover.get_containers()
guide_nodes = component_containers[1].getNodeList()
utility_nodes = component_containers[2].getNodeList()
jnt_inst.delete()
self.assertFalse(cmds.objExists("camera_metadata"))
for each in guide_nodes:
self.assertFalse(cmds.objExists(each.nodeName()))
for each in utility_nodes:
self.assertFalse(cmds.objExists(each.nodeName()))
def test_bake_offsets(self):
self._create_asset()
jnt_inst = self._create_camera_inst()
cmds.setAttr("camera_camera_main_mover_offset.translateY", 60)
pre_offset_position = format_position(cmds.xform("camera_camera_main_mover_offset", q=True, ws=True, t=True))
pre_main_position = format_position(cmds.xform("camera_camera_main_mover", q=True, ws=True, t=True))
self.assertNotEquals(pre_main_position, pre_offset_position)
jnt_inst.joint_mover.bake_offsets()
post_offset_position = format_position(cmds.xform("camera_camera_main_mover_offset", q=True, ws=True, t=True))
post_main_position = format_position(cmds.xform("camera_camera_main_mover", q=True, ws=True, t=True))
self.assertEquals(post_main_position, post_offset_position)
def test_duplicate(self):
self._create_asset()
jnt_inst = self._create_camera_inst()
cmds.setAttr("camera_camera_root_mover.translateZ", 65)
cmds.setAttr("camera_camera_root_mover.rotateX", 20)
cmds.setAttr("camera_camera_root_mover.rotateY", -20)
cmds.setAttr("camera_camera_root_mover.rotateZ", 42)
cmds.setAttr("camera_camera_root_mover.scaleX", 2)
cmds.setAttr("camera_camera_root_mover.scaleY", 2)
cmds.setAttr("camera_camera_root_mover.scaleZ", 2)
duplicate_inst = jnt_inst.duplicate()
self.assertEquals(duplicate_inst.parent, "root")
self.assertEquals(cmds.getAttr("camera_01_camera_root_mover.tz"), cmds.getAttr("camera_camera_root_mover.tz"))
self.assertEquals(cmds.getAttr("camera_01_camera_root_mover.rx"), cmds.getAttr("camera_camera_root_mover.rx"))
self.assertEquals(cmds.getAttr("camera_01_camera_root_mover.ry"), cmds.getAttr("camera_camera_root_mover.ry"))
self.assertEquals(cmds.getAttr("camera_01_camera_root_mover.rz"), cmds.getAttr("camera_camera_root_mover.rz"))
self.assertEquals(cmds.getAttr("camera_01_camera_root_mover.sx"), cmds.getAttr("camera_camera_root_mover.sx"))
self.assertEquals(cmds.getAttr("camera_01_camera_root_mover.sy"), cmds.getAttr("camera_camera_root_mover.sy"))
self.assertEquals(cmds.getAttr("camera_01_camera_root_mover.sz"), cmds.getAttr("camera_camera_root_mover.sz"))
dupe2 = jnt_inst.duplicate()
dupe3 = jnt_inst.duplicate()
self.assertEquals(dupe2.suffix, "_02")
self.assertEquals(dupe3.suffix, "_03")
def test_pin_component(self):
self._create_asset()
jnt_inst = self._create_camera_inst()
pre_position = format_position(cmds.xform("camera_camera_root_mover", q=True, ws=True, t=True))
jnt_inst.joint_mover.toggle_pin_component()
self.assertTrue(jnt_inst.network_node.pinned.get())
cmds.setAttr("master_root_mover.translateX", 100)
post_position = format_position(cmds.xform("camera_camera_root_mover", q=True, ws=True, t=True))
self.assertEquals(pre_position, post_position)
jnt_inst.joint_mover.toggle_pin_component()
cmds.setAttr("master_root_mover.translateX", 0)
new_position = format_position(cmds.xform("camera_camera_root_mover", q=True, ws=True, t=True))
self.assertNotEquals(post_position, new_position)
|