Как переместить камеру в Blender 2.61 с помощью Python
Я ищу простой script для перемещения камеры в Blender 2.61 с помощью Python.
Я думал, что это будет непростая задача, но объект Camera не имеет таких свойств, как loc или что-то подобное.
Я только нашел скрипты онлайн для Blender 2.49, но они больше не работают из-за огромных изменений API с Blender 2.5.
Буду признателен за любые подсказки.
Ответы
Ответ 1
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)
Ответ 2
furtelwart ответ был весьма полезен. Я сделал еще кое-что, чтобы вы могли также установить некоторые другие очень полезные свойства относительно камеры и рендеринга.
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
Я использую этот script для пакетного рендеринга. Вы можете проверить это здесь:
http://code.google.com/p/encuadro/source/browse/renders/marker/model/marker_a4.py
Это будет улучшено позже, чтобы принять аргументы командной строки. Я новичок в python и blender, так что это может быть своего рода любитель, но он работает.
Ответ 3
Возможно, камеры, расположенные на внизу этой страницы, могут стать хорошей отправной точкой.