Commit bc03b22e4fa9ed5b9f5df6cf234b2a96bbda4267

Authored by André Araújo
1 parent bbc5cf21
Exists in master

Atualiza controller

Makefile
1   -BLENDER = blender
2   -DONE = [\33[30;32mOK\33[m]\n
3   -FAIL = [\33[30;31mERRO\33[m]\n
4   -MODULE = Wikilibras
5   -CLEAR = @echo -n "\033c"
6   -CACHE = __pycache__
7   -SCRIPT = libras.py
8   -AVATAR = avatar_Hozana_wikiLibras.blend
9   -JSON = '{"userId": 2,"rightHand": ["circular", "plano", "horario", 1, 2, 0, 50, 20], "leftHand":[], "facialExp": [6], "signName":"teste_circular"}'
10   -
11   -default: main
12   -
13   -main:
  1 +BLENDER = blender
  2 +PYTHON = python3
  3 +DONE = [\33[30;32mOK\33[m]\n
  4 +FAIL = [\33[30;31mERRO\33[m]\n
  5 +MODULE = Wikilibras
  6 +CLEAR = @echo -n "\033c"
  7 +CACHE = __pycache__
  8 +URL = git@git.lavid.ufpb.br:wikilibras-core
  9 +MAIN = libras.py
  10 +CONTROLLER = controller.py
  11 +AVATAR = avatar_Hozana_wikiLibras.blend
  12 +JSON = '{"userId": 2,"rightHand": ["circular", "plano", "horario", 1, 2, 0, 50, 20], "leftHand":[], "facialExp": [6], "signName":"teste_circular"}'
  13 +
  14 +default: py
  15 +
  16 +bpy:
14 17 $(CLEAR)
15   - @echo Executando...
16   - @$(BLENDER) -b $(AVATAR) -P $(SCRIPT) $(JSON) && echo "$(DONE)" || { echo "$(FAIL)"; exit 1; }
  18 + @echo Executando Blender ...
  19 + @$(BLENDER) -b $(AVATAR) -P $(MAIN) $(JSON) && echo "$(DONE)" || { echo "$(FAIL)"; exit 1; }
17 20  
18 21 clean:
19 22 $(CLEAR)
20 23 @echo -n "Limpando..."
21 24 @rm -rf $(CACHE) > /dev/null 2>&1 && echo " $(DONE)" || { echo " $(FAIL)"; exit 1; }
  25 +
  26 +gclone:
  27 + $(CLEAR)
  28 + @echo "Clonando repositorio @(URL) ..."
  29 + @exit
  30 +
  31 +gconf:
  32 + $(CLEAR)
  33 + @git --help
  34 + @echo "Configurando git ..."
  35 + @exit
  36 +
  37 +py:
  38 + $(CLEAR)
  39 + @echo Executando Python ...
  40 + @$(PYTHON) $(CONTROLLER) $(JSON) && echo "$(DONE)" || { echo "$(FAIL)"; exit 1; }
  41 +
  42 +recv:
  43 + $(CLEAR)
  44 + @echo "Baixando atualizacao de @(URL)..."
  45 + @exit
  46 +
  47 +send:
  48 + $(CLEAR)
  49 + @echo "Baixando atualizacao do repositorio @(URL)..."
  50 + @exit
  51 + @git pull "$(DONE)" || { echo " $(FAIL)"; exit 1; }
... ...
controller.py
... ... @@ -0,0 +1,21 @@
  1 +# -*- coding: UTF-8 -*-
  2 +
  3 +from os import getcwd
  4 +from subprocess import call
  5 +from sys import argv, path
  6 +
  7 +path.append(getcwd())
  8 +
  9 +from pyutil import printStackTrace
  10 +
  11 +blend = "avatar_Hozana_wikiLibras.blend"
  12 +main = "libras.py"
  13 +
  14 +if (len(argv) > 1):
  15 + try:
  16 + call(["blender", "-b", blend, "-P", main, argv[1]])
  17 + exit(0)
  18 + except:
  19 + printStackTrace(__file__)
  20 +
  21 +exit(1)
... ...
libras.py
1 1 # -*- coding: UTF-8 -*-
2 2  
3 3 # importa modulos do Blender e Python
4   -import bpy
5   -import json
6   -import os
7   -import sys
  4 +import bpy, json
  5 +from os import getcwd
  6 +from sys import argv, path
8 7  
9 8 # insere o diretorio atual no path (permite o acesso aos modulos locais)
10   -sys.path.append(os.getcwd())
  9 +path.append(getcwd())
11 10  
12 11 # importa modulos locais
13   -import util
14   -import moves
  12 +import util, moves
  13 +from pyutil import printStackTrace
15 14  
16 15 # tenta decodificar o argumento JSON recebido
17 16 try:
18   - util.file_rename("./users/4/teste_circular_0001-0083.mp4")
19   - json_input = json.loads(sys.argv[5])
  17 + json_input = json.loads(argv[5])
20 18 except Exception:
21   - util.printStackTrace(__file__)
  19 + printStackTrace(__file__)
22 20 exit(1)
23 21  
24 22 # ajusta as configuraçẽs de renderização
... ... @@ -101,7 +99,7 @@ def configureFace():
101 99 faceConfiguration(json_input["facialExp"], [endFrame/4], util.faceBonesConf)
102 100  
103 101 # Default Pose
104   -print(endFrame)
  102 +print("Total frames: %.3i" % (endFrame))
105 103 poseDefault([1, endFrame + 15], util.allBones)
106 104 configureHands()
107 105 configureFace()
... ...
pyutil.py 0 → 100644
... ... @@ -0,0 +1,33 @@
  1 +# -*- coding: UTF-8 -*-
  2 +
  3 +def printStackTrace(filename):
  4 + from sys import exc_info
  5 + from os.path import basename
  6 + print("\n[Exception begin]\n File: %s\n Name: %s\n Line: %s\n Type: %s\n Message: %s\n[Exception end]\n" % (
  7 + basename(filename), # basename(exc_info()[2].tb_frame.f_code.co_filename),
  8 + exc_info()[2].tb_frame.f_code.co_name,
  9 + exc_info()[2].tb_lineno,
  10 + exc_info()[0].__name__,
  11 + exc_info()[1],
  12 + )
  13 + )
  14 +
  15 +def file_rename(filename, fromfile):
  16 + from shutil import move
  17 + newFilename = ""
  18 + isValidChar = True
  19 + for char in reversed(filename):
  20 + if (isValidChar == True):
  21 + newFilename += char
  22 + if (char == '_'):
  23 + isValidChar = True
  24 + elif (char == '.'):
  25 + isValidChar = False
  26 + if (len(filename) != len(newFilename)):
  27 + try:
  28 + move(filename, newFilename[::-1])
  29 + return 1
  30 + except Exception as e:
  31 + printStackTrace(fromfile)
  32 + return 0
  33 + return 0
... ...
util.py
... ... @@ -2,8 +2,6 @@
2 2  
3 3 import bpy
4 4 import math
5   -import sys
6   -import os
7 5  
8 6 armature = bpy.context.scene.objects.get('Armature.001')
9 7  
... ... @@ -21,16 +19,6 @@ faceBonesConf =[15, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 47]
21 19 # Vetor com indices de todos os bones
22 20 allBones = list(range(len(armature.pose.bones)))
23 21  
24   -def printStackTrace(filename):
25   - print("\n[Exception]\n File: %s\n Name: %s\n Line: %s\n Type: %s\n Message: %s\n[Exception]\n" % (
26   - os.path.basename(filename), # os.path.basename(sys.exc_info()[2].tb_frame.f_code.co_filename),
27   - sys.exc_info()[2].tb_frame.f_code.co_name,
28   - sys.exc_info()[2].tb_lineno,
29   - sys.exc_info()[0].__name__,
30   - sys.exc_info()[1],
31   - )
32   - )
33   -
34 22 # Função que limpa todos os keyframes e define a quantidade de frames
35 23 def erase_all_keyframes():
36 24 for i in bpy.data.objects:
... ... @@ -49,33 +37,13 @@ def outconf():
49 37 bpy.context.scene.render.ffmpeg.codec = 'H264'
50 38 # bpy.context.scene.render.filepath = '/tmp/'
51 39  
52   -def file_rename(filename):
53   - from shutil import move
54   - newFilename = ""
55   - isValidChar = True
56   - for char in reversed(filename):
57   - if (isValidChar == True):
58   - newFilename += char
59   - if (char == '_'):
60   - isValidChar = True
61   - elif (char == '.'):
62   - isValidChar = False
63   - if (len(filename) != len(newFilename)):
64   - try:
65   - move(filename, newFilename[::-1])
66   - return 1
67   - except Exception as e:
68   - printStackTrace(__file__)
69   - return 0
70   - return 0
71   -
72 40 def render_sign(userId, signName, beginFrame, endFrame):
73 41 bpy.context.scene.render.filepath = "//users//"+ str(userId)+ "//"+ signName + "_"
74 42 bpy.context.scene.frame_start = beginFrame
75 43 bpy.context.scene.frame_end = endFrame
76 44 outFilename = (bpy.context.scene.render.filepath + "%0.4i-%0.4i.mp4" % (bpy.context.scene.frame_start, bpy.context.scene.frame_end))
77 45 bpy.ops.render.render(animation = True, write_still = False, layer = "", scene = "")
78   - file_rename(outFilename)
  46 + file_rename(outFilename, __file__)
79 47 bpy.ops.wm.quit_blender()
80 48  
81 49 # Função que recupera o frame final do movimento
... ...