-
Notifications
You must be signed in to change notification settings - Fork 0
/
MyTools-RndrSetupTool.ms
216 lines (195 loc) · 6.39 KB
/
MyTools-RndrSetupTool.ms
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
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
/*HeaderStart*******************************************************
:Created By: Jan Janás
:Company: INSOMNIA production s.r.o.
:Site: http://JokerMartini.com
:Email: jan.janas@insopro.cz
:Purpose:
Allows the control of the camera rig setup.
Gets a reference from the object as starting point.
:History:
V:0.00.01A 18/4/2023
Getting started.
:Todo:
:Bugs:
:Tests:
*******************************************************HeaderEnd*/
--Destroy the dialog if it is open. This is here for testing purposes.
try(destroyDialog RndrSetupTool.instUI;RndrSetupTool.instUI=undefined)catch()
--Structure containing the tool
struct RndrSetupTool
(
RndrSetupRoll=undefined,
camHeight = $Controller_circle_center.position[3],
camRadius = $Controller_circle_center.radius,
camAngle = (custAttributes.get $Controller_circle_above 1)[1].value,
detailRadius = $Controller_arc_detail.radius,
detailHeight = $Controller_arc_detail.position[3],
cams = #(),
camIndex = 1,
fn doSomething=
(
print "Do Something"
),
fn getCams =
(
select cameras
deselect $*target
RndrSetupTool.cams = $selection as array
cam = getActiveCamera()
if cam!=undefined do (
for i in 1 to cams.count do (
if cams[i] == cam do (
RndrSetupTool.camIndex = i
)
)
)
),
fn rotateBalls =
(
actionMan.executeAction 0 "40247" -- Views: Select Viewport Node
cam = $
deselect
balls = $refBalls_helper
if balls.rotation.controller.getNode(1)!=undefined do (
balls.rotation.controller.deleteTarget (1)
)
balls.rotation.controller.appendTarget cam 100
),
fn menu=
(
rcMenu myMenu
(
menuItem closeMnu "Close"
menuItem testMnu "Test"
on closeMnu picked do RndrSetupTool.run()
on testMnu picked do RndrSetupTool.doSomething()
)
),
fn ui=
(
rollout RndrSetupRoll "RndrSetupTool"
(
spinner camArrayAngle "CamAngle:" range:[20,40,camAngle] type:#integer toolTip:"Camera angle in degrees"
on camArrayAngle changed camAngle do (
(custAttributes.get $Controller_circle_above 1)[1].value = camAngle
(custAttributes.get $Controller_circle_below 1)[1].value = -camAngle
)
spinner camArrayRadius "CamRadius:" range:[0,99999,camRadius] type:#float toolTip:"Camera array radius in centimeters"
on camArrayRadius changed camRadius do (
$Controller_circle_center.radius = camRadius
)
spinner camArrayHeight "CamHeight:" range:[0,99999,camHeight] type:#float toolTip:"Camera array height in centimeters"
on camArrayHeight changed camHeight do (
$Controller_circle_center.position = [0,0,camHeight]
)
spinner camDetailRadius "DetailRadius:" range:[0,99999,detailRadius] type:#float toolTip:"Camera detail radius in centimeters"
on camDetailRadius changed detailRadius do (
$Controller_arc_detail.radius = detailRadius
)
spinner camDetailHeight "DetailHeight:" range:[0,99999,detailHeight] type:#float toolTip:"Camera detail height in centimeters"
on camDetailHeight changed detailHeight do (
$Controller_arc_detail.position = [0,0,detailHeight]
)
button BtnGetRef "getRefObj" across:2 tooltip:"Get reference parameters from selected object"
edittext refName "" readOnly:true
button BtnSetRef "setRefObj" across:3 align:#left enabled:false tooltip:"Set referenced parameters from selected object"
on BtnGetRef pressed do (
refObj = pickObject()
print (refObj.name+" selected as reference object")
refName.text = refObj.name
ctrlRef = $Controller_circle_ref
ctrlRef[#transform][#position][#z_position].controller.setNode "object" refObj
ctrlRef[#transform][#position][#z_position].controller.update()
ctrlRef[#Object__Circle][#radius].controller.setNode "object" refObj
ctrlRef[#Object__Circle][#radius].controller.update()
BtnSetRef.enabled = true
)
on BtnSetRef pressed do (
camArrayRadius.value = $Controller_circle_ref.radius
$Controller_circle_center.radius = $Controller_circle_ref.radius
camArrayHeight.value = $Controller_circle_ref.position[3]
$Controller_circle_center.position = $Controller_circle_ref.position
)
button BtnPrev "<" offset: [25,0] tooltip:"Switch to previous camera"
button BtnNext ">" offset: [5,0]tooltip:"Switch to next camera"
on BtnPrev pressed do (
RndrSetupTool.camIndex-=1
if RndrSetupTool.camIndex < 1 do (
RndrSetupTool.camIndex = RndrSetupTool.cams.count
)
prev = RndrSetupTool.cams[RndrSetupTool.camIndex]
viewport.setCamera prev
try (RndrSetupTool.rotateBalls())catch()
)
on BtnNext pressed do (
RndrSetupTool.camIndex+=1
if RndrSetupTool.camIndex > RndrSetupTool.cams.count do (
RndrSetupTool.camIndex = 1
)
next = RndrSetupTool.cams[RndrSetupTool.camIndex]
viewport.setCamera next
try (RndrSetupTool.rotateBalls())catch()
)
on RndrSetupRoll close do
(
RndrSetupTool.RndrSetupRoll=undefined
)
)
),
fn run=
(
if RndrSetupRoll==undefined then
(
ui()
getCams()
createDialog RndrSetupRoll --menu:(menu())
)else
(
destroyDialog RndrSetupRoll
RndrSetupRoll=undefined
)
),
/*CommentStart*******************************************************
This is here so that other tools can retreive the rollouts from this tool and display
them in another UI
*******************************************************CommentEnd*/
fn getRollouts=(#(ui())),
/*CommentStart*******************************************************
MacroScript definition
Will not work if you are encrypting your scripts
*******************************************************CommentEnd*/
macro=
(
macroScript RndrSetupToolMacro
category: "MyTools"
buttonText: "RndrSetupTool"
(
on execute do
(
if RndrSetupTool!=undefined do
(
RndrSetupTool.run()
)
)
)
)
)
RndrSetupTool=RndrSetupTool()
RndrSetupTool.run() --Just here for testing.
/* Print all subanims
(
fn printAllSubanims pObj pDepth:0 = (
for i in 1 to pObj.numSubs do (
spaces =""
for j in 1 to pDepth do spaces += " "
print (spaces + (getSubAnimName pObj i asString:False))
printAllSubanims pObj[i] pDepth:(pDepth+1)
)
)
if selection[1] != undefined then (
printAllSubanims selection[1] pDepth:1
)else(
print "no objects selected!"
)
)
*/