mirror of
https://forge.apps.education.fr/blender-edutech/blender-edutech.git
synced 2024-01-27 08:20:37 +01:00
72 lines
2.2 KiB
Python
72 lines
2.2 KiB
Python
|
bl_info = {
|
||
|
"name": "Camera Fit View",
|
||
|
"author": "Yashar JafarKhanpour",
|
||
|
"version": (1, 0),
|
||
|
"blender": (2, 80, 0),
|
||
|
"location": "View3D > View > Cameras > Camera Fit View, Camera From View",
|
||
|
"category": "3D View",
|
||
|
"description": "Add two operators to Cameras menu: Align Camera to View, Create Camera from view",
|
||
|
}
|
||
|
|
||
|
|
||
|
import bpy
|
||
|
from bpy.types import Operator
|
||
|
|
||
|
|
||
|
class VIEW3D_OT_camera_fit_view(Operator):
|
||
|
"""Align and fit camera to view and match lens properties.
|
||
|
Works on selected camera or scene camera if no camera is selected.
|
||
|
Creates new camera if checked in options"""
|
||
|
|
||
|
bl_idname = "view3d.camera_fit_view"
|
||
|
bl_label = "Camera to View"
|
||
|
bl_options = {'UNDO'}
|
||
|
|
||
|
new : bpy.props.BoolProperty(name="Create New Camera",options = {'SKIP_SAVE'})
|
||
|
|
||
|
|
||
|
@classmethod
|
||
|
def poll(cls,context):
|
||
|
return context.space_data.region_3d.view_perspective != 'CAMERA'
|
||
|
|
||
|
def execute(self, context):
|
||
|
if self.new:
|
||
|
bpy.ops.object.camera_add()
|
||
|
obj = context.object
|
||
|
spd = context.space_data
|
||
|
cam = context.scene.camera
|
||
|
if obj and obj.type == 'CAMERA' and obj != cam:
|
||
|
cam = context.scene.camera = obj
|
||
|
if cam:
|
||
|
bpy.ops.view3d.camera_to_view()
|
||
|
|
||
|
cam.data.sensor_width = 72
|
||
|
cam.data.lens = spd.lens
|
||
|
cam.data.clip_start = spd.clip_start
|
||
|
cam.data.clip_end = spd.clip_end
|
||
|
spd.region_3d.view_camera_offset = [0,0]
|
||
|
spd.region_3d.view_camera_zoom = 29.0746
|
||
|
|
||
|
|
||
|
return {'FINISHED'}
|
||
|
|
||
|
|
||
|
|
||
|
def add_menu_item(self, context):
|
||
|
self.layout.operator(VIEW3D_OT_camera_fit_view.bl_idname,text="Fit Camera to View")
|
||
|
self.layout.operator(VIEW3D_OT_camera_fit_view.bl_idname,text="Create Camera from View").new=True
|
||
|
|
||
|
def register():
|
||
|
bpy.utils.register_class(VIEW3D_OT_camera_fit_view)
|
||
|
bpy.types.VIEW3D_MT_view_cameras.append(add_menu_item)
|
||
|
|
||
|
def unregister():
|
||
|
bpy.utils.unregister_class(VIEW3D_OT_camera_fit_view)
|
||
|
bpy.types.VIEW3D_MT_view_cameras.remove(add_menu_item)
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
register()
|
||
|
|
||
|
|