Commit a576064fc515f6e6b0256520b870850b4fd8a139
1 parent
80c3096e
Exists in
master
Adiciona flag sentido_inverso na função movimento circular e semicircular
Showing
1 changed file
with
65 additions
and
102 deletions
Show diff stats
moves.py
... | ... | @@ -180,7 +180,7 @@ def alisar_diagonal(boneIK, to_right, repetition, initialFrame = 18, frameJump = |
180 | 180 | # raio: "grande" raio = 1.5, velocidade: "rapido" periodo = 45 |
181 | 181 | # raio: "grande" raio = 1.5, velocidade: "normal" periodo = 55 |
182 | 182 | # raio: "grande" raio = 1.5, velocidade: "lento" periodo = 65 |
183 | -def circular(js_movement, current_frame, frame_jump, is_right_hand): | |
183 | +def circular(js_movement, current_frame, frame_jump, is_right_hand, is_semicircular=False): | |
184 | 184 | dict_ray = { |
185 | 185 | "pequeno": 0.5, |
186 | 186 | "normal": 1.0, |
... | ... | @@ -196,48 +196,82 @@ def circular(js_movement, current_frame, frame_jump, is_right_hand): |
196 | 196 | "normal": 0, |
197 | 197 | "grande": 10 |
198 | 198 | } |
199 | + # dict_axis[x, y, z, opposite_side, reverse_way] | |
199 | 200 | dict_axis = { |
200 | - "baixo-direita" : [1, 0, 2, True, False], | |
201 | - "baixo-esquerda" : [1, 0, 2, True, True], | |
202 | - "baixo-frente" : [1, 2, 0, True, True], | |
203 | - "baixo-tras" : [1, 2, 0, True, False], | |
204 | - "cima-direita" : [1, 0, 2, False, True], | |
205 | - "cima-esquerda" : [1, 0, 2, False, False], | |
206 | - "cima-frente" : [1, 2, 0, False, False], | |
207 | - "cima-tras" : [1, 2, 0, False, True], | |
208 | - "direita-baixo" : [0, 1, 2, True, False], | |
209 | - "direita-cima" : [0, 1, 2, True, True], | |
210 | - "direita-frente" : [0, 2, 1, True, True], | |
211 | - "direita-tras" : [0, 2, 1, True, False], | |
212 | - "esquerda-baixo" : [0, 1, 2, False, True], | |
213 | - "esquerda-cima" : [0, 1, 2, False, False], | |
214 | - "esquerda-frente": [0, 2, 1, False, False], | |
215 | - "esquerda-tras" : [0, 2, 1, False, True], | |
216 | - "frente-baixo" : [2, 1, 0, False, True], | |
217 | - "frente-cima" : [2, 1, 0, False, False], | |
218 | - "frente-direita" : [2, 0, 1, False, True], | |
219 | - "frente-esquerda": [2, 0, 1, False, False], | |
220 | - "tras-baixo" : [2, 1, 0, True, False], | |
221 | - "tras-cima" : [2, 1, 0, True, True], | |
222 | - "tras-direita" : [2, 0, 1, True, False], | |
223 | - "tras-esquerda" : [2, 0, 1, True, True] | |
201 | + "baixo-direita" : [1, 0, 2, True, False], # a | |
202 | + "baixo-esquerda" : [1, 0, 2, True, True], # h | |
203 | + "baixo-frente" : [1, 2, 0, True, True], # a | |
204 | + "baixo-tras" : [1, 2, 0, True, False], # h | |
205 | + "cima-direita" : [1, 0, 2, False, True], # h | |
206 | + "cima-esquerda" : [1, 0, 2, False, False], # a | |
207 | + "cima-frente" : [1, 2, 0, False, False], # h | |
208 | + "cima-tras" : [1, 2, 0, False, True], # a | |
209 | + "direita-baixo" : [0, 1, 2, True, False], # h | |
210 | + "direita-cima" : [0, 1, 2, True, True], # a | |
211 | + "direita-frente" : [0, 2, 1, True, True], # a | |
212 | + "direita-tras" : [0, 2, 1, True, False], # h | |
213 | + "esquerda-baixo" : [0, 1, 2, False, True], # a | |
214 | + "esquerda-cima" : [0, 1, 2, False, False], # h | |
215 | + "esquerda-frente": [0, 2, 1, False, False], # h | |
216 | + "esquerda-tras" : [0, 2, 1, False, True], # a | |
217 | + "frente-baixo" : [2, 1, 0, False, True], # h | |
218 | + "frente-cima" : [2, 1, 0, False, False], # a | |
219 | + "frente-direita" : [2, 0, 1, False, True], # h | |
220 | + "frente-esquerda": [2, 0, 1, False, False], # h | |
221 | + "tras-baixo" : [2, 1, 0, True, False], # a | |
222 | + "tras-cima" : [2, 1, 0, True, True], # h | |
223 | + "tras-direita" : [2, 0, 1, True, False], # h | |
224 | + "tras-esquerda" : [2, 0, 1, True, True] # h | |
224 | 225 | } |
226 | + if (is_semicircular): | |
227 | + dict_axis["baixo-esquerda"] = [1, 0, 2, False, True] | |
228 | + dict_axis["baixo-frente"] = [1, 2, 0, False, True] | |
229 | + dict_axis["cima-direita"] = [1, 0, 2, True, True] | |
230 | + dict_axis["cima-tras"] = [1, 2, 0, True, True] | |
231 | + dict_axis["direita-cima"] = [0, 1, 2, False, True] | |
232 | + dict_axis["direita-frente"] = [0, 2, 1, False, True] | |
233 | + dict_axis["esquerda-baixo"] = [0, 1, 2, True, True] | |
234 | + dict_axis["esquerda-tras"] = [0, 2, 1, True, True] | |
235 | + dict_axis["frente-baixo"] = [2, 1, 0, True, True] | |
236 | + dict_axis["frente-direita"] = [2, 0, 1, True, True] | |
237 | + dict_axis["tras-cima"] = [2, 1, 0, False, True] | |
238 | + dict_axis["tras-esquerda"] = [2, 0, 1, False, True] | |
239 | + plan = js_movement["plano"] | |
240 | + if ("sentido_inverso" in js_movement.keys()): | |
241 | + reverse_way = js_movement["sentido_inverso"] | |
242 | + if (reverse_way): | |
243 | + if ("-baixo" in plan): | |
244 | + plan = plan.replace("-baixo", "-cima", 1) | |
245 | + elif("-cima" in plan): | |
246 | + plan = plan.replace("-cima", "-baixo", 1) | |
247 | + elif("-direita" in plan): | |
248 | + plan = plan.replace("-direita", "-esquerda", 1) | |
249 | + elif ("-esquerda" in plan): | |
250 | + plan = plan.replace("-esquerda", "-direita", 1) | |
251 | + elif("-frente" in plan): | |
252 | + plan = plan.replace("-frente", "-tras", 1) | |
253 | + elif("-tras" in plan): | |
254 | + plan = plan.replace("-tras", "-frente", 1) | |
225 | 255 | actions = util.right_hand_actions if (is_right_hand) else util.left_hand_actions |
226 | 256 | bones = util.right_bones_conf if (is_right_hand) else util.left_bones_conf |
227 | 257 | hand_param = read_hand_param(js_movement) |
228 | 258 | ik = bpy.context.object.pose.bones["ik_FK.R" if (is_right_hand) else "ik_FK.L"] |
229 | 259 | period = dict_period[js_movement["velocidade"]] + dict_calc[js_movement["raio"]] |
230 | 260 | ray = dict_ray[js_movement["raio"]] |
231 | - x = dict_axis[js_movement["plano"]][0] | |
232 | - y = dict_axis[js_movement["plano"]][1] | |
233 | - #z = dict_axis[js_movement["plano"]][2] | |
234 | - k = round(period / 2) if (dict_axis[js_movement["plano"]][3]) else 0 | |
261 | + x = dict_axis[plan][0] | |
262 | + y = dict_axis[plan][1] | |
263 | + #z = dict_axis[plan]][2] | |
264 | + opposite_side = dict_axis[plan][3] | |
265 | + reverse_way = dict_axis[plan][4] | |
266 | + k = round(period / 2) if (opposite_side) else 0 | |
235 | 267 | util.setPose(actions, hand_param, [current_frame], bones, False) |
236 | 268 | util.keyframe_insert(bones, "location", current_frame, False, False) |
237 | 269 | ik_loc = [ik.location[0], ik.location[1], ik.location[2]] |
238 | 270 | limit = period + k |
271 | + if (is_semicircular): | |
272 | + limit = round(period / 2) + k | |
239 | 273 | iterator = None |
240 | - if (dict_axis[js_movement["plano"]][4]): | |
274 | + if (reverse_way): | |
241 | 275 | iterator = reversed(range(k, limit + 1)) |
242 | 276 | else: |
243 | 277 | iterator = range(k, limit + 1) |
... | ... | @@ -349,78 +383,7 @@ def retilineo(js_movement, current_frame, frame_jump, is_right_hand): |
349 | 383 | return current_frame |
350 | 384 | |
351 | 385 | def semicircular(js_movement, current_frame, frame_jump, is_right_hand): |
352 | - dict_ray = { | |
353 | - "pequeno": 0.5, | |
354 | - "normal": 1.0, | |
355 | - "grande": 1.5 | |
356 | - } | |
357 | - dict_period = { | |
358 | - "lento": 55, | |
359 | - "normal": 45, | |
360 | - "rapido": 35 | |
361 | - } | |
362 | - dict_calc = { | |
363 | - "pequeno": -10, | |
364 | - "normal": 0, | |
365 | - "grande": 10 | |
366 | - } | |
367 | - dict_axis = { | |
368 | - "baixo-direita" : [1, 0, 2, True, False], | |
369 | - "cima-direita" : [1, 0, 2, True, True], | |
370 | - "cima-tras" : [1, 2, 0, True, True], | |
371 | - "baixo-tras" : [1, 2, 0, True, False], | |
372 | - "baixo-esquerda" : [1, 0, 2, False, True], | |
373 | - "cima-esquerda" : [1, 0, 2, False, False], | |
374 | - "cima-frente" : [1, 2, 0, False, False], | |
375 | - "baixo-frente" : [1, 2, 0, False, True], | |
376 | - "direita-baixo" : [0, 1, 2, True, False], | |
377 | - "esquerda-baixo" : [0, 1, 2, True, True], | |
378 | - "esquerda-tras" : [0, 2, 1, True, True], | |
379 | - "direita-tras" : [0, 2, 1, True, False], | |
380 | - "direita-cima" : [0, 1, 2, False, True], | |
381 | - "esquerda-cima" : [0, 1, 2, False, False], | |
382 | - "esquerda-frente":[0, 2, 1, False, False], | |
383 | - "direita-frente" : [0, 2, 1, False, True], | |
384 | - "tras-cima" : [2, 1, 0, False, True], | |
385 | - "frente-cima" : [2, 1, 0, False, False], | |
386 | - "tras-esquerda" : [2, 0, 1, False, True], | |
387 | - "frente-esquerda": [2, 0, 1, False, False], | |
388 | - "tras-baixo" : [2, 1, 0, True, False], | |
389 | - "frente-baixo" : [2, 1, 0, True, True], | |
390 | - "tras-direita" : [2, 0, 1, True, False], | |
391 | - "frente-direita" : [2, 0, 1, True, True] | |
392 | - } | |
393 | - actions = util.right_hand_actions if (is_right_hand) else util.left_hand_actions | |
394 | - bones = util.right_bones_conf if (is_right_hand) else util.left_bones_conf | |
395 | - hand_param = read_hand_param(js_movement) | |
396 | - ik = bpy.context.object.pose.bones["ik_FK.R" if (is_right_hand) else "ik_FK.L"] | |
397 | - period = dict_period[js_movement["velocidade"]] + dict_calc[js_movement["raio"]] | |
398 | - ray = dict_ray[js_movement["raio"]] | |
399 | - x = dict_axis[js_movement["plano"]][0] | |
400 | - y = dict_axis[js_movement["plano"]][1] | |
401 | - #z = dict_axis[js_movement["plano"]][2] | |
402 | - k = round(period / 2) if (dict_axis[js_movement["plano"]][3]) else 0 | |
403 | - util.setPose(actions, hand_param, [current_frame], bones, False) | |
404 | - util.keyframe_insert(bones, "location", current_frame, False, False) | |
405 | - ik_loc = [ik.location[0], ik.location[1], ik.location[2]] | |
406 | - limit = round(period / 2) + k | |
407 | - iterator = None | |
408 | - if (dict_axis[js_movement["plano"]][4]): | |
409 | - iterator = reversed(range(k, limit + 1)) | |
410 | - else: | |
411 | - iterator = range(k, limit + 1) | |
412 | - for i in iterator: | |
413 | - bpy.context.object.pose_library = bpy.data.actions[util.conf_direita_id if (is_right_hand) else util.conf_esquerda_id] | |
414 | - bpy.ops.poselib.apply_pose(pose_index = hand_param[0]) | |
415 | - bpy.context.object.pose_library = None | |
416 | - util.keyframe_insert(bones, "location", current_frame, False) | |
417 | - util.keyframe_insert(bones, "rotation_quaternion", current_frame, False) | |
418 | - ik.location[x] = ik_loc[x] + (ray * math.cos(i / period * (2 * math.pi))) | |
419 | - ik.location[y] = ik_loc[y] + (ray * math.sin(i / period * (2 * math.pi))) | |
420 | - util.keyframe_insert(ik, "location", current_frame, False) | |
421 | - util.keyframe_insert(ik, "rotation_quaternion", current_frame, False) | |
422 | - current_frame += 1 | |
423 | - return current_frame + frame_jump | |
386 | + return circular(js_movement, current_frame, frame_jump, is_right_hand, True) | |
424 | 387 | |
425 | 388 | def senoidal(js_movement, current_frame, frame_jump, is_right_hand): |
426 | 389 | dict_wave = { | ... | ... |