Commit a576064fc515f6e6b0256520b870850b4fd8a139

Authored by André Araújo
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
@@ -180,7 +180,7 @@ def alisar_diagonal(boneIK, to_right, repetition, initialFrame = 18, frameJump = @@ -180,7 +180,7 @@ def alisar_diagonal(boneIK, to_right, repetition, initialFrame = 18, frameJump =
180 # raio: "grande" raio = 1.5, velocidade: "rapido" periodo = 45 180 # raio: "grande" raio = 1.5, velocidade: "rapido" periodo = 45
181 # raio: "grande" raio = 1.5, velocidade: "normal" periodo = 55 181 # raio: "grande" raio = 1.5, velocidade: "normal" periodo = 55
182 # raio: "grande" raio = 1.5, velocidade: "lento" periodo = 65 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 dict_ray = { 184 dict_ray = {
185 "pequeno": 0.5, 185 "pequeno": 0.5,
186 "normal": 1.0, 186 "normal": 1.0,
@@ -196,48 +196,82 @@ def circular(js_movement, current_frame, frame_jump, is_right_hand): @@ -196,48 +196,82 @@ def circular(js_movement, current_frame, frame_jump, is_right_hand):
196 "normal": 0, 196 "normal": 0,
197 "grande": 10 197 "grande": 10
198 } 198 }
  199 + # dict_axis[x, y, z, opposite_side, reverse_way]
199 dict_axis = { 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 actions = util.right_hand_actions if (is_right_hand) else util.left_hand_actions 255 actions = util.right_hand_actions if (is_right_hand) else util.left_hand_actions
226 bones = util.right_bones_conf if (is_right_hand) else util.left_bones_conf 256 bones = util.right_bones_conf if (is_right_hand) else util.left_bones_conf
227 hand_param = read_hand_param(js_movement) 257 hand_param = read_hand_param(js_movement)
228 ik = bpy.context.object.pose.bones["ik_FK.R" if (is_right_hand) else "ik_FK.L"] 258 ik = bpy.context.object.pose.bones["ik_FK.R" if (is_right_hand) else "ik_FK.L"]
229 period = dict_period[js_movement["velocidade"]] + dict_calc[js_movement["raio"]] 259 period = dict_period[js_movement["velocidade"]] + dict_calc[js_movement["raio"]]
230 ray = dict_ray[js_movement["raio"]] 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 util.setPose(actions, hand_param, [current_frame], bones, False) 267 util.setPose(actions, hand_param, [current_frame], bones, False)
236 util.keyframe_insert(bones, "location", current_frame, False, False) 268 util.keyframe_insert(bones, "location", current_frame, False, False)
237 ik_loc = [ik.location[0], ik.location[1], ik.location[2]] 269 ik_loc = [ik.location[0], ik.location[1], ik.location[2]]
238 limit = period + k 270 limit = period + k
  271 + if (is_semicircular):
  272 + limit = round(period / 2) + k
239 iterator = None 273 iterator = None
240 - if (dict_axis[js_movement["plano"]][4]): 274 + if (reverse_way):
241 iterator = reversed(range(k, limit + 1)) 275 iterator = reversed(range(k, limit + 1))
242 else: 276 else:
243 iterator = range(k, limit + 1) 277 iterator = range(k, limit + 1)
@@ -349,78 +383,7 @@ def retilineo(js_movement, current_frame, frame_jump, is_right_hand): @@ -349,78 +383,7 @@ def retilineo(js_movement, current_frame, frame_jump, is_right_hand):
349 return current_frame 383 return current_frame
350 384
351 def semicircular(js_movement, current_frame, frame_jump, is_right_hand): 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 def senoidal(js_movement, current_frame, frame_jump, is_right_hand): 388 def senoidal(js_movement, current_frame, frame_jump, is_right_hand):
426 dict_wave = { 389 dict_wave = {