Une fois que vous avez trouvé la bonne « vue », vous pouvez modifier:
view.spaces[0].region_3d.view_matrix
view.spaces[0].region_3d.view_rotation
Notez que la region_3d.view_location est la cible « look_at », pas l'emplacement de la caméra; vous devez modifier la view_matrix directement si vous voulez déplacer la position de la caméra (pour autant que je sache), mais vous pouvez ajuster subtilement la rotation en utilisant view_rotation assez facilement. Vous aurez probablement besoin de lire pour générer un quaternion valide si: http://en.wikipedia.org/wiki/Quaternions_and_spatial_rotation
Peut-être quelque chose comme cela peut être utile:
class Utils(object):
def __init__(self, context):
self.context = context
@property
def views(self):
""" Returns the set of 3D views.
"""
rtn = []
for a in self.context.window.screen.areas:
if a.type == 'VIEW_3D':
rtn.append(a)
return rtn
def camera(self, view):
""" Return position, rotation data about a given view for the first space attached to it """
look_at = view.spaces[0].region_3d.view_location
matrix = view.spaces[0].region_3d.view_matrix
camera_pos = self.camera_position(matrix)
rotation = view.spaces[0].region_3d.view_rotation
return look_at, camera_pos, rotation
def camera_position(self, matrix):
""" From 4x4 matrix, calculate camera location """
t = (matrix[0][3], matrix[1][3], matrix[2][3])
r = (
(matrix[0][0], matrix[0][1], matrix[0][2]),
(matrix[1][0], matrix[1][1], matrix[1][2]),
(matrix[2][0], matrix[2][1], matrix[2][2])
)
rp = (
(-r[0][0], -r[1][0], -r[2][0]),
(-r[0][1], -r[1][1], -r[2][1]),
(-r[0][2], -r[1][2], -r[2][2])
)
output = (
rp[0][0] * t[0] + rp[0][1] * t[1] + rp[0][2] * t[2],
rp[1][0] * t[0] + rp[1][1] * t[1] + rp[1][2] * t[2],
rp[2][0] * t[0] + rp[2][1] * t[1] + rp[2][2] * t[2],
)
return output
Quelle version de Blender? – Blender
Qu'en est-il de ['bpy.ops.view3d.viewnumpad'] (http://www.blender.org/documentation/blender_python_api_2_69_0/bpy.ops.view3d.html?highlight=numpad#bpy.ops.view3d.viewnumpad)? – gandalf3
voir aussi http://blender.stackexchange.com/a/678/2762 –