Commit 2a8d0fcc003cef8d9e8eb6d0c5212ef8ae87b58a
1 parent
d5e23927
Exists in
master
corrigido movimentos de mãos individuais
Showing
5 changed files
with
57 additions
and
17 deletions
Show diff stats
.gitignore
NewFormat_Json
1 | '{"userId": 4,"rightHand": ["circular","perpendicular","horario",0.6,1,"conf_20","Ori_4","Pa_6"],"leftHand":["pontual","conf_10","Ori_3","Pa_3"],"facialExp": "Exp_6","signName":"Novis"}' | 1 | '{"userId": 4,"rightHand": ["circular","perpendicular","horario",0.6,1,"conf_20","Ori_4","Pa_6"],"leftHand":["pontual","conf_10","Ori_3","Pa_3"],"facialExp": "Exp_6","signName":"Novis"}' |
2 | + | ||
3 | + '{"userId": 4,"rightHand": ["pontual","conf_20","Ori_4","Pa_6"],"leftHand":["circular","perpendicular","horario",0.6,1,"conf_20","Ori_4","Pa_6"],"facialExp": "Exp_6","signName":"pontual_direita"}' | ||
4 | + | ||
5 | + | ||
6 | + '{"userId": 4,"rightHand": ["semicircular","perpendicular","horario",0.6,0.5,"conf_20","Ori_4","Pa_6"],"leftHand":["pontual","conf_10","Ori_3","Pa_3"],"facialExp": "Exp_6","signName":"SemiCircular"}' |
avatar_Hozana_wikiLibras.blend
No preview for this file type
libras.py
1 | # -*- coding: UTF-8 -*- | 1 | # -*- coding: UTF-8 -*- |
2 | import sys | 2 | import sys |
3 | +sys.path.append('/home/gtaaas/wikilibras/wikilibras-core') | ||
3 | import json | 4 | import json |
4 | import lbsObjects | 5 | import lbsObjects |
5 | import util | 6 | import util |
6 | 7 | ||
7 | -def circular_or_semiCircular(hand,pose,orientation,direction,radius,laps,intensity,initialFrame = 15): | 8 | + |
9 | +def circular_or_semiCircular(hand,pose,orientation,direction,radius,laps,intensity = 5,initialFrame = 15): | ||
8 | center = pose.location.x,pose.location.y,pose.location.z | 10 | center = pose.location.x,pose.location.y,pose.location.z |
9 | if(orientation == 'perpendicular'): | 11 | if(orientation == 'perpendicular'): |
10 | if(direction == 'horario'): | 12 | if(direction == 'horario'): |
@@ -18,33 +20,60 @@ def circular_or_semiCircular(hand,pose,orientation,direction,radius,laps,intensi | @@ -18,33 +20,60 @@ def circular_or_semiCircular(hand,pose,orientation,direction,radius,laps,intensi | ||
18 | endFrame = hand.rotationCircular(center,radius,2,1,0,pose,0,laps,intensity,initialFrame) | 20 | endFrame = hand.rotationCircular(center,radius,2,1,0,pose,0,laps,intensity,initialFrame) |
19 | return endFrame | 21 | return endFrame |
20 | 22 | ||
23 | +def get_endFrame(json_input): | ||
24 | + endsFrame = [] | ||
25 | + if(json_input["rightHand"][0] == "circular" or json_input["rightHand"][0] == "semicircular"): | ||
26 | + endsFrame.append(int(json_input["rightHand"][4]*8*5+15)) | ||
27 | + if(json_input["leftHand"][0] == "circular" or json_input["leftHand"][0] == "semicircular"): | ||
28 | + endsFrame.append(int(json_input["leftHand"][4]*8*5+15)) | ||
29 | + return(max(endsFrame)) | ||
21 | 30 | ||
22 | #Configurações gerais | 31 | #Configurações gerais |
23 | json_input = json.loads(sys.argv[5]) # Load jason | 32 | json_input = json.loads(sys.argv[5]) # Load jason |
24 | util.outconf() | 33 | util.outconf() |
25 | handPosFrame = {'loc':[15],'rot':[15]} | 34 | handPosFrame = {'loc':[15],'rot':[15]} |
26 | armature = lbsObjects.Armadura('Armature.001') | 35 | armature = lbsObjects.Armadura('Armature.001') |
27 | -initialFrame,endFrame = 18,25 | 36 | +initialFrame,endFrame = 18,get_endFrame(json_input) |
28 | 37 | ||
29 | #Initial Pose | 38 | #Initial Pose |
30 | lbsObjects.Pose({'loc':[0], 'rot':[0]}, armature) #Set the default pose | 39 | lbsObjects.Pose({'loc':[0], 'rot':[0]}, armature) #Set the default pose |
31 | 40 | ||
32 | #ConfHandRight | 41 | #ConfHandRight |
33 | if(json_input["rightHand"] != []): | 42 | if(json_input["rightHand"] != []): |
34 | - handRight = lbsObjects.MaoDireita(json_input["rightHand"][-3:], handPosFrame, armature) | ||
35 | - if(json_input["rightHand"][0] == "circular"): | ||
36 | - orientation,direction,radius,laps = json_input["rightHand"][1:5] | ||
37 | - pose = armature.pose.bones['ik_FK.R'] | ||
38 | - endFrame = circular_or_semiCircular(handRight,pose,orientation,direction,radius,laps,5) | ||
39 | - handRight.genConf({'loc':[endFrame],'rot':[endFrame]}) | ||
40 | - handRight.genOri({'loc':[endFrame],'rot':[endFrame]}) | 43 | + movRight = json_input["rightHand"][0] |
44 | + pose = armature.pose.bones['ik_FK.R'] | ||
45 | + if(movRight == "pontual"): | ||
46 | + handRight = lbsObjects.MaoDireita(json_input["rightHand"][-3:],{'loc':[15,endFrame],'rot':[15,endFrame]}, armature) | ||
47 | + else: | ||
48 | + handRight = lbsObjects.MaoDireita(json_input["rightHand"][-3:],handPosFrame, armature) | ||
49 | + if(movRight == "circular" or movRight == "semicircular"): | ||
50 | + orientation,direction,radius,laps = json_input["rightHand"][1:5] | ||
51 | + endFrame = circular_or_semiCircular(handRight,pose,orientation,direction,radius,laps,5) | ||
52 | + handRight.genConf({'loc':[endFrame],'rot':[endFrame]}) | ||
53 | + handRight.genOri({'loc':[endFrame],'rot':[endFrame]}) | ||
54 | + elif(json_input["rightHand"][0] == "retilineo"): | ||
55 | + pass | ||
41 | 56 | ||
42 | #ConfLeftRight | 57 | #ConfLeftRight |
43 | if(json_input["leftHand"] != []): | 58 | if(json_input["leftHand"] != []): |
44 | - handLeft = lbsObjects.MaoEsquerda(json_input["leftHand"][-3:], handPosFrame, armature) | 59 | + movLeft = json_input["leftHand"][0] |
60 | + pose = armature.pose.bones['ik_FK.L'] | ||
61 | + if(movLeft == "pontual"): | ||
62 | + handLeft = lbsObjects.MaoEsquerda(json_input["leftHand"][-3:], {'loc':[15,endFrame],'rot':[15,endFrame]}, armature) | ||
63 | + else: | ||
64 | + handLeft = lbsObjects.MaoEsquerda(json_input["leftHand"][-3:], handPosFrame, armature) | ||
65 | + if(movLeft == "circular" or movLeft == "semicircular"): | ||
66 | + orientation,direction,radius,laps = json_input["leftHand"][1:5] | ||
67 | + endFrame = circular_or_semiCircular(handRight,pose,orientation,direction,radius,laps,5) | ||
68 | + handLeft.genConf({'loc':[endFrame],'rot':[endFrame]}) | ||
69 | + handLeft.genOri({'loc':[endFrame],'rot':[endFrame]}) | ||
70 | + elif(json_input["leftHand"][0] == "retilineo"): | ||
71 | + pass | ||
72 | + | ||
73 | +if(json_input["facialExp"] != []): | ||
74 | + #confFace | ||
75 | + lbsObjects.Face(json_input["facialExp"], armature, endFrame) # Set face | ||
45 | 76 | ||
46 | -#confFace | ||
47 | -lbsObjects.Face(json_input["facialExp"], armature, endFrame) # Set face | ||
48 | #confPoseEnd | 77 | #confPoseEnd |
49 | lbsObjects.Pose({'loc':[1,endFrame+20],'rot':[1,endFrame+20]},armature) # Set the final pose | 78 | lbsObjects.Pose({'loc':[1,endFrame+20],'rot':[1,endFrame+20]},armature) # Set the final pose |
50 | 79 |
util.py
1 | +# -*- coding: UTF-8 -*- | ||
2 | + | ||
1 | import bpy | 3 | import bpy |
2 | import math as m | 4 | import math as m |
3 | import subprocess as sub | 5 | import subprocess as sub |
6 | +import sys | ||
7 | +sys.path.append("./") | ||
4 | 8 | ||
5 | bones = ["BnMao.R", "BnMao.L"] | 9 | bones = ["BnMao.R", "BnMao.L"] |
6 | def sizeRadius(value): | 10 | def sizeRadius(value): |
@@ -12,8 +16,6 @@ def sizeRadius(value): | @@ -12,8 +16,6 @@ def sizeRadius(value): | ||
12 | else: | 16 | else: |
13 | return 0.3 | 17 | return 0.3 |
14 | 18 | ||
15 | -# 1600 x 1200 -> 00:01:25.158198 | ||
16 | -# 640 x 480 -> 00:00:41.590239 | ||
17 | def outconf(): | 19 | def outconf(): |
18 | bpy.context.scene.render.resolution_x = 640 | 20 | bpy.context.scene.render.resolution_x = 640 |
19 | bpy.context.scene.render.resolution_y = 480 | 21 | bpy.context.scene.render.resolution_y = 480 |
@@ -64,10 +66,11 @@ def get_calculo_mov(radius,orientation,sense): | @@ -64,10 +66,11 @@ def get_calculo_mov(radius,orientation,sense): | ||
64 | ''' | 66 | ''' |
65 | 67 | ||
66 | def render_sign(userId,signName,beginFrame,endFrame): | 68 | def render_sign(userId,signName,beginFrame,endFrame): |
67 | - bpy.context.scene.render.filepath = "//"+ str(userId)+ "//"+ signName + "_" | 69 | + bpy.context.scene.render.filepath = "//Users//"+ str(userId)+ "//"+ signName + "_" |
68 | bpy.context.scene.frame_start = beginFrame | 70 | bpy.context.scene.frame_start = beginFrame |
69 | bpy.context.scene.frame_end = endFrame | 71 | bpy.context.scene.frame_end = endFrame |
70 | bpy.ops.render.render(animation = True, write_still = False, layer = "", scene = "") | 72 | bpy.ops.render.render(animation = True, write_still = False, layer = "", scene = "") |
73 | + | ||
71 | bpy.ops.wm.quit_blender() | 74 | bpy.ops.wm.quit_blender() |
72 | 75 | ||
73 | """ | 76 | """ |