Blender (jusqu'à 2.49)
Python
Copier les positions imposés par le parent 
vers  un bloc ipo 
    Début   Index
précédentScript Python
Script Python Suivant

Interface en popup:

 Ce script crée des courbes ipo a partir  des mouvements effectués par l'objet sélectionné quand il est déplacé par les mouvements de l'objet parent.Une fenêtre de type menu popup permet de choisir l'image de de'part et de fin de l'animation.  A' partir de ces informations, le script force l'affichage des frames/images avec la mise à' jour des positions respectives des objets de la scène pour récupérer les  matrices de transformations géométriques globales qui sont indépendante de toute forme de  parenté..
# -*- coding: latin-1 -*-
#------------------------------
# Copie des mouvements imposés par le parent 
# vers une ipo 
# (c) jmsoler 25/12/2007
#------------------------------

import Blender
from Blender import Scene,Object, Ipo, BezTriple, Mathutils

endframe = Blender.Get('endframe')
staframe = Blender.Get('staframe')

SF = Blender.Draw.Create(staframe)
EF = Blender.Draw.Create(endframe)

block = []

block.append(("startFrame: ", SF, staframe, endframe))
block.append(("EndFrame: ", EF, staframe, endframe))

retval = Blender.Draw.PupBlock("Track 2 Ipo", block)

if retval :
 POSLIST=[]
 OBJ=Scene.getCurrent().getActiveObject()
 IPO=Ipo.New('Object', 'ObIpo')
 IPO.addCurve('RotX')
 IPO.addCurve('RotY')
 IPO.addCurve('RotZ')
 IPO.addCurve('LocX')
 IPO.addCurve('LocY')
 IPO.addCurve('LocZ')
 

 for f in range(SF.val,EF.val) :
  Blender.Set('curframe',f)
  time= Blender.Get('curtime')
  MATRIX=OBJ.getMatrix()
  EULER=MATRIX.toEuler()
  POSLIST.append([time,EULER,MATRIX[3][:]])
  print MATRIX[3]

 if POSLIST :
  for P in POSLIST :
   ipoX = IPO[Ipo.OB_ROTX] 
   point=BezTriple.New()
   point.pt=(P[0], P[1][0]/10.0)
   point.handleTypes=[1,1]
   ipoX.append(point)

   ipoY = IPO[Ipo.OB_ROTY]
   point=BezTriple.New()
   point.pt=(P[0], P[1][1]/10.0)
   point.handleTypes=[1,1]
   ipoY.append(point)

   ipoZ = IPO[Ipo.OB_ROTZ]
   point=BezTriple.New()
   point.pt=(P[0], P[1][2]/10.0)
   point.handleTypes=[1,1]
   ipoZ.append(point)

   ipoLX = IPO[Ipo.OB_LOCX]
   point=BezTriple.New()
   point.pt=(P[0], P[2][0])
   point.handleTypes=[1,1]
   ipoLX.append(point)

   ipoLY = IPO[Ipo.OB_LOCY]
   point=BezTriple.New()
   point.pt=(P[0], P[2][1])
   point.handleTypes=[1,1]
   ipoLY.append(point)

   ipoLZ = IPO[Ipo.OB_LOCZ]
   point=BezTriple.New()
   point.pt=(P[0], P[2][2])
   point.handleTypes=[1,1]
   ipoLZ.append(point)

 OBJ.setIpo(IPO)

 

précédentScript Python
 Script Python Suivant
Vers le  Haut de page

Les questions concernant cette page  peuvent être posées sur  :
 news://news.zoo-logique.org/3D.Blender

Livre en français
Blender : apprenez, pratiquez, Créez, livre, Ed. Campus Press, coll. Starter Kit
Blender Starter Kit

Forum
FAQ
Lexique
Didacticiels
Compilations
Blender2KT
Débuter
Modelage
Blender python
Materiaux
Lumière
Animation
API python (eng)
Archives nzn
Statistiques
Doc flash Sculptris
Galerie Sculptris

mon site de démos sur youtube