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