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,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 = { |