Skip to content

Instantly share code, notes, and snippets.

@Fweeb
Last active May 14, 2024 03:29
Show Gist options
  • Save Fweeb/bb61c15139bff338cb17 to your computer and use it in GitHub Desktop.
Save Fweeb/bb61c15139bff338cb17 to your computer and use it in GitHub Desktop.
Blender add-on for exposing the 3D View's rotation locking feature
# ***** BEGIN GPL LICENSE BLOCK *****
#
#
# This program is free software; you can redistribute it and/or
# modify it under the terms of the GNU General Public License
# as published by the Free Software Foundation; either version 2
# of the License, or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software Foundation,
# Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
#
# ***** END GPL LICENCE BLOCK *****
bl_info = {
"name": "Lock View",
"description": "Exposes rotation locking in the 3D View to a specific viewing angle",
"author": "Jason van Gumster (Fweeb)",
"version": (1, 0, 1),
"blender": (3, 0, 0),
"location": "3D View > Properties Region > View",
"warning": "",
"wiki_url": "",
"tracker_url": "",
"category": "3D View"}
import bpy
def lock_ui(self, context):
layout = self.layout
layout.prop(context.space_data.region_3d, 'lock_rotation', text='Lock View Rotation')
def register():
bpy.types.VIEW3D_PT_view3d_properties.append(lock_ui)
def unregister():
bpy.types.VIEW3D_PT_view3d_properties.remove(lock_ui)
if __name__ == "__main__":
register()
@swordfighter79
Copy link

thanks that is exactly what I needed thanks alot it a great help

@iamtitere
Copy link

Thanks you so much!

Important if people wants to import it to Blender 2.8x, the code line

"blender": (2, 76, 0),

must be updated after importing to the blender version, so

"blender": (2, 80, 0),

and the menu is on the 3D View>right panel>View>Lock View Rotation

@Qhuenta
Copy link

Qhuenta commented Jul 5, 2021

Is there a way for this to work with Blender 2.81a?

@ithil
Copy link

ithil commented Jan 23, 2022

Is there a way for this to work with Blender 2.81a?

Yes, you simply need to update the line with the blender version as @iamtitere showed above to the version you're using.

For version 3.0.0 I've already done that so you could also just grab my fork: https://gist.github.com/ithil/ffc48aba19771d6850d1c2fc6a84d6c0

@Fweeb
Copy link
Author

Fweeb commented Jan 25, 2022

@ithil I've incorporated your update to this. Because the code is so short, I never thought to make a full-on repo for it. :) Thanks for pointing this out.

@shadkp
Copy link

shadkp commented Apr 27, 2022

Excellent to make the viewport a reference viewer in Blender !

@df-0
Copy link

df-0 commented May 19, 2023

Thanks for this! I'm using this for drawing with grease pencil, for which obviously you don't want to accidentally orbit the camera. However - this does also prevent you from being able to 2D roll the view (which is useful for drawing because often you want to roll the view to draw a particular curve more easily. Any way it could lock orbit but not roll? Thanks!

@Fweeb
Copy link
Author

Fweeb commented May 21, 2023

Hi there @df-0!

I think what you're looking for is technically possible, but would certainly require quite a bit more work. Right now, this add-on is just exposing functionality that's already built into Blender.

However, there is a workaround. I'm assuming that you're using Grease Pencil from the 2D Animation template. If you do that, you have a camera object and you're drawing from that camera's view. So if you want to rotate the view, you can just select the camera object and rotate that. It's a bit clunky because you have to hop out of Draw mode to do that, so maybe an add-on could be written that allows limited camera movement from within Edit mode. Maybe I'll play with that in the next week or so.

@df-0
Copy link

df-0 commented May 23, 2023

Cool - thanks. Yes, there's definitely some workarounds! I tend to use view roll a lot when drawing in blender - there's a reason it was built into old animation light tables, and it's easily accessible in stuff like photoshop (hold R) and toon boom (hold ctrl+alt) - and you currently don't need to have a camera for it to work, but of course it gets disabled by view lock. There's a request to add this as core functionality but these things can take a while! https://blender.community/c/rightclickselect/q2cbbc/?sorting=hot

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment