Commit 80c3096e85ba68267e7947c7883936ed26117443
1 parent
b0712cb6
Exists in
master
Remove parâmetros extras dos movimentos circular e semicircular
Showing
3 changed files
with
110 additions
and
20 deletions
Show diff stats
.gitignore
__init__.py
moves.py
| ... | ... | @@ -57,6 +57,7 @@ def read_hand_param(mov_param): |
| 57 | 57 | return [conf_param, artic_param, orient_param] |
| 58 | 58 | |
| 59 | 59 | def contato(action, contact_type, mov_param, bones, is_right_hand, initialFrame = 18, frameJump = 10): |
| 60 | + currentFrame = initialFrame | |
| 60 | 61 | if (contact_type == "alisar"): |
| 61 | 62 | currentFrame = alisar(action, mov_param, bones, is_right_hand, initialFrame, frameJump) |
| 62 | 63 | elif (contact_type == "cocar"): |
| ... | ... | @@ -179,7 +180,7 @@ def alisar_diagonal(boneIK, to_right, repetition, initialFrame = 18, frameJump = |
| 179 | 180 | # raio: "grande" raio = 1.5, velocidade: "rapido" periodo = 45 |
| 180 | 181 | # raio: "grande" raio = 1.5, velocidade: "normal" periodo = 55 |
| 181 | 182 | # raio: "grande" raio = 1.5, velocidade: "lento" periodo = 65 |
| 182 | -def circular(js_movement, current_frame, frame_jump, is_right_hand, is_semicircular = False): | |
| 183 | +def circular(js_movement, current_frame, frame_jump, is_right_hand): | |
| 183 | 184 | dict_ray = { |
| 184 | 185 | "pequeno": 0.5, |
| 185 | 186 | "normal": 1.0, |
| ... | ... | @@ -196,31 +197,51 @@ def circular(js_movement, current_frame, frame_jump, is_right_hand, is_semicircu |
| 196 | 197 | "grande": 10 |
| 197 | 198 | } |
| 198 | 199 | dict_axis = { |
| 199 | - "frente-esquerda": [2, 0, 1], | |
| 200 | - "frente-cima": [2, 1, 0], | |
| 201 | - "esquerda-cima": [0, 1, 2] | |
| 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] | |
| 202 | 224 | } |
| 203 | 225 | actions = util.right_hand_actions if (is_right_hand) else util.left_hand_actions |
| 204 | 226 | bones = util.right_bones_conf if (is_right_hand) else util.left_bones_conf |
| 205 | 227 | hand_param = read_hand_param(js_movement) |
| 206 | 228 | ik = bpy.context.object.pose.bones["ik_FK.R" if (is_right_hand) else "ik_FK.L"] |
| 207 | - opposite_side = js_movement["lado_oposto"] | |
| 208 | 229 | period = dict_period[js_movement["velocidade"]] + dict_calc[js_movement["raio"]] |
| 209 | 230 | ray = dict_ray[js_movement["raio"]] |
| 210 | - reverse_way = js_movement["sentido_inverso"] | |
| 211 | 231 | x = dict_axis[js_movement["plano"]][0] |
| 212 | 232 | y = dict_axis[js_movement["plano"]][1] |
| 213 | 233 | #z = dict_axis[js_movement["plano"]][2] |
| 214 | - k = round(period / 2) if (opposite_side) else 0 | |
| 215 | - if (reverse_way): | |
| 216 | - tmp = x | |
| 217 | - x = y | |
| 218 | - y = tmp | |
| 234 | + k = round(period / 2) if (dict_axis[js_movement["plano"]][3]) else 0 | |
| 219 | 235 | util.setPose(actions, hand_param, [current_frame], bones, False) |
| 220 | 236 | util.keyframe_insert(bones, "location", current_frame, False, False) |
| 221 | 237 | ik_loc = [ik.location[0], ik.location[1], ik.location[2]] |
| 222 | - limit = round(period / 2) + k if (is_semicircular) else period + k | |
| 223 | - for i in range(k, limit + 1): | |
| 238 | + limit = period + k | |
| 239 | + iterator = None | |
| 240 | + if (dict_axis[js_movement["plano"]][4]): | |
| 241 | + iterator = reversed(range(k, limit + 1)) | |
| 242 | + else: | |
| 243 | + iterator = range(k, limit + 1) | |
| 244 | + for i in iterator: | |
| 224 | 245 | bpy.context.object.pose_library = bpy.data.actions[util.conf_direita_id if (is_right_hand) else util.conf_esquerda_id] |
| 225 | 246 | bpy.ops.poselib.apply_pose(pose_index = hand_param[0]) |
| 226 | 247 | bpy.context.object.pose_library = None |
| ... | ... | @@ -233,9 +254,6 @@ def circular(js_movement, current_frame, frame_jump, is_right_hand, is_semicircu |
| 233 | 254 | current_frame += 1 |
| 234 | 255 | return current_frame + frame_jump |
| 235 | 256 | |
| 236 | -# 'lado_oposto' true inverte o sentido do vetor direcional | |
| 237 | -# 'sentido_inverso' true inverte o sentido do plano | |
| 238 | - | |
| 239 | 257 | # helicoidal |
| 240 | 258 | # raio: "pequeno" raio = 0.2, velocidade: "rapido" periodo = 25 |
| 241 | 259 | # raio: "pequeno" raio = 0.2, velocidade: "normal" periodo = 35 |
| ... | ... | @@ -331,7 +349,78 @@ def retilineo(js_movement, current_frame, frame_jump, is_right_hand): |
| 331 | 349 | return current_frame |
| 332 | 350 | |
| 333 | 351 | def semicircular(js_movement, current_frame, frame_jump, is_right_hand): |
| 334 | - return circular(js_movement, current_frame, frame_jump, is_right_hand, True) | |
| 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 | |
| 335 | 424 | |
| 336 | 425 | def senoidal(js_movement, current_frame, frame_jump, is_right_hand): |
| 337 | 426 | dict_wave = { | ... | ... |