sun_position: fix warning from deleted prop in User Preferences
[blender-addons.git] / add_camera_rigs / create_widgets.py
blobf19fc206e9b0e744a37163e1ba55563b8bd5f4b2
1 import bpy
4 def create_widget(name):
5 """Create an empty widget object and return the object"""
6 prefs = bpy.context.preferences.addons["add_camera_rigs"].preferences
7 widget_prefix = prefs.widget_prefix
8 obj_name = widget_prefix + name
9 scene = bpy.context.scene
11 obj = bpy.data.objects.get(obj_name)
13 if obj is None:
14 mesh = bpy.data.meshes.new(obj_name)
15 obj = bpy.data.objects.new(obj_name, mesh)
17 # Create a new collection for the widgets
18 collection_name = prefs.camera_widget_collection_name
19 coll = bpy.data.collections.get(collection_name)
20 if coll is None:
21 coll = bpy.data.collections.new(collection_name)
22 scene.collection.children.link(coll)
23 coll.hide_viewport = True
24 coll.hide_render = True
26 # Link the collection
27 coll.objects.link(obj)
29 return obj
32 def create_root_widget(name):
33 """Create a compass-shaped widget"""
34 obj = create_widget(name)
35 if not obj.data.vertices:
36 verts = [(0.6307649612426758, 0.6271349787712097, 0.0),
37 (0.3413670063018799, 0.8205029964447021, 0.0),
38 (0.0, 0.8884050250053406, 0.0),
39 (-0.3413670063018799, 0.8205029964447021, 0.0),
40 (-0.6307649612426758, 0.6271349787712097, 0.0),
41 (-0.8241360187530518, 0.3377370238304138, 0.0),
42 (-0.8920379877090454, -0.003631560131907463, 0.0),
43 (0.8920379877090454, -0.003631379920989275, 0.0),
44 (0.824133038520813, 0.3377370238304138, 0.0),
45 (0.21458700299263, 1.5175920724868774, 0.0),
46 (-0.21458669006824493, 1.5175920724868774, 0.0),
47 (-0.21458700299263, 1.1372729539871216, 0.0),
48 (0.21458700299263, 1.1372729539871216, 0.0),
49 (-0.3977609872817993, 1.5175920724868774, 0.0),
50 (0.3977609872817993, 1.5175920724868774, 0.0),
51 (0.0, 2.002802848815918, 0.0),
52 (-0.8241360187530518, -0.3449999988079071, 0.0),
53 (0.8241360187530518, -0.3449999988079071, 0.0),
54 (0.6307649612426758, -0.6343979835510254, 0.0),
55 (0.3413670063018799, -0.8277660012245178, 0.0),
56 (0.0, -0.8956680297851562, 0.0),
57 (-0.3413670063018799, -0.8277660012245178, 0.0),
58 (-0.6307649612426758, -0.6343979835510254, 0.0),
59 (-2.0064330101013184, -0.003630870021879673, 0.0),
60 (-1.5212249755859375, 0.39413100481033325, 0.0),
61 (-1.5212249755859375, -0.4013940095901489, 0.0),
62 (-1.1409029960632324, 0.21095609664916992, 0.0),
63 (-1.1409029960632324, -0.2182179093360901, 0.0),
64 (-1.5212249755859375, -0.2182179093360901, 0.0),
65 (-1.5212249755859375, 0.21095609664916992, 0.0),
66 (1.5212249755859375, -0.2182179093360901, 0.0),
67 (1.5212249755859375, 0.21095609664916992, 0.0),
68 (1.1409029960632324, 0.21095609664916992, 0.0),
69 (1.1409029960632324, -0.2182179093360901, 0.0),
70 (1.5212249755859375, 0.39413100481033325, 0.0),
71 (1.5212249755859375, -0.4013940095901489, 0.0),
72 (2.0064330101013184, -0.0036309000570327044, 0.0),
73 (0.0, -2.0100629329681396, 0.0),
74 (-0.3977609872817993, -1.5248548984527588, 0.0),
75 (0.3977609872817993, -1.5248548984527588, 0.0),
76 (-0.21458669006824493, -1.144536018371582, 0.0),
77 (0.21458730101585388, -1.144536018371582, 0.0),
78 (0.21458730101585388, -1.5248548984527588, 0.0),
79 (-0.21458669006824493, -1.5248548984527588, 0.0)]
81 edges = [(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (7, 8), (0, 8),
82 (10, 11), (9, 12), (11, 12), (10, 13), (9, 14), (13, 15), (14, 15),
83 (16, 22), (17, 18), (18, 19), (19, 20), (20, 21), (21, 22), (7, 17),
84 (6, 16), (23, 24), (23, 25), (24, 29), (25, 28), (26, 27), (26, 29),
85 (27, 28), (31, 32), (30, 33), (32, 33), (31, 34), (30, 35), (34, 36),
86 (35, 36), (37, 38), (37, 39), (38, 43), (39, 42), (40, 41), (40, 43),
87 (41, 42)]
89 mesh = obj.data
90 mesh.from_pydata(verts, edges, [])
91 mesh.update()
92 return obj
95 def create_camera_widget(name):
96 """Create a camera control widget"""
97 obj = create_widget(name)
98 if not obj.data.vertices:
99 verts = [(0.27513638138771057, 0.0, -0.27513638138771057),
100 (0.359483003616333, 0.0, -0.14890272915363312),
101 (0.38910162448883057, 0.0, 0.0),
102 (0.359483003616333, 0.0, 0.1489027738571167),
103 (0.27513638138771057, 0.0, 0.27513638138771057),
104 (0.1489027589559555, 0.0, 0.359483003616333),
105 (-1.9481809943044937e-07, 0.0, 0.38910162448883057),
106 (-1.175054293867106e-07, 0.0, -0.38910162448883057),
107 (0.148903027176857, 0.0, -0.35948291420936584),
108 (0.6635494828224182, 0.0, -0.09360162913799286),
109 (0.6635494828224182, 0.0, 0.09360162913799286),
110 (0.49765610694885254, 0.0, 0.09360162913799286),
111 (0.49765610694885254, 0.0, -0.09360168874263763),
112 (0.6635494828224182, 0.0, 0.17350149154663086),
113 (0.6635494828224182, 0.0, -0.17350149154663086),
114 (0.8751950263977051, 0.0, 0.0),
115 (-0.14890296757221222, 0.0, 0.35948291420936584),
116 (-0.14890283346176147, 0.0, -0.359483003616333),
117 (-0.27513641119003296, 0.0, -0.2751363217830658),
118 (-0.359483003616333, 0.0, -0.14890272915363312),
119 (-0.38910162448883057, 0.0, 0.0),
120 (-0.359483003616333, 0.0, 0.1489028036594391),
121 (-0.2751363217830658, 0.0, 0.27513641119003296),
122 (1.0342557033027333e-07, 0.0, 0.8751950263977051),
123 (0.17350155115127563, 0.0, 0.6635494828224182),
124 (-0.17350146174430847, 0.0, 0.6635494828224182),
125 (0.09360174089670181, 0.0, 0.49765610694885254),
126 (-0.09360159188508987, 0.0, 0.49765610694885254),
127 (-0.09360159188508987, 0.0, 0.6635494828224182),
128 (0.09360168874263763, 0.0, 0.6635494828224182),
129 (-0.0936015248298645, 0.0, -0.6635494828224182),
130 (0.09360174834728241, 0.0, -0.6635494828224182),
131 (0.09360172599554062, 0.0, -0.49765610694885254),
132 (-0.09360159933567047, 0.0, -0.49765610694885254),
133 (0.1735016107559204, 0.0, -0.6635494828224182),
134 (-0.1735014021396637, 0.0, -0.6635494828224182),
135 (9.422691960025986e-08, 0.0, -0.8751950263977051),
136 (-0.8751950263977051, 0.0, 0.0),
137 (-0.6635494828224182, 0.0, 0.17350131273269653),
138 (-0.6635494828224182, 0.0, -0.17350167036056519),
139 (-0.49765610694885254, 0.0, 0.0936015397310257),
140 (-0.49765610694885254, 0.0, -0.0936017706990242),
141 (-0.6635494828224182, 0.0, -0.09360179305076599),
142 (-0.6635494828224182, 0.0, 0.09360147267580032),
143 (-0.16527177393436432, 0.0, 0.1652718484401703),
144 (-0.21593798696994781, 0.0, 0.08944448828697205),
145 (-0.23372963070869446, 0.0, 0.0),
146 (-0.21593798696994781, 0.0, -0.08944445103406906),
147 (-0.1652718484401703, 0.0, -0.16527177393436432),
148 (-0.08944450318813324, 0.0, -0.21593798696994781),
149 (-0.0894445851445198, 0.0, 0.21593795716762543),
150 (0.0894446149468422, 0.0, -0.21593795716762543),
151 (-7.058439166485186e-08, 0.0, -0.23372963070869446),
152 (-1.1702535118729429e-07, 0.0, 0.23372963070869446),
153 (0.08944445848464966, 0.0, 0.21593798696994781),
154 (0.1652718037366867, 0.0, 0.1652718037366867),
155 (0.21593798696994781, 0.0, 0.08944446593523026),
156 (0.23372963070869446, 0.0, 0.0),
157 (0.21593798696994781, 0.0, -0.08944445848464966),
158 (0.1652718037366867, 0.0, -0.1652718037366867)]
160 edges = [(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (7, 8), (0, 8),
161 (10, 11), (9, 12), (11, 12), (10, 13), (9, 14), (13, 15), (14, 15),
162 (16, 22), (17, 18), (18, 19), (19, 20), (20, 21), (21, 22), (7, 17),
163 (6, 16), (23, 24), (23, 25), (24, 29), (25, 28), (26, 29), (27, 28),
164 (31, 32), (30, 33), (32, 33), (31, 34), (30, 35), (34, 36), (35, 36),
165 (37, 38), (37, 39), (38, 43), (39, 42), (40, 41), (40, 43), (41, 42),
166 (50, 53), (49, 52), (44, 45), (45, 46), (46, 47), (47, 48), (48, 49),
167 (44, 50), (51, 59), (51, 52), (53, 54), (54, 55), (55, 56), (56, 57),
168 (57, 58), (58, 59), (27, 26)]
170 mesh = obj.data
171 mesh.from_pydata(verts, edges, [])
172 mesh.update()
173 return obj
176 def create_aim_widget(name):
177 """Create a camera aim widget"""
178 obj = create_widget(name)
179 if not obj.data.vertices:
180 verts = [(0.31008288264274597, 0.0, 0.31008288264274597),
181 (0.40514281392097473, 0.0, 0.1678156554698944),
182 (0.43852344155311584, 0.0, 0.0),
183 (0.40514281392097473, 0.0, -0.1678156852722168),
184 (0.31008288264274597, 0.0, -0.31008288264274597),
185 (0.1678156703710556, 0.0, -0.40514281392097473),
186 (-2.1956294915526087e-07, 0.0, -0.43852344155311584),
187 (-1.3243040086763358e-07, 0.0, 0.43852344155311584),
188 (0.16781596839427948, 0.0, 0.4051426947116852),
189 (0.7993937134742737, 0.0, 0.10549049079418182),
190 (0.7993937134742737, 0.0, -0.10549048334360123),
191 (0.9863580465316772, 0.0, -0.10549048334360123),
192 (0.9863580465316772, 0.0, 0.105490542948246),
193 (0.7993937134742737, 0.0, -0.19553886353969574),
194 (0.7993937134742737, 0.0, 0.19553886353969574),
195 (0.5608659386634827, 0.0, 0.0),
196 (-0.1678159236907959, 0.0, -0.4051426947116852),
197 (-0.16781575977802277, 0.0, 0.40514281392097473),
198 (-0.31008294224739075, 0.0, 0.3100828230381012),
199 (-0.40514281392097473, 0.0, 0.16781564056873322),
200 (-0.43852344155311584, 0.0, 0.0),
201 (-0.40514281392097473, 0.0, -0.16781572997570038),
202 (-0.3100828230381012, 0.0, -0.31008294224739075),
203 (5.8281088399780856e-08, 0.0, 0.5608659982681274),
204 (-0.19553889334201813, 0.0, 0.7993938326835632),
205 (0.1955389529466629, 0.0, 0.7993938326835632),
206 (-0.10549052804708481, 0.0, 0.9863581657409668),
207 (0.10549058020114899, 0.0, 0.9863581657409668),
208 (0.10549052804708481, 0.0, 0.7993938326835632),
209 (-0.10549046844244003, 0.0, 0.7993938326835632),
210 (0.10549034923315048, 0.0, -0.7993939518928528),
211 (-0.10549066960811615, 0.0, -0.7993939518928528),
212 (-0.10549074411392212, 0.0, -0.9863584041595459),
213 (0.10549039393663406, 0.0, -0.9863584041595459),
214 (-0.19553910195827484, 0.0, -0.7993938326835632),
215 (0.19553880393505096, 0.0, -0.7993940711021423),
216 (-1.4296951178494055e-07, 0.0, -0.5608659982681274),
217 (-0.5608660578727722, 0.0, 0.0),
218 (-0.7993939518928528, 0.0, -0.19553877413272858),
219 (-0.7993937134742737, 0.0, 0.19553901255130768),
220 (-0.9863580465316772, 0.0, -0.10549040883779526),
221 (-0.9863580465316772, 0.0, 0.10549063980579376),
222 (-0.7993938326835632, 0.0, 0.10549062490463257),
223 (-0.7993938326835632, 0.0, -0.10549038648605347),
224 (-0.12803608179092407, 0.0, -0.12803612649440765),
225 (-0.167287215590477, 0.0, -0.06929267197847366),
226 (-0.18107034265995026, 0.0, 0.0),
227 (-0.167287215590477, 0.0, 0.06929262727499008),
228 (-0.12803612649440765, 0.0, 0.12803608179092407),
229 (-0.06929267197847366, 0.0, 0.167287215590477),
230 (-0.06929274648427963, 0.0, -0.1672871708869934),
231 (0.06929276883602142, 0.0, 0.1672871708869934),
232 (-5.468173824851874e-08, 0.0, 0.18107034265995026),
233 (-9.065958295195742e-08, 0.0, -0.18107034265995026),
234 (0.06929264962673187, 0.0, -0.167287215590477),
235 (0.12803609669208527, 0.0, -0.12803609669208527),
236 (0.167287215590477, 0.0, -0.06929264962673187),
237 (0.18107034265995026, 0.0, 0.0),
238 (0.167287215590477, 0.0, 0.06929264217615128),
239 (0.12803609669208527, 0.0, 0.12803609669208527),
240 (-6.667435314966497e-08, 0.0, 0.060356780886650085),
241 (-7.866697160352487e-08, 0.0, -0.060356780886650085),
242 (-0.060356780886650085, 0.0, 0.0),
243 (0.060356780886650085, 0.0, 0.0)]
245 edges = [(0, 1), (1, 2), (2, 3), (3, 4), (4, 5), (5, 6), (7, 8), (0, 8),
246 (10, 11), (9, 12), (11, 12), (10, 13), (9, 14), (13, 15), (14, 15),
247 (16, 22), (17, 18), (18, 19), (19, 20), (20, 21), (21, 22), (7, 17),
248 (6, 16), (23, 24), (23, 25), (24, 29), (25, 28), (26, 29), (27, 28),
249 (31, 32), (30, 33), (32, 33), (31, 34), (30, 35), (34, 36), (35, 36),
250 (37, 38), (37, 39), (38, 43), (39, 42), (40, 41), (40, 43), (41, 42),
251 (50, 53), (49, 52), (44, 45), (45, 46), (46, 47), (47, 48), (48, 49),
252 (44, 50), (51, 59), (51, 52), (53, 54), (54, 55), (55, 56), (56, 57),
253 (57, 58), (58, 59), (27, 26), (60, 61), (62, 63)]
255 mesh = obj.data
256 mesh.from_pydata(verts, edges, [])
257 mesh.update()
258 return obj