BlenderのLocal View(/)は押すと選択しているオブジェクトにフォーカスズームされます。
MayaのIsolate selectのようにしたかったですが、デフォルトで設定を変更できなかったので、pyを作成しました。
デフォルトの機能の上書きではなく、別のものとしてインストるされます。
(視点位置・ズーム・向き・レンズは元のまま維持)
※こちらのpyの利用に関連して利用者に発生した損害について、当社は一切責任を負いません。
bl_info = {
"name": "Toggle Local View (No Zoom)",
"author": "ChatGPT",
"version": (1, 2, 0),
"blender": (3, 0, 0),
"location": "3D View",
"description": "Toggle Local View without changing view zoom/position (works in all modes)",
"category": "3D View",
}
import bpy
class VIEW3D_OT_localview_nozoom(bpy.types.Operator):
"""Toggle Local View without changing zoom/position"""
bl_idname = "view3d.localview_nozoom"
bl_label = "Toggle Local View (No Zoom)"
bl_options = {'REGISTER', 'UNDO'}
@classmethod
def poll(cls, context):
return (
context.area is not None
and context.area.type == 'VIEW_3D'
and context.space_data is not None
and context.region_data is not None
)
def execute(self, context):
rv3d = context.region_data
space = context.space_data
# 現在のビュー情報を保存
prev_location = rv3d.view_location.copy()
prev_distance = rv3d.view_distance
prev_rotation = rv3d.view_rotation.copy()
prev_perspective = rv3d.view_perspective
prev_lens = space.lens
# Local View をトグル(frame_selected=False でフレームさせない)
try:
result = bpy.ops.view3d.localview(frame_selected=False)
except RuntimeError:
return {'CANCELLED'}
if 'CANCELLED' in result:
return {'CANCELLED'}
# ビュー情報を復元
rv3d.view_location = prev_location
rv3d.view_distance = prev_distance
rv3d.view_rotation = prev_rotation
rv3d.view_perspective = prev_perspective
space.lens = prev_lens
return {'FINISHED'}
# ---- Keymap(各モードのキーマップにも登録する) ----
addon_keymaps = []
def _add_km_items(kc, km_name, space_type='VIEW_3D'):
km = kc.keymaps.new(name=km_name, space_type=space_type)
kmi = km.keymap_items.new(
idname="view3d.localview_nozoom",
type='NUMPAD_SLASH',
value='PRESS'
)
addon_keymaps.append((km, kmi))
kmi2 = km.keymap_items.new(
idname="view3d.localview_nozoom",
type='SLASH',
value='PRESS'
)
addon_keymaps.append((km, kmi2))
def register_keymap():
wm = bpy.context.window_manager
kc = wm.keyconfigs.addon
if not kc:
return
# 3D View 系(基本)
_add_km_items(kc, "3D View", 'VIEW_3D')
_add_km_items(kc, "3D View Generic", 'VIEW_3D')
# Edit / Sculpt / Pose など主要モード用(Blender の標準キーマップ名)
for km_name in [
"Mesh",
"Curve",
"Armature",
"Metaball",
"Lattice",
"Pose",
"Sculpt",
"Weight Paint",
"Vertex Paint",
"Texture Paint",
"Grease Pencil",
]:
try:
_add_km_items(kc, km_name, 'VIEW_3D')
except Exception:
# 環境によって存在しないキーマップ名があっても落ちないように
pass
def unregister_keymap():
wm = bpy.context.window_manager
kc = wm.keyconfigs.addon
if not kc:
return
for km, kmi in addon_keymaps:
try:
km.keymap_items.remove(kmi)
except Exception:
pass
addon_keymaps.clear()
def register():
bpy.utils.register_class(VIEW3D_OT_localview_nozoom)
register_keymap()
def unregister():
unregister_keymap()
bpy.utils.unregister_class(VIEW3D_OT_localview_nozoom)
if __name__ == "__main__":
register()
目次
使い方
- このコードをテキストにコピーし local_view_no_zoom.py などの名前で保存
- Blender → Edit → Preferences → Add-ons → Install… で読み込み
- アドオンにチェックを入れて有効化(必要であればショートカット設定)
- 3Dビューで テンキー / か キーボード / を押す

