From e3816f8975e438010030ef3baccc1a827d7966b7 Mon Sep 17 00:00:00 2001 From: gtaaas Date: Mon, 2 Mar 2015 11:56:25 -0300 Subject: [PATCH] Adiciona movimento Retilineo --- libras.py | 47 ++++++++++++++++++++++++++--------------------- moves.py | 14 +++++++------- 2 files changed, 33 insertions(+), 28 deletions(-) diff --git a/libras.py b/libras.py index d024062..7ed19c0 100644 --- a/libras.py +++ b/libras.py @@ -3,8 +3,6 @@ # importa modulos do Python import sys import os - - # insere o diretorio atual no path # permite que o código seja executado de qualquer diretório, possibilitando acesso aos modulos locais sys.path.append(os.getcwd()) @@ -12,7 +10,6 @@ sys.path.append(os.getcwd()) # importa modulos nativos do Blender e Python import bpy import json - # importa modulos locais import util import moves @@ -34,6 +31,8 @@ util.outconf() # define a posição dos keyframes hands_default_frames = [15,18] +# define a posição dos keyframes +hands_frames_retilineo = [30,33] # Carrega o objeto presente no avatar armature = bpy.context.scene.objects.get('Armature.001') @@ -70,35 +69,42 @@ def faceConfiguration(handParam, positionFrames, bones): def get_endFrame(): endsFrame = [18] if(json_input["rightHand"] != []): - if(json_input["rightHand"][0] == "circular" or json_input["rightHand"][0] == "semicircular"): - endsFrame.append(int(json_input["rightHand"][4]*8*5+15)) + if(json_input["rightHand"][0] == "circular"): + endsFrame.append(int(json_input["rightHand"][4]*8*5+18)) + elif(json_input["rightHand"][0] == "semicircular"): + endsFrame.append(int(json_input["rightHand"][4]*5*5+18)) + elif(json_input["rightHand"][0] == "retilineo"): + endsFrame.append(max(hands_frames_retilineo)) if(json_input["leftHand"] != []): - if(json_input["leftHand"][0] == "circular" or json_input["leftHand"][0] == "semicircular"): - endsFrame.append(int(json_input["leftHand"][4]*8*5+15)) + if(json_input["leftHand"][0] == "circular"): + endsFrame.append(int(json_input["leftHand"][4]*8*5+18)) + elif(json_input["leftHand"][0] == "semicircular"): + endsFrame.append(int(json_input["rightHand"][4]*5*5+18)) + elif(json_input["rightHand"][0] == "retilineo"): + endsFrame.append(max(hands_frames_retilineo)) return(max(endsFrame)) initialFrame, endFrame = 15, get_endFrame() -def circular_or_semiCircular(pose, orientation, direction, radius, laps, intensity = 10, initialFrame = 18): +def circular_or_semiCircular(pose, orientation, direction, radius, laps, intensity = 5, initialFrame = 18, turn = None): center = pose.location.x, pose.location.y, pose.location.z if(orientation == 'perpendicular'): if(direction == 'horario'): - endFrame = moves.locationCircular(center, radius, 1, 0, 2, pose, 0, laps, intensity, initialFrame) + endFrame = moves.locationCircular(center, radius, 1, 0, 2, pose, 0, laps, intensity, initialFrame,turn) else: - endFrame = moves.locationCircular(center, radius, 0, 1, 2, pose, 0, laps, intensity, initialFrame) + endFrame = moves.locationCircular(center, radius, 0, 1, 2, pose, 0, laps, intensity, initialFrame,turn) elif(orientation == 'paralelo'): if(direction == 'horario'): - endFrame = moves.locationCircular(center, radius, 1, 2, 0, pose, 0, laps, intensity, initialFrame) + endFrame = moves.locationCircular(center, radius, 1, 2, 0, pose, 0, laps, intensity, initialFrame,turn) else: - endFrame = moves.locationCircular(center, radius, 2, 1, 0, pose, 0, laps, intensity, initialFrame) + endFrame = moves.locationCircular(center, radius, 2, 1, 0, pose, 0, laps, intensity, initialFrame,turn) elif(orientation == 'plano'): if(direction == 'horario'): - endFrame = moves.locationCircular(center, radius, 2, 0, 1, pose, 0, laps, intensity, initialFrame) + endFrame = moves.locationCircular(center, radius, 2, 0, 1, pose, 0, laps, intensity, initialFrame,turn) else: - endFrame = moves.locationCircular(center, radius, 0, 2, 1, pose, 0, laps, intensity, initialFrame) + endFrame = moves.locationCircular(center, radius, 0, 2, 1, pose, 0, laps, intensity, initialFrame,turn) return endFrame - #------------------ Configurações------------------------------ #Função que inicia a configuração de ambas as mãos @@ -123,8 +129,9 @@ def configureHands(): endFrame = circular_or_semiCircular(pose, orientation, direction, radius, laps, 5) generationConfigurations(actions[i], json_input[hands[i]][-3:], [endFrame], bones_[i]) elif(json_input[hands[i]][0] == "retilineo"): - pass - + generationConfigurations(actions[i], json_input[hands[i]][-6:-3], hands_default_frames, bones_[i]) + generationConfigurations(actions[i], json_input[hands[i]][-3:],hands_frames_retilineo, bones_[i]) + # Função que inicia a configuração da face def configureFace(): global endFrame @@ -133,11 +140,9 @@ def configureFace(): faceConfiguration(json_input["facialExp"], [endFrame/4], util.faceBonesConf) # Default Pose - +print(endFrame) poseDefault([1, endFrame+15], util.allBones) configureHands() configureFace() - - -util.render_sign(json_input["userId"], json_input["signName"], 1, endFrame + 25) +util.render_sign(json_input["userId"], json_input["signName"], 1, endFrame + 25) \ No newline at end of file diff --git a/moves.py b/moves.py index dc47ab2..90c3a80 100644 --- a/moves.py +++ b/moves.py @@ -1,7 +1,7 @@ # -*- coding: UTF-8 -*- import math -def locationCircular(center, radius, i_axis, j_axis, k_axis, pose, initialPosition, laps, frameJump = 10, initialFrame = 18, turn = None): +def locationCircular(center, radius, i_axis, j_axis, k_axis, pose, initialPosition, laps, frameJump = 5, initialFrame = 18, turn = None): sqrt22 = radius * (math.sqrt(2) / 2) rad2 = (radius/2) currentFrame = initialFrame @@ -70,8 +70,8 @@ def locationCircular(center, radius, i_axis, j_axis, k_axis, pose, initialPositi pose.location[k_axis] = center[k_axis] + rad2 elif(turn == -1): pose.location[i_axis] = center[i_axis] - sqrt22 - pose.location[j_axis] = center[j_axis] - ray2 - pose.location[k_axis] = center[k_axis] - ray2 + pose.location[j_axis] = center[j_axis] - rad2 + pose.location[k_axis] = center[k_axis] - rad2 pose.keyframe_insert(frame = currentFrame, index = -1, data_path = 'location') currentFrame += frameJump @@ -94,12 +94,12 @@ def locationCircular(center, radius, i_axis, j_axis, k_axis, pose, initialPositi pose.location[k_axis] = center[k_axis] if(turn == 1): pose.location[i_axis] = center[i_axis] + sqrt22 - pose.location[j_axis] = center[j_axis] - ray2 - pose.location[k_axis] = center[k_axis] + ray2 + pose.location[j_axis] = center[j_axis] - rad2 + pose.location[k_axis] = center[k_axis] + rad2 elif(turn == -1): pose.location[i_axis] = center[i_axis] + sqrt22 - pose.location[j_axis] = center[j_axis] - ray2 - pose.location[k_axis] = center[k_axis] - ray2 + pose.location[j_axis] = center[j_axis] - rad2 + pose.location[k_axis] = center[k_axis] - rad2 pose.keyframe_insert(frame = currentFrame, index = -1, data_path = 'location') currentFrame += frameJump currentFrame -= frameJump -- libgit2 0.21.2