Is there a simple way in python to rotate/position a camera so that a specific point (X,Y,Z) is in the middle of the camera viewfinder in Blender 2.8?
- Get the camera-object direction as a vector by subtracting the cameras location from the objects location:
- Convert this vector to a look at quaternion with the vectors
to_track_quat('Z', 'Y')function. This function returns a quaternion
rotwhich points its Z in the direction of the direction vector and its Y in the direction of the global Y.
rotto a 4x4 matrix.
- Convert the cameras location into a Translation Matrix and store it in
- Compose the new camera matrix by matrix-multiplying the
locmatrix and the
rotmatrix and assign it to the camera
import bpy import mathutils cam = bpy.context.scene.camera object = bpy.context.active_object direction = cam.location - object.location rot = direction.to_track_quat('Z', 'Y').to_matrix().to_4x4() loc = mathutils.Matrix.Translation(cam.location) cam.matrix_world = loc @ rot