blender/release/scripts/blenderLipSynchro.py
Campbell Barton b9c66e88ea added encoding "# coding: utf-8" to the headers of scripts that python would not run with execfile('....'), python would also riase the error, though there is no practicle use
for running these scripts outside blender.

The error looked like this.
SyntaxError: Non-ASCII character '\xe4' in file ./3ds_export.py on line 10, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
2008-05-11 12:41:12 +00:00

730 lines
22 KiB
Python
Raw Blame History

#!BPY
# coding: utf-8
"""
Name: 'BlenderLipSynchro'
Blender: 242
Group: 'Animation'
Tooltip: 'Import phonemes from Papagayo or JLipSync for lip synchronization'
"""
__author__ = "Dienben: Benoit Foucque dienben_mail@yahoo.fr"
__url__ = ["blenderLipSynchro Blog, http://blenderlipsynchro.blogspot.com/",
"Papagayo (Python), http://www.lostmarble.com/papagayo/index.shtml",
"JLipSync (Java), http://jlipsync.sourceforge.net/"]
__version__ = "2.0"
__bpydoc__ = """\
Description:
This script imports Voice Export made by Papagayo or JLipSync and maps the export with your shapes.
Usage:
Import a Papagayo or JLipSync voice export file and link it with your shapes.
Note:<br>
- Naturally, you need files exported from one of the supported lip synching
programs. Check their sites to learn more and download them.
"""
# --------------------------------------------------------------------------
# BlenderLipSynchro
# --------------------------------------------------------------------------
# ***** BEGIN GPL LICENSE BLOCK *****
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
# ***** END GPL LICENCE BLOCK *****
# --------------------------------------------------------------------------
#il y a 3 etapes
#la deuxieme on charge le dictionnaire de correspondance
#la troisieme on fait le choix des correpondance
#la quatrieme on construit les cles a partir du fichiers frame
#there are 3 stages
#the second one load the mapping dictionnary
#the tird make the mapping
#the fourth make the key in the IPO Curve
#voici mes differents imports
#the imports
import os
import Blender
from Blender import Ipo
from Blender.Draw import *
from Blender.BGL import *
from Blender.sys import basename
#ici commencent mes fonctions
#here begin my functions
#cette fonction trace l'interface graphique
#this functions draw the User interface
def trace():
#voici mes variables pouvant etre modifie
#my variables
global nbr_phoneme, mon_fichier_dico
global let01, let02, let03, let04,let05, let06, let07, let08, let09, let10
global let11, let12, let13, let14,let15, let16, let17, let18, let19, let20
global let21, let22, let23, let24
global let01selectkey,let02selectkey,let03selectkey,let04selectkey,let05selectkey
global let06selectkey,let07selectkey,let08selectkey,let09selectkey,let10selectkey,let11selectkey
global let12selectkey,let13selectkey,let14selectkey,let15selectkey,let16selectkey,let17selectkey
global let18selectkey,let19selectkey,let20selectkey,let21selectkey,let22selectkey,let23selectkey
global let24selectkey
glClearColor(0.4,0.5,0.6 ,0.0)
glClear(GL_COLOR_BUFFER_BIT)
glColor3d(1,1,1)
glRasterPos2i(87, 375)
Text("Blendersynchro V 2.0")
glColor3d(1,1,1)
glRasterPos2i(84, 360)
Text("Programming: Dienben")
glColor3d(0,0,0)
glRasterPos2i(13, 342)
Text("Lip Synchronization Tool")
glColor3d(0,0,0)
glRasterPos2i(13, 326)
Text("Thanks to Chris Clawson and Liubomir Kovatchev")
glColor3d(1,1,1)
glRasterPos2i(5, 320)
Text("_______________________________________________________")
glColor3d(0,0,0)
glRasterPos2i(6, 318)
Text("_______________________________________________________")
if (etape==1):
#cette etape permet de choisi la correspondance entre les phonemes et les cles
#this stage offer the possibility to choose the mapping between phonems and shapes
glColor3d(1,1,1)
glRasterPos2i(140, 300)
Text("Objet: "+Blender.Object.GetSelected()[0].getName() )
glColor3d(1,1,1)
glRasterPos2i(5, 215)
Text("Assign phonems to shapes:")
#on mesure la taille de la liste de phonemes
#this is the lenght of the phonem list
nbr_phoneme=len(liste_phoneme)
#on dessine les listes de choix
#we draw the choice list
#
if (nbr_phoneme > 0):
let01 = String(" ", 4, 5, 185, 30, 16, liste_phoneme[0], 3)
glColor3d(0,0,0)
glRasterPos2i(40, 188)
Text("=")
let01selectkey = Menu(key_menu, 50, 50, 185, 70, 16, let01selectkey.val)
#
if (nbr_phoneme > 1):
let02 = String(" ", 4, 150, 185, 30, 16, liste_phoneme[1], 2)
glColor3d(0,0,0)
glRasterPos2i(185, 188)
Text("=")
let02selectkey = Menu(key_menu, 51, 195, 185, 70, 16, let02selectkey.val)
#
if (nbr_phoneme > 2):
let03 = String(" ", 4, 5, 165, 30, 16, liste_phoneme[2], 2)
glColor3d(0,0,0)
glRasterPos2i(40, 168)
Text("=")
let03selectkey = Menu(key_menu, 52, 50, 165, 70, 16, let03selectkey.val)
#
if (nbr_phoneme > 3):
let04 = String(" ", 4, 150, 165, 30, 16, liste_phoneme[3], 2)
glColor3d(0,0,0)
glRasterPos2i(185, 168)
Text("=")
let04selectkey = Menu(key_menu, 53, 195, 165, 70, 16, let04selectkey.val)
#
if (nbr_phoneme > 4):
let05 = String(" ", 4, 5, 145, 30, 16, liste_phoneme[4], 2)
glColor3d(0,0,0)
glRasterPos2i(40, 148)
Text("=")
let05selectkey = Menu(key_menu, 54, 50, 145, 70, 16, let05selectkey.val)
#
if (nbr_phoneme > 5):
let06 = String(" ", 4, 150, 145, 30, 16, liste_phoneme[5], 2)
glColor3d(0,0,0)
glRasterPos2i(185, 148)
Text("=")
let06selectkey = Menu(key_menu, 55, 195, 145, 70, 16, let06selectkey.val)
#
if (nbr_phoneme > 6):
let07 = String(" ", 4, 5, 125, 30, 16, liste_phoneme[6], 2)
glColor3d(0,0,0)
glRasterPos2i(40, 128)
Text("=")
let07selectkey = Menu(key_menu, 56, 50, 125, 70, 16, let07selectkey.val)
#
if (nbr_phoneme > 7):
let08 = String(" ", 4, 150, 125, 30, 16, liste_phoneme[7], 2)
glColor3d(0,0,0)
glRasterPos2i(185, 128)
Text("=")
let08selectkey = Menu(key_menu, 57, 195, 125, 70, 16,let08selectkey.val)
#
if (nbr_phoneme > 8):
let09 = String(" ", 4, 5, 105, 30, 16, liste_phoneme[8], 2)
glColor3d(0,0,0)
glRasterPos2i(40, 108)
Text("=")
let09selectkey = Menu(key_menu, 58, 50, 105, 70, 16,let09selectkey.val)
#
if (nbr_phoneme > 9):
let10 = String(" ", 4, 150, 105, 30, 16, liste_phoneme[9], 2)
glColor3d(0,0,0)
glRasterPos2i(185, 108)
Text("=")
let10selectkey = Menu(key_menu, 59, 195, 105, 70, 16, let10selectkey.val)
#
if (nbr_phoneme > 10):
let11 = String(" ", 4, 5, 85, 30, 16, liste_phoneme[10], 2)
glColor3d(0,0,0)
glRasterPos2i(40, 88)
Text("=")
let11selectkey = Menu(key_menu, 60, 50, 85, 70, 16, let11selectkey.val)
#
if (nbr_phoneme > 11):
let12 = String(" ", 4, 150, 85, 30, 16, liste_phoneme[11], 2)
glColor3d(0,0,0)
Text("=")
let12selectkey = Menu(key_menu, 61, 195, 85, 70, 16, let12selectkey.val)
#
if (nbr_phoneme > 12):
let13 = String(" ", 4, 5, 65, 30, 16, liste_phoneme[12], 2)
glColor3d(0,0,0)
glRasterPos2i(40, 68)
Text("=")
let13selectkey = Menu(key_menu, 62, 50, 65, 70, 16, let13selectkey.val)
#
if (nbr_phoneme > 13):
let14 = String(" ", 4, 150, 65, 30, 16, liste_phoneme[13], 2)
glColor3d(0,0,0)
glRasterPos2i(185, 68)
Text("=")
let14selectkey = Menu(key_menu, 63, 195, 65, 70, 16, let14selectkey.val)
#
if (nbr_phoneme > 14):
let15 = String(" ", 4, 5, 45, 30, 16, liste_phoneme[14], 2)
glColor3d(0,0,0)
glRasterPos2i(40, 48)
Text("=")
let15selectkey = Menu(key_menu, 64, 50, 45, 70, 16, let15selectkey.val)
#
if (nbr_phoneme > 15):
let16 = String(" ", 4, 150, 45, 30, 16, liste_phoneme[15], 2)
glColor3d(0,0,0)
glRasterPos2i(185, 48)
Text("=")
let16selectkey = Menu(key_menu, 65, 195, 45, 70, 16, let16selectkey.val)
#
if (nbr_phoneme > 16):
let17 = String(" ", 4, 295, 185, 30, 16, liste_phoneme[16], 2)
glColor3d(0,0,0)
glRasterPos2i(330, 188)
Text("=")
let17selectkey = Menu(key_menu, 66, 340, 185, 70, 16, let17selectkey.val)
#
if (nbr_phoneme > 17):
let18 = String(" ", 4, 440, 185, 70, 16, liste_phoneme[17], 8)
glColor3d(0,0,0)
glRasterPos2i(515, 188)
Text("=")
let18selectkey = Menu(key_menu, 67, 525, 185, 70, 16, let18selectkey.val)
#
if (nbr_phoneme > 18):
let19 = String(" ", 4, 295, 165, 30, 16, liste_phoneme[18], 2)
glColor3d(0,0,0)
glRasterPos2i(330, 168)
Text("=")
let19selectkey = Menu(key_menu, 68, 340, 165, 70, 16, let19selectkey.val)
#
if (nbr_phoneme > 19):
let20 = String(" ", 4, 440, 165, 70, 16, liste_phoneme[19], 8)
glColor3d(0,0,0)
glRasterPos2i(515, 168)
Text("=")
let20selectkey = Menu(key_menu, 69, 525, 165, 70, 16, let20selectkey.val)
#
if (nbr_phoneme > 20):
let21 = String(" ", 4, 295, 145, 30, 16, liste_phoneme[20], 2)
glColor3d(0,0,0)
glRasterPos2i(330, 148)
Text("=")
let21selectkey = Menu(key_menu, 70, 340, 145, 70, 16, let21selectkey.val)
#
if (nbr_phoneme > 21):
let22 = String(" ", 4, 440, 145, 70, 16, liste_phoneme[21], 8)
glColor3d(0,0,0)
glRasterPos2i(515, 148)
Text("=")
let22selectkey = Menu(key_menu, 71, 525, 145, 70, 16, let22selectkey.val)
#
if (nbr_phoneme > 22):
let23 = String(" ", 4, 295, 125, 30, 16, liste_phoneme[22], 2)
glColor3d(0,0,0)
glRasterPos2i(330, 128)
Text("=")
let23selectkey = Menu(key_menu, 72, 340, 125, 70, 16,let23selectkey.val)
#
if (nbr_phoneme > 23):
let24 = String(" ", 4, 440, 125, 70, 16, liste_phoneme[23], 8)
glColor3d(0,0,0)
glRasterPos2i(515, 128)
Text("=")
let24selectkey = Menu(key_menu, 73, 525, 125, 70, 16, let24selectkey.val)
#
if (nbr_phoneme > 24):
let25 = String(" ", 4, 295, 105, 30, 16, liste_phoneme[24], 2)
glColor3d(0,0,0)
glRasterPos2i(330, 108)
Text("=")
let25selectkey = Menu(key_menu, 74, 340, 105, 70, 16, let25selectkey.val)
#
if (nbr_phoneme > 25):
let26 = String(" ", 4, 440, 105, 70, 16, liste_phoneme[25], 8)
glColor3d(0,0,0)
glRasterPos2i(515, 108)
Text("=")
let26selectkey = Menu(key_menu, 75, 525, 105, 70, 16,let26selectkey.val)
#
if (nbr_phoneme > 26):
let27 = String(" ", 4, 295, 85, 30, 16, liste_phoneme[26], 2)
glColor3d(0,0,0)
glRasterPos2i(330, 88)
Text("=")
let27selectkey = Menu(key_menu, 76, 340, 85, 70, 16, let27selectkey.val)
#
if (nbr_phoneme > 27):
let28 = String(" ", 4, 440, 85, 70, 16, liste_phoneme[27], 8)
glColor3d(0,0,0)
glRasterPos2i(515, 88)
Text("=")
let28selectkey = Menu(key_menu, 77, 525, 85, 70, 16,let28selectkey.val)
#
if (nbr_phoneme > 28):
let29 = String(" ", 4, 295, 65, 30, 16, liste_phoneme[28], 2)
glColor3d(0,0,0)
glRasterPos2i(330, 68)
Text("=")
let29selectkey = Menu(key_menu, 78, 340, 65, 70, 16, let29selectkey.val)
#
if (nbr_phoneme > 29):
let30 = String(" ", 4, 440, 65, 70, 16, liste_phoneme[29], 8)
glColor3d(0,0,0)
glRasterPos2i(515, 68)
Text("=")
let30selectkey = Menu(key_menu, 79, 525, 65, 70, 16, let30selectkey.val)
#
if (nbr_phoneme > 30):
let31 = String(" ", 4, 295, 45, 30, 16, liste_phoneme[30], 2)
glColor3d(0,0,0)
glRasterPos2i(330, 48)
Text("=")
let31selectkey = Menu(key_menu, 80, 340, 45, 70, 16, let31selectkey.val)
#
if (nbr_phoneme > 31):
let32 = String(" ", 4, 440, 45, 70, 16, liste_phoneme[31], 8)
glColor3d(0,0,0)
glRasterPos2i(515, 48)
Text("=")
let32selectkey = Menu(key_menu, 81, 525, 45, 70, 16, let32selectkey.val)
Button("Go", 3, 155, 5, 145, 22)
if (etape==2):
glColor3d(1,1,1)
glRasterPos2i(125, 200)
Text("Operation Completed")
if (etape==0):
glColor3d(1,1,1)
glRasterPos2i(125, 200)
Text("Please select a Mesh'Object and Create all the IPO Curves for your Shapes")
if (etape==3):
#this stage permits to load a custom dictionnary
load_file_text = "Load File"
if mon_fichier_dico:
Button("Import Loaded File", 2, 5, 5, 145, 22)
glColor3d(1,1,1)
glRasterPos2i(6, 50)
Text("loaded file: %s" % basename(mon_fichier_dico))
load_file_text = "Choose Another File"
Button(load_file_text, 8, 125, 180, 145, 22)
glRasterPos2i(6, 40)
Text("_______________________________________________________")
glColor3d(0,0,0)
glRasterPos2i(6, 38)
Text("_______________________________________________________")
Button("Exit", 1, 305, 5, 80, 22)
#cette fonction sur evenement quite en cas d'ESC
#this functions catch the ESC event and quit
def event(evt,val):
if (evt == ESCKEY and not val): Exit()
#cette fonction gere les evenements
#the event functions
def bevent(evt):
global etape,soft_type,liste_phoneme,dico_phoneme_export
if (evt == 1):
Exit()
elif (evt == 2):
#c'est l'import du dictionnaire
#we create and import the dictionnary
lecture_chaine(mon_fichier_dico,dico_phoneme_export)
construction_dictionnaire_phoneme()
#we change the stage
etape=1
elif (evt == 3):
#c'est l'import
#we import
lecture_chaine(mon_fichier_export,dico_phoneme_export)
construction_dico_correspondance()
construction_lipsynchro()
#on change d'etape
#we change the stage
etape=2
elif (evt == 8):
#we choose the file
Blender.Window.FileSelector(selectionner_fichier,"Select File")
Blender.Redraw()
#cette fonction recupere le nom et le chemin du fichier dictionnaire
#we catch the name and the path of the dictionnary
def selectionner_fichier(filename):
global mon_fichier_dico,mon_fichier_export
mon_fichier_dico=filename
mon_fichier_export=filename
#fonction de lecture de la liste frame phoneme
#we read the frame and phonems
def lecture_chaine(fichier,liste):
mon_fichier=open(fichier)
#je lis la premiere ligne qui contiens la version de moho
#first, we read the moho version
mon_fichier.readline()
#je lis jusqu'a la fin
#then we read until the end of the file
while 1:
ma_ligne=mon_fichier.readline()
if ma_ligne=='':
break
decoup=ma_ligne.split()
liste[decoup[0]]=decoup[1]
print liste
#fonction qui construit la liste dictionnaire simple
#we make the dictionnary
def construction_dictionnaire_phoneme():
global liste_phoneme
index_liste=0
#je transforme mon dictionnaire en list de tulpes
#we transform the list in tulpes
ma_liste=dico_phoneme_export.items()
#je parcours ma liste a la recherche d'elements non existant
#we read the list to find non existing elements
print dico_phoneme
for index in range(len(ma_liste)):
if ma_liste[index][1] not in liste_phoneme:
liste_phoneme[index_liste:index_liste]=[ma_liste[index][1]]
index_liste=index_liste+1
print liste_phoneme
#cette fonction recupere les courbes cible
#this functon catch the IPO curve
def recuperation_courbe():
global key_menu,dico_key
#on recupere le nom des shapes
#we catch the shapes
key=Blender.Object.GetSelected()[0].getData().getKey().getBlocks()
for n in range(len(key)):
#on vire la premi<6D>re cle (en effet basic n'est pas une cle en tant que telle)
#we threw away the basic shapes
if (n>0):
key_menu=key_menu+key[n].name + " %x" + str(n-1) + "|"
dico_key[str(n-1)]=Blender.Object.GetSelected()[0].getData().getKey().getIpo().getCurves()[n-1]
print "dico_key"
print dico_key
print 'end dico_key'
#cette fonction construit un dictionnaire de correspondance entre les phonemes prononces et les cles a utiliser
#we make the dictionnary for the mapping between shapes and phonems
def construction_dico_correspondance():
global dico_correspondance
#je parcours les phonemes
#we read the phonems
if (nbr_phoneme>0):
dico_correspondance[liste_phoneme[0]]=dico_key[str(let01selectkey.val)]
if (nbr_phoneme>1):
dico_correspondance[liste_phoneme[1]]=dico_key[str(let02selectkey.val)]
if (nbr_phoneme>2):
dico_correspondance[liste_phoneme[2]]=dico_key[str(let03selectkey.val)]
if (nbr_phoneme>3):
dico_correspondance[liste_phoneme[3]]=dico_key[str(let04selectkey.val)]
if (nbr_phoneme>4):
dico_correspondance[liste_phoneme[4]]=dico_key[str(let05selectkey.val)]
if (nbr_phoneme>5):
dico_correspondance[liste_phoneme[5]]=dico_key[str(let06selectkey.val)]
if (nbr_phoneme>6):
dico_correspondance[liste_phoneme[6]]=dico_key[str(let07selectkey.val)]
if (nbr_phoneme>7):
dico_correspondance[liste_phoneme[7]]=dico_key[str(let08selectkey.val)]
if (nbr_phoneme>8):
dico_correspondance[liste_phoneme[8]]=dico_key[str(let09selectkey.val)]
if (nbr_phoneme>9):
dico_correspondance[liste_phoneme[9]]=dico_key[str(let10selectkey.val)]
if (nbr_phoneme>10):
dico_correspondance[liste_phoneme[10]]=dico_key[str(let11selectkey.val)]
if (nbr_phoneme>11):
dico_correspondance[liste_phoneme[11]]=dico_key[str(let12selectkey.val)]
if (nbr_phoneme>12):
dico_correspondance[liste_phoneme[12]]=dico_key[str(let13selectkey.val)]
if (nbr_phoneme>13):
dico_correspondance[liste_phoneme[13]]=dico_key[str(let14selectkey.val)]
if (nbr_phoneme>14):
dico_correspondance[liste_phoneme[14]]=dico_key[str(let15selectkey.val)]
if (nbr_phoneme>15):
dico_correspondance[liste_phoneme[15]]=dico_key[str(let16selectkey.val)]
if (nbr_phoneme>16):
dico_correspondance[liste_phoneme[16]]=dico_key[str(let17selectkey.val)]
if (nbr_phoneme>17):
dico_correspondance[liste_phoneme[17]]=dico_key[str(let18selectkey.val)]
if (nbr_phoneme>18):
dico_correspondance[liste_phoneme[18]]=dico_key[str(let19selectkey.val)]
if (nbr_phoneme>19):
dico_correspondance[liste_phoneme[19]]=dico_key[str(let20selectkey.val)]
if (nbr_phoneme>20):
dico_correspondance[liste_phoneme[20]]=dico_key[str(let21selectkey.val)]
if (nbr_phoneme>21):
dico_correspondance[liste_phoneme[21]]=dico_key[str(let22selectkey.val)]
if (nbr_phoneme>22):
dico_correspondance[liste_phoneme[22]]=dico_key[str(let23selectkey.val)]
if (nbr_phoneme>23):
dico_correspondance[liste_phoneme[23]]=dico_key[str(let24selectkey.val)]
if (nbr_phoneme>24):
dico_correspondance[liste_phoneme[24]]=dico_key[str(let25selectkey.val)]
if (nbr_phoneme>25):
dico_correspondance[liste_phoneme[25]]=dico_key[str(let26selectkey.val)]
if (nbr_phoneme>26):
dico_correspondance[liste_phoneme[26]]=dico_key[str(let27selectkey.val)]
if (nbr_phoneme>27):
dico_correspondance[liste_phoneme[27]]=dico_key[str(let28selectkey.val)]
if (nbr_phoneme>28):
dico_correspondance[liste_phoneme[28]]=dico_key[str(let29selectkey.val)]
if (nbr_phoneme>29):
dico_correspondance[liste_phoneme[29]]=dico_key[str(let30selectkey.val)]
if (nbr_phoneme>30):
dico_correspondance[liste_phoneme[30]]=dico_key[str(let31selectkey.val)]
if (nbr_phoneme>31):
dico_correspondance[liste_phoneme[31]]=dico_key[str(let32selectkey.val)]
print dico_correspondance
#cette fonction ajoute un points a la cle donnee a la frame donnee
#we add a point to the IPO curve Target
def ajoute_point(cle,frame,valeur):
cle.setInterpolation('Linear')
cle.append((frame,valeur))
cle.Recalc()
#cette fonction parcours le dictionnaire des frame <20> ajouter et construit les points
#we add all the point to the IPO Curve
def construction_lipsynchro():
print "je construit"
doublet_old=""
#construction de la liste des frame
cpt=0
liste_frame=[]
for frame in dico_phoneme_export:
liste_frame.append(int(frame))
cpt=cpt+1
liste_frame.sort()
print "listeframe"
print liste_frame
print "fini"
for doublet in liste_frame:
ajoute_point(dico_correspondance[dico_phoneme_export[str(doublet)]],doublet,1)
if (doublet_old==""):
ajoute_point(dico_correspondance[dico_phoneme_export[str(doublet)]],(doublet-2),0)
if (doublet_old!=''):
if (dico_correspondance[dico_phoneme_export[str(doublet)]]!=dico_correspondance[dico_phoneme_export[doublet_old]]):
print "doublet:"+str(doublet)
print "doublet old:"+doublet_old
ajoute_point(dico_correspondance[dico_phoneme_export[doublet_old]],(int(doublet_old)+2),0)
ajoute_point(dico_correspondance[dico_phoneme_export[str(doublet)]],(doublet-2),0)
doublet_old=str(doublet)
#end of my functions we begin the execution
#je commence l execution-----------------------------------------------------------------------------------------------
#voici mes variables
#declaration et instanciation
#decleration and instanciation
#voici mon objet de travail
objet_travail=Create(0)
#my soft type
soft_type=1
#voici la liste des phoneme effectivement utilise
#the phonems'list
#liste_phoneme_papagayo=['AI','E','O','U','FV','L','WQ','MBP','etc','rest']
#liste_phoneme_jlipsinch=['A','B','C','Closed','D','E','F','G','I','K','L','M','N','O','P','Q','R','S','SH','T','TH','U','V','W']
liste_phoneme=[]
#voici mon dictionnaire des frames o
dico_phoneme_export = Create(0)
dico_phoneme_export={}
dico_phoneme={}
#voici mes cle
key_menu=""
dico_key={}
#voici mes ipo
dico_bloc={}
iponame = Create(0)
#voici mon dictionnaire de correspondance
dico_correspondance={}
try:
#on verifie est bien une mesh et qu'il a des courbes
if ((Blender.Object.GetSelected()[0].getType()=='Mesh')):
#on verifie que l'objet a bien toute ses Courbes
if (len(Blender.Object.GetSelected()[0].getData().getKey().getBlocks())-1==Blender.Object.GetSelected()[0].getData().getKey().getIpo().getNcurves()):
etape=3
#on lance la creation du dictionnaire
recuperation_courbe()
else:
print "not the good number of IPO Curve"
etape = 0
else:
print "error: bad object Type:"
print Blender.Object.GetSelected()[0].getType()
etape = 0
except:
print 'error: exception'
etape = 0
#voici le fichier dictionnaire
mon_fichier_dico=""
#voici le fichier export pamela
mon_fichier_export=""
let01selectkey = Create(0)
let02selectkey = Create(0)
let03selectkey = Create(0)
let04selectkey = Create(0)
let05selectkey = Create(0)
let06selectkey = Create(0)
let07selectkey = Create(0)
let08selectkey = Create(0)
let09selectkey = Create(0)
let10selectkey = Create(0)
let11selectkey = Create(0)
let12selectkey = Create(0)
let13selectkey = Create(0)
let14selectkey = Create(0)
let15selectkey = Create(0)
let16selectkey = Create(0)
let17selectkey = Create(0)
let18selectkey = Create(0)
let19selectkey = Create(0)
let20selectkey = Create(0)
let21selectkey = Create(0)
let22selectkey = Create(0)
let23selectkey = Create(0)
let24selectkey = Create(0)
Register (trace,event,bevent)