2012-01-14 17 views
10

Estoy buscando un script simple para mover una cámara en Blender 2.61 con Python. Pensé que sería una tarea fácil, pero el objeto Cámara no tiene propiedades como loc o algo similar.Cómo mover una cámara en Blender 2.61 con Python

Solo encontré scripts en línea para Blender 2.49 pero ya no funcionan debido a los inmensos cambios de API con Blender 2.5.

Agradecería cualquier pista.

Respuesta

6

A friendly user on reddit me señaló una solución correcta: el truco es recuperar la cámara como Object, no como Camera. De esta forma, puede establecer la ubicación de la manera estándar y establecer fotogramas clave.

Si desea establecer Camera objetos específicos, tiene que recuperarlo a través de bpy.data.cameras.

import bpy 

if(len(bpy.data.cameras) == 1): 
    obj = bpy.data.objects['Camera'] # bpy.types.Camera 
    obj.location.x = 0.0 
    obj.location.y = -10.0 
    obj.location.z = 10.0 
    obj.keyframe_insert(data_path="location", frame=10.0) 
    obj.location.x = 10.0 
    obj.location.y = 0.0 
    obj.location.z = 5.0 
    obj.keyframe_insert(data_path="location", frame=20.0) 
10

La respuesta de furtelwart fue bastante útil. Hice un poco más de excavación para que también pueda establecer otras propiedades muy útiles con respecto a la cámara y el renderizado.

import bpy 

tx = 0.0 
ty = 0.0 
tz = 80.0 

rx = 0.0 
ry = 0.0 
rz = 0.0 

fov = 50.0 

pi = 3.14159265 

scene = bpy.data.scenes["Scene"] 

# Set render resolution 
scene.render.resolution_x = 480 
scene.render.resolution_y = 359 

# Set camera fov in degrees 
scene.camera.data.angle = fov*(pi/180.0) 

# Set camera rotation in euler angles 
scene.camera.rotation_mode = 'XYZ' 
scene.camera.rotation_euler[0] = rx*(pi/180.0) 
scene.camera.rotation_euler[1] = ry*(pi/180.0) 
scene.camera.rotation_euler[2] = rz*(pi/180.0) 

# Set camera translation 
scene.camera.location.x = tx 
scene.camera.location.y = ty 
scene.camera.location.z = tz 

Estoy usando esta secuencia de comandos para hacer la representación por lotes. Puede verificarlo aquí: http://code.google.com/p/encuadro/source/browse/renders/marker/model/marker_a4.py

Se mejorará más tarde para tomar argumentos de la línea de comandos. Soy nuevo en Python y Blender así que esto puede ser un poco amateur pero funciona.

+0

Consulte mi pregunta reciente sobre los argumentos de la línea de comando en el script de python, ya que estoy teniendo problemas allí. Quizás puedas ayudar. ¡Gracias! http://stackoverflow.com/questions/10667314/python-script-with-arguments-for-command-line-blender – roho

+0

Esto fue útil; gracias. – Clay

Cuestiones relacionadas