[Bf-committers] Camera view navigation rant
Damir Prebeg
blend.factory at gmail.com
Wed Apr 27 07:59:02 CEST 2011
How bout a pin icon in one corner of camera view so when activated,
cam view (or any object view) would act as regular view?
And ALT could be a shortcut key that would temporary glue cam to the
view (Alt+MMB would rotate cam, CTRL+ALT+MMB would move camera forward
or backward and SHIFT+ALT+MMB would pan camera?)
On 27 April 2011 07:36, Mats Holmberg <mats.holmberg at 2me.fi> wrote:
> 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 <dfelinto at 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.crouch at 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 at blender.org
>>> http://lists.blender.org/mailman/listinfo/bf-committers
>>>
>> _______________________________________________
>> Bf-committers mailing list
>> Bf-committers at blender.org
>> http://lists.blender.org/mailman/listinfo/bf-committers
>
> _______________________________________________
> Bf-committers mailing list
> Bf-committers at blender.org
> http://lists.blender.org/mailman/listinfo/bf-committers
>
More information about the Bf-committers
mailing list