Commit bc03b22e4fa9ed5b9f5df6cf234b2a96bbda4267
1 parent
bbc5cf21
Exists in
master
Atualiza controller
Showing
5 changed files
with
109 additions
and
59 deletions
Show diff stats
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() | ... | ... |
... | ... | @@ -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 | ... | ... |