movPontual_backup.py
9.6 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
from setKey2 import *
from utils02 import *
import Blender
from Blender import *
import math
import sys
import os
import commands
import subprocess as sub
def substr(str,origem, tamanho):
return str[origem:tamanho+origem]
paramDir = sys.argv[5]
paramEsq = sys.argv[6]
# pegando Objeto chamado "Armature.001" -----------------------------------------------------------
arm_ob = Blender.Object.Get('Armature.001')
pose = arm_ob.getPose()
# Criando nova Action -----------------------------------------------------------------------------
act = Armature.NLA.NewAction("TESTE_02")
act.setActive(arm_ob)
parametros = [paramDir, paramEsq]
endFrame = 0
for lado in range (0, 2 ,1): # Loop para Direita e Esquerda
dados = open(parametros[lado],"r")
listDados = dados.readlines()
dados.close()
if(len(listDados) > 2):
# Key Frame Ponto de Articulação ----------------------------------------------------------------
for i in range(0, len(pontoArt(int(listDados[0].split("_")[1]), lado)), 1):
bone = pose.bones[ pontoArt(int(listDados[0].split("_")[1]), lado)[i].split()[0] ]
x = float( pontoArt(int(listDados[0].split("_")[1]), lado)[i].split()[2] )
y = float( pontoArt(int(listDados[0].split("_")[1]), lado)[i].split()[3] )
z = float( pontoArt(int(listDados[0].split("_")[1]), lado)[i].split()[4] )
euler = Mathutils.Euler(x,y,z)
bone.loc[:] = x, y, z
bone.insertKey(arm_ob, 10, Object.Pose.LOC)
# Key Frames Orientação Mãos ----------------------------------------------------------------------
for i in range(0, len(orient(int(listDados[1].split("_")[1]), lado)), 1):
bone = pose.bones[ orient(int(listDados[1].split("_")[1]), lado)[i].split()[0] ]
x = float( orient(int(listDados[1].split("_")[1]), lado)[i].split()[6] )
y = float( orient(int(listDados[1].split("_")[1]), lado)[i].split()[7] )
z = float( orient(int(listDados[1].split("_")[1]), lado)[i].split()[8] )
euler[:] = x, y, z
bone.quat = euler.toQuat()
bone.insertKey(arm_ob, 10, Object.Pose.ROT)
# Key Frames Configs de Mão -----------------------------------------------------------------------
for i in range(0, len(confMao(int(listDados[2].split("_")[1]), lado)), 1):
bone = pose.bones[ confMao(int(listDados[2].split("_")[1]), lado)[i].split()[0] ]
x = float( confMao(int(listDados[2].split("_")[1]), lado)[i].split()[6] )
y = float( confMao(int(listDados[2].split("_")[1]), lado)[i].split()[7] )
z = float( confMao(int(listDados[2].split("_")[1]), lado)[i].split()[8] )
euler[:] = x, y, z
bone.quat = euler.toQuat()
bone.insertKey(arm_ob, 10, Object.Pose.ROT)
# Pegando maior frame -----------------------------------------------------------------------------
#if F > endFrame :
endFrame = 10
dados = open(parametros[1],"r")
listParamEsq = dados.readlines()
dados.close()
libExpressaoFacial = open("Libs/LibExpressaoFacial", "r")
listaExpressaoFacial = libExpressaoFacial.readlines();
t1 = listParamEsq[0];
t1 = t1[:-1];
if(t1 == 'Nenhum'):
exp_facial = listParamEsq[1];
expressao_facial = substr(exp_facial, 0, len(exp_facial) - 1);
else:
exp_facial = listParamEsq[len(listParamEsq) - 1];
expressao_facial = substr(exp_facial, 0, len(exp_facial) - 1);
# Key Frames Expressao Facial ---------------------------------------------------------------------
for i in range(0 , len(listaExpressaoFacial), 1):
if (listaExpressaoFacial[i].split()): #Split em cada linha
if (listaExpressaoFacial[i].split()[0] == "Exp_9"):
for k in range(i , i+ int(listaExpressaoFacial[i].split()[-1]), 1):
bone = pose.bones[listaExpressaoFacial[k+1].split()[0]]
bone.loc[:] = float(listaExpressaoFacial[k+1].split()[2]), float(listaExpressaoFacial[k+1].split()[3]), float(listaExpressaoFacial[k+1].split()[4])
bone.insertKey(arm_ob, 1, Object.Pose.LOC)
euler = bone.quat.toEuler()
euler[:] = float(listaExpressaoFacial[k+1].split()[6]), float(listaExpressaoFacial[k+1].split()[7]), float(listaExpressaoFacial[k+1].split()[8])
bone.quat = euler.toQuat()
bone.insertKey(arm_ob, 1, Object.Pose.ROT)
bone = pose.bones[listaExpressaoFacial[k+1].split()[0]]
bone.loc[:] = float(listaExpressaoFacial[k+1].split()[2]), float(listaExpressaoFacial[k+1].split()[3]), float(listaExpressaoFacial[k+1].split()[4])
bone.insertKey(arm_ob, 22, Object.Pose.LOC)
euler = bone.quat.toEuler()
euler[:] = float(listaExpressaoFacial[k+1].split()[6]), float(listaExpressaoFacial[k+1].split()[7]), float(listaExpressaoFacial[k+1].split()[8])
bone.quat = euler.toQuat()
bone.insertKey(arm_ob, 22, Object.Pose.ROT)
if (listaExpressaoFacial[i].split()[0] == expressao_facial):
for k in range(i , i+ int(listaExpressaoFacial[i].split()[-1]), 1):
bone = pose.bones[listaExpressaoFacial[k+1].split()[0]]
bone.loc[:] = float(listaExpressaoFacial[k+1].split()[2]), float(listaExpressaoFacial[k+1].split()[3]), float(listaExpressaoFacial[k+1].split()[4])
bone.insertKey(arm_ob, 8, Object.Pose.LOC)
euler = bone.quat.toEuler()
euler[:] = float(listaExpressaoFacial[k+1].split()[6]), float(listaExpressaoFacial[k+1].split()[7]), float(listaExpressaoFacial[k+1].split()[8])
bone.quat = euler.toQuat()
bone.insertKey(arm_ob, 8, Object.Pose.ROT)
bone = pose.bones[listaExpressaoFacial[k+1].split()[0]]
bone.loc[:] = float(listaExpressaoFacial[k+1].split()[2]), float(listaExpressaoFacial[k+1].split()[3]), float(listaExpressaoFacial[k+1].split()[4])
bone.insertKey(arm_ob, 15, Object.Pose.LOC)
euler = bone.quat.toEuler()
euler[:] = float(listaExpressaoFacial[k+1].split()[6]), float(listaExpressaoFacial[k+1].split()[7]), float(listaExpressaoFacial[k+1].split()[8])
bone.quat = euler.toQuat()
bone.insertKey(arm_ob, 15, Object.Pose.ROT)
libPosePadrao = open("Libs/LibPosePadrao", "r")
listaPosePadrao = libPosePadrao.readlines();
print "EndFrame: " + str(endFrame)
# Key Frames Pose Padrão Inicial e Final ----------------------------------------------------------------
for i in range(0 , len(listaPosePadrao), 1):
if (listaPosePadrao[i].split()): #Split em cada linha
if (listaPosePadrao[i].split()[0] == "Pose_1"):
for k in range(i , i+ int(listaPosePadrao[i].split()[-1]), 1):
bone = pose.bones[listaPosePadrao[k+1].split()[0]]
bone.loc[:] = float(listaPosePadrao[k+1].split()[2]), float(listaPosePadrao[k+1].split()[3]), float(listaPosePadrao[k+1].split()[4])
bone.insertKey(arm_ob, 1, Object.Pose.LOC)
euler = bone.quat.toEuler()
euler[:] = float(listaPosePadrao[k+1].split()[6]), float(listaPosePadrao[k+1].split()[7]), float(listaPosePadrao[k+1].split()[8])
bone.quat = euler.toQuat()
bone.insertKey(arm_ob, 1, Object.Pose.ROT)
bone = pose.bones[listaPosePadrao[k+1].split()[0]]
bone.loc[:] = float(listaPosePadrao[k+1].split()[2]), float(listaPosePadrao[k+1].split()[3]), float(listaPosePadrao[k+1].split()[4])
bone.insertKey(arm_ob, 25, Object.Pose.LOC)
euler = bone.quat.toEuler()
euler[:] = float(listaPosePadrao[k+1].split()[6]), float(listaPosePadrao[k+1].split()[7]), float(listaPosePadrao[k+1].split()[8])
bone.quat = euler.toQuat()
bone.insertKey(arm_ob, 25, Object.Pose.ROT)
if (listaPosePadrao[i].split()[0] == "Pose_2"):
for k in range(i , i+ int(listaPosePadrao[i].split()[-1]), 1):
bone = pose.bones[listaPosePadrao[k+1].split()[0]]
bone.loc[:] = float(listaPosePadrao[k+1].split()[2]), float(listaPosePadrao[k+1].split()[3]), float(listaPosePadrao[k+1].split()[4])
bone.insertKey(arm_ob, 1, Object.Pose.LOC)
euler = bone.quat.toEuler()
euler[:] = float(listaPosePadrao[k+1].split()[6]), float(listaPosePadrao[k+1].split()[7]), float(listaPosePadrao[k+1].split()[8])
bone.quat = euler.toQuat()
bone.insertKey(arm_ob, 1, Object.Pose.ROT)
bone = pose.bones[listaPosePadrao[k+1].split()[0]]
bone.loc[:] = float(listaPosePadrao[k+1].split()[2]), float(listaPosePadrao[k+1].split()[3]), float(listaPosePadrao[k+1].split()[4])
bone.insertKey(arm_ob, 25, Object.Pose.LOC)
euler = bone.quat.toEuler()
euler[:] = float(listaPosePadrao[k+1].split()[6]), float(listaPosePadrao[k+1].split()[7]), float(listaPosePadrao[k+1].split()[8])
bone.quat = euler.toQuat()
bone.insertKey(arm_ob, 25, Object.Pose.ROT)
#print "Obtendo Nome do Video..."
dados = open(parametros[0],"r")
listDados = dados.readlines()
dados.close()
nomeVideoTemp = listDados[len(listDados) - 1]
nomeVideo = substr(nomeVideoTemp, 0, len(nomeVideoTemp) - 1)
# RENDER ------------------------------------------------------------------------------------------
cena = Blender.Scene.GetCurrent()
cont = cena.getRenderingContext()
cont.renderPath = "//"+nomeVideo+"_"
cont.sFrame = 1
cont.eFrame = endFrame + 25
cont.renderAnim()
#sub.Popen("ffmpeg -i "+ nomeVideo+ "*.avi -y -b 800 -r 25 -f flv -vcodec flv -acodec mp3 -ab 128 -ar 44100 "+ nomeVideo+".flv",shell=True,stdout=sub.PIPE).stdout.readlines()
sub.Popen("ffmpeg -i "+ nomeVideo+ "*.avi -b 2028k -s 640x480 -r 30 -acodec copy "+ nomeVideo+".flv",shell=True,stdout=sub.PIPE).stdout.readlines()
temp1 = commands.getoutput('ls /home/daniloanobre/Projetos/ProjetoLibras/server/ScriptsPython | grep '+nomeVideo + '*.avi')
videoAVIrenomeado = nomeVideo + '.avi';
os.rename(temp1, videoAVIrenomeado);
sub.Popen("rm "+nomeVideo+"Dir"+ " "+ nomeVideo+"Esq",shell=True,stdout=sub.PIPE).stdout.readlines()
Blender.Quit()