Как переместить камеру в Blender 2.61 с помощью Python - PullRequest
12 голосов
/ 15 января 2012

Я ищу простой скрипт для перемещения камеры в Blender 2.61 с помощью Python. Я думал, что это будет простая задача, но у объекта Camera нет таких свойств, как loc или что-то подобное.

Я нашел только онлайн-скрипты для Blender 2.49, но они больше не работают из-за огромных изменений API в Blender 2.5.

Буду признателен за любые подсказки.

Ответы [ 3 ]

12 голосов
/ 18 мая 2012

ответ Фуртельварта был весьма полезен.Я сделал еще несколько копаний, чтобы вы могли также установить некоторые другие очень полезные свойства, касающиеся камеры и рендера.

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

Я использую этот скрипт для пакетной визуализации.Вы можете проверить это здесь: http://code.google.com/p/encuadro/source/browse/renders/marker/model/marker_a4.py

Позже будет улучшено использование аргументов командной строки.Я новичок в Python и Blender, так что это может быть любительским, но это работает.

6 голосов
/ 16 января 2012

A дружественный пользователь на reddit указал мне на одно правильное решение: хитрость заключается в том, чтобы получить камеру как Object, а не как Camera.Таким образом, вы можете установить местоположение стандартным способом и установить ключевые кадры.

Если вы хотите установить Camera определенные объекты, вы должны получить его через 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)
0 голосов
/ 15 января 2012

Возможно, камеры в нижней части этой страницы могут быть хорошей отправной точкой.

...