> Also a lock camera to view option would be great so we can just move > the camera like we move any other viewport
Like Campbell said, that isn't very hard to do in python. Below you can find some code for it. Copy the text below into the text-editor, Run Script (alt+P), go to 3d-view, search (spacebar) for Lock camera to view. import bpy import mathutils class ModalOperator(bpy.types.Operator): '''Move camera along with the viewport''' bl_idname = "view3d.lock_camera" bl_label = "Lock camera to view" @classmethod def poll(cls, context): camera = context.scene.camera if not camera: return(False) return(camera.name in context.scene.objects) def modal(self, context, event): camera = context.scene.camera rv3d = context.space_data.region_3d # rotation + location camera.matrix_world = rv3d.view_matrix.copy().inverted() # override location to take view_distance into account rotation = rv3d.view_matrix.copy().to_3x3().inverted() z_normal = mathutils.Vector([0.0, 0.0, 1.0]) * rotation camera.location = rv3d.view_location + (rv3d.view_distance * z_normal) # handle events if event.type in ['LEFTMOUSE', 'NUMPAD_ENTER', 'RET']: context.area.header_text_set() return {'FINISHED'} elif event.type == 'ESC': camera.matrix_world = self.camera_matrix context.area.header_text_set() return {'CANCELLED'} return {'PASS_THROUGH'} def invoke(self, context, event): context.window_manager.modal_handler_add(self) self.camera_matrix = context.scene.camera.matrix_world.copy() context.space_data.region_3d.view_perspective = 'PERSP' context.area.header_text_set("ESC to cancel, ENTER or LMB to confirm") return {'RUNNING_MODAL'} def register(): bpy.utils.register_class(ModalOperator) def unregister(): bpy.utils.unregister_class(ModalOperator) if __name__ == "__main__": register() _______________________________________________ Bf-committers mailing list Bf-committers@blender.org http://lists.blender.org/mailman/listinfo/bf-committers