And if this would work for the camera, then it should also work for anything else (lamps mainly). The script didn't work for me on osx - the view is not locked to the camera view and trackballing around loses the camera lock alltogether =)
Cheers, -mats On 27.4.2011, at 1.39, Daniel Salazar - 3Developer.com wrote: > @dfelinto(pto): nope, it would need to *stay* in camera view when panning > and dollying around :) > > Daniel Salazar > 3Developer.com > > > > On Tue, Apr 26, 2011 at 12:58 PM, Dalai Felinto <dfeli...@gmail.com> wrote: >>> Below you can find some code for (...) Lock camera to view. >> Isn't this what Ctrl+Alt+Numpad0 do? (align camera to view -- which >> even takes care of non-perspective views) >> >> On my understanding what people are ranting is for the lack of options >> to move while "inside" the camera mode. >> >> -- >> Dalai >> >> 2011/4/26 bartius crouch <bartius.cro...@gmail.com>: >>>> 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 >> > _______________________________________________ > Bf-committers mailing list > Bf-committers@blender.org > http://lists.blender.org/mailman/listinfo/bf-committers _______________________________________________ Bf-committers mailing list Bf-committers@blender.org http://lists.blender.org/mailman/listinfo/bf-committers