(E) que se mueve a lo largo de una trayectoria basada osg ------ programa de desarrollo dimensional pitón

En la sección anterior, demostramos cómo actualizar el estado de los nodos, que es las habilidades básicas de la animación. En esta sección, nos fijamos en un ejemplo un poco más complicado ------ hacer que el objeto a lo largo de una trayectoria fija.

En osg de modo que un objeto que se mueve a lo largo de una trayectoria fija, será utilizado varias clases importantes;

1. osg :: AnimationPath

2. osg :: AnimationPathCallback

Estas dos clases se utilizan generalmente en combinación. En donde osg :: AnimationPath define el camino, el camino se compone generalmente de muchos puntos de control. AnimationPathCallback NodeCallback es una subclase del modelo se utiliza para actualizar la posición.

El ejemplo de código reescrito provienen de osg c ++ versión de osganimation.

Primero vamos a definir un camino

1  def createAnimationPath (centro, radio, LOOPTIME):
 2      # configurar la ruta de animación 
3      animationPath = osg.AnimationPath ()
 4      animationPath.setLoopMode (osg.LOOP)
 5      numSamples = 40
 6      guiñada = 0.0
 7      yaw_delta = 2,0 * osg. PI / (numSamples-1.0 )
 8      rollo = osg.inDegrees (30,0 )
 9      tiempo = 0,0
 10      TIME_DELTA = LOOPTIME / (numSamples)
 11      para i en gama (numSamples):
 12          #posición = Centro + [Math.sin (guiñada) * radio, math.cos (guiñada) * radio, 0,0] 
13          delta = [math.sin (guiñada) * radio, math.cos (guiñada) * radio, 0,0 ]
 14          posición = [x + y para x, y en zip (centro, delta)]
 15          Q1 = osg.Quat (ángulo = roll, eje = [0.0,1.0,0.0 ])
 16          q2 = osg.Quat (ángulo = - (guiñada + osg.inDegrees (90,0)), eje = (0.0,0.0,1.0 ))
 17          de rotación = q1.multiply (q2)
 18          animationPath.insert (tiempo, osg.ControlPoint (posición = posición, rotación = rotación))
 19          de guiñada = guiñada + yaw_delta
 20         tiempo = tiempo + TIME_DELTA
 21      de retorno animationPath

Cuaternión es una descripción de datos muy importante de la pose objeto, el conocimiento relevante de referencia puede ser geométricamente vista en perspectiva del libro. El código anterior sólo muestra cómo definir un camino con un pitón. El código completo se puede consultar la página web de código abierto

Ejemplos https://github.com/enigma1997/pyosg proyecto. Aquí está el resultado final.

Supongo que te gusta

Origin www.cnblogs.com/enigma19971/p/12613437.html
Recomendado
Clasificación