2012-01-14 32 views
10

Tôi đang tìm kiếm một tập lệnh đơn giản để di chuyển máy ảnh trong Blender 2.61 bằng Python. Tôi nghĩ rằng đây sẽ là một nhiệm vụ dễ dàng, nhưng đối tượng Máy ảnh không có các thuộc tính như loc hoặc một cái gì đó tương tự.Cách di chuyển máy ảnh trong Blender 2.61 bằng Python

Tôi chỉ tìm thấy các tập lệnh trực tuyến cho Blender 2.49 nhưng chúng không hoạt động nữa vì những thay đổi API to lớn với Blender 2.5.

Tôi sẽ đánh giá cao bất kỳ gợi ý nào.

Trả lời

6

A friendly user on reddit chỉ cho tôi một giải pháp chính xác: Bí quyết là truy xuất máy ảnh dưới dạng Object, không phải là Camera. Với cách này, bạn có thể đặt vị trí thông qua cách tiêu chuẩn và đặt khung hình chính.

Nếu bạn muốn đặt Camera đối tượng cụ thể, bạn phải truy xuất thông qua 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

câu trả lời của furtelwart khá hữu ích. Tôi đã làm một số đào nhiều hơn, do đó bạn cũng có thể thiết lập một số tài sản rất hữu ích khác liên quan đến máy ảnh và render.

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 

Tôi đang sử dụng tập lệnh này để tạo kết xuất hàng loạt. Bạn có thể xem tại đây: http://code.google.com/p/encuadro/source/browse/renders/marker/model/marker_a4.py

Nó sẽ được cải thiện sau này để lấy đối số dòng lệnh. Tôi mới đến python và máy xay sinh tố vì vậy đây có thể là loại nghiệp dư nhưng nó hoạt động.

+0

Vui lòng kiểm tra câu hỏi gần đây của tôi đối với các đối số dòng lệnh trong tập lệnh python vì tôi gặp sự cố ở đó. Có lẽ bạn có thể giúp đỡ. Cảm ơn! http://stackoverflow.com/questions/10667314/python-script-with-arguments-for-command-line-blender – roho

+0

Điều này hữu ích; cảm ơn bạn. – Clay

Các vấn đề liên quan