2012-01-14 17 views
10

Sto cercando un semplice script per spostare una videocamera in Blender 2.61 con Python. Ho pensato che sarebbe stato un compito facile, ma l'oggetto Camera non ha proprietà come loc o qualcosa di simile.Come spostare una videocamera in Blender 2.61 con Python

Ho trovato solo script in linea per Blender 2.49 ma non funzionano più a causa delle immense modifiche API con Blender 2.5.

Apprezzerei qualsiasi suggerimento.

risposta

6

A friendly user on reddit A mi ha indicato una soluzione corretta: il trucco è quello di recuperare la fotocamera come Object, non come Camera. In questo modo, è possibile impostare la posizione tramite il modo standard e impostare i fotogrammi chiave.

Se si desidera impostare oggetti specifici Camera, è necessario recuperarlo tramite 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 risposta di furtelwart è stata abbastanza utile. Ho fatto ancora un po 'di scavo, così puoi anche impostare altre proprietà molto utili per quanto riguarda la fotocamera e il rendering.

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 

Sto usando questo script per rendere il rendering in batch. Puoi verificarlo qui: http://code.google.com/p/encuadro/source/browse/renders/marker/model/marker_a4.py

Sarà migliorato in seguito per prendere gli argomenti della riga di comando. Sono nuovo di Python e Blender quindi questo può essere un po 'amatoriale ma funziona.

+0

Si prega di controllare la mia domanda recente per gli argomenti della riga di comando nello script python poiché ho qualche problema lì. Forse puoi aiutare. Grazie! http://stackoverflow.com/questions/10667314/python-script-with-arguments-for-command-line-blender – roho

+0

Questo è stato utile; grazie. – Clay

Problemi correlati