Commit bafb8e39b979dd7c89c3ef201e0ca578e9d81769
1 parent
a0026fb0
Exists in
master
Correção da checagem do tipo de movimento e adicionada a pose default no início e fim da animação
Showing
2 changed files
with
27 additions
and
14 deletions
Show diff stats
libras.py
@@ -32,8 +32,11 @@ util.outconf() | @@ -32,8 +32,11 @@ util.outconf() | ||
32 | act = bpy.context.scene.animation_data_create() | 32 | act = bpy.context.scene.animation_data_create() |
33 | 33 | ||
34 | # Função responsável por setar pose padrão | 34 | # Função responsável por setar pose padrão |
35 | -def poseDefault(positionFrames, bones): | ||
36 | - util.setPose([0], [0], positionFrames, bones) | 35 | +def poseDefault(positionFrames, collisionFlag = False): |
36 | + handDefaultParam = [0, 0, 0] | ||
37 | + util.setPose(util.right_hand_actions, handDefaultParam, positionFrames, util.rightBonesConf, collisionFlag) | ||
38 | + util.setPose(util.left_hand_actions, handDefaultParam, positionFrames, util.leftBonesConf, collisionFlag) | ||
39 | + # Setar a expressão facial padrão | ||
37 | 40 | ||
38 | # Função responsável por setar as configurações das mãos | 41 | # Função responsável por setar as configurações das mãos |
39 | def setHandConfiguration(actions, handParam, positionFrames, bones): | 42 | def setHandConfiguration(actions, handParam, positionFrames, bones): |
@@ -55,7 +58,7 @@ def configureHands(): | @@ -55,7 +58,7 @@ def configureHands(): | ||
55 | iks = ["ik_FK.R", "ik_FK.L"] | 58 | iks = ["ik_FK.R", "ik_FK.L"] |
56 | bones_ = [util.rightBonesConf, util.leftBonesConf] | 59 | bones_ = [util.rightBonesConf, util.leftBonesConf] |
57 | #Array com as actions FAKES que seram selecionadas no Blender para cada lado do corpo | 60 | #Array com as actions FAKES que seram selecionadas no Blender para cada lado do corpo |
58 | - actions = [[0, 2, 4], [1, 3, 5]] | 61 | + actions = [util.right_hand_actions, util.left_hand_actions] |
59 | global endFrame | 62 | global endFrame |
60 | for i in range(len(hands)): | 63 | for i in range(len(hands)): |
61 | if(json_input[hands[i]] != []): | 64 | if(json_input[hands[i]] != []): |
@@ -63,7 +66,7 @@ def configureHands(): | @@ -63,7 +66,7 @@ def configureHands(): | ||
63 | pose = util.armature.pose.bones[iks[i]] | 66 | pose = util.armature.pose.bones[iks[i]] |
64 | handParam = json_input[hands[i]][-3:] | 67 | handParam = json_input[hands[i]][-3:] |
65 | 68 | ||
66 | - if(move in ["pontual, circular, semicircular, retilineo, senoidal"]): | 69 | + if(move in ["pontual", "circular", "semicircular", "retilineo", "senoidal"]): |
67 | setHandConfiguration(actions[i], handParam, util.hands_default_frames, bones_[i]) | 70 | setHandConfiguration(actions[i], handParam, util.hands_default_frames, bones_[i]) |
68 | 71 | ||
69 | if(move in ["circular", "semicircular"]): | 72 | if(move in ["circular", "semicircular"]): |
@@ -87,10 +90,10 @@ def configureFace(): | @@ -87,10 +90,10 @@ def configureFace(): | ||
87 | # Set face | 90 | # Set face |
88 | setFaceConfiguration(json_input["facialExp"], [endFrame/4], util.faceBonesConf) | 91 | setFaceConfiguration(json_input["facialExp"], [endFrame/4], util.faceBonesConf) |
89 | 92 | ||
93 | +poseDefault([1]) | ||
90 | configureHands() | 94 | configureHands() |
91 | configureFace() | 95 | configureFace() |
92 | - | ||
93 | -poseDefault([1, endFrame + 15], util.allBones) | 96 | +poseDefault([endFrame + 15]) |
94 | 97 | ||
95 | # Default Pose | 98 | # Default Pose |
96 | print("Total frames: %.3i" % (endFrame)) | 99 | print("Total frames: %.3i" % (endFrame)) |
util.py
@@ -2,6 +2,8 @@ | @@ -2,6 +2,8 @@ | ||
2 | 2 | ||
3 | import bpy | 3 | import bpy |
4 | import math | 4 | import math |
5 | +#from bmesh_collision import bmesh_check_intersect_objects | ||
6 | +#from pyutil import log | ||
5 | 7 | ||
6 | armature = bpy.context.scene.objects.get('Armature.001') | 8 | armature = bpy.context.scene.objects.get('Armature.001') |
7 | 9 | ||
@@ -28,22 +30,30 @@ cocar_mao_aberta_index = 56 | @@ -28,22 +30,30 @@ cocar_mao_aberta_index = 56 | ||
28 | cocar_mao_fechada_index = 24 | 30 | cocar_mao_fechada_index = 24 |
29 | cocar_orientation_index = 20 | 31 | cocar_orientation_index = 20 |
30 | 32 | ||
33 | +# Actions mão direita | ||
34 | +right_hand_actions = [0, 2, 4] | ||
35 | + | ||
36 | +# Actions mão esquerda | ||
37 | +left_hand_actions = [1, 3, 5] | ||
38 | + | ||
39 | +last_keyframe_dict = {} | ||
40 | + | ||
31 | # Função responsável por selecionar as pose-libs e setar os frames | 41 | # Função responsável por selecionar as pose-libs e setar os frames |
32 | -def setPose(actions, parametesConf, positionFrames, bones): | 42 | +def setPose(actions, parametesConf, positionFrames, bones, collisionFlag = True): |
33 | bpy.ops.object.mode_set(mode = 'OBJECT') | 43 | bpy.ops.object.mode_set(mode = 'OBJECT') |
34 | bpy.ops.object.select_all(action="DESELECT") | 44 | bpy.ops.object.select_all(action="DESELECT") |
35 | bpy.ops.object.mode_set(mode = 'POSE') | 45 | bpy.ops.object.mode_set(mode = 'POSE') |
36 | - for l in range(len(actions)): | ||
37 | - armature.pose_library = bpy.data.actions[actions[l]] | ||
38 | - for x in range(len(positionFrames)): | 46 | + |
47 | + for x in range(len(positionFrames)): | ||
48 | + for l in range(len(actions)): | ||
49 | + armature.pose_library = bpy.data.actions[actions[l]] | ||
39 | bpy.ops.poselib.apply_pose(pose_index = parametesConf[l]) | 50 | bpy.ops.poselib.apply_pose(pose_index = parametesConf[l]) |
40 | for i in range(0, (len(bones))): | 51 | for i in range(0, (len(bones))): |
41 | - keyframe_insert(armature.pose.bones[bones[i]], 'location', positionFrames[x]) | ||
42 | - keyframe_insert(armature.pose.bones[bones[i]], 'rotation_quaternion', positionFrames[x]) | 52 | + keyframe_insert(armature.pose.bones[bones[i]], 'location', positionFrames[x], collisionFlag) |
53 | + keyframe_insert(armature.pose.bones[bones[i]], 'rotation_quaternion', positionFrames[x], collisionFlag) | ||
43 | 54 | ||
44 | -def keyframe_insert(bone, path, positionFrame): | 55 | +def keyframe_insert(bone, path, positionFrame, collisionFlag = True): |
45 | bone.keyframe_insert(data_path = path, index = -1, frame = positionFrame) | 56 | bone.keyframe_insert(data_path = path, index = -1, frame = positionFrame) |
46 | - # collision | ||
47 | 57 | ||
48 | # Função que limpa todos os keyframes e define a quantidade de frames | 58 | # Função que limpa todos os keyframes e define a quantidade de frames |
49 | def erase_all_keyframes(): | 59 | def erase_all_keyframes(): |