日々適当

hibitekitou

BlenderのUnit Scaleを変更するアドオン

cg |2024-05-29

業務的にUnit Scaleは0.01にしたいし、フレームレートは59.94で行きたいし、Unit Scaleを変えたらビューのクリップの範囲も変更したいしで、でもそれをそれぞれの設定にアクセスして手動で変えるのは地味に面倒なのでChatGPT先生にアドオンを作ってもらいました。

bl_info = {
    "name": "Setup for Viz Scene",
    "version": (0, 1),
    "blender": (4, 1, 0),
    "category": "3D View",
}

import bpy

def set_unit_scale():
    bpy.context.scene.unit_settings.scale_length = 0.01

def set_fps():
    bpy.context.scene.render.fps = 60
    bpy.context.scene.render.fps_base = 1.001

def set_clip_start_end():
    for area in bpy.context.window.screen.areas:
        if area.type == 'VIEW_3D':
            for space in area.spaces:
                if space.type == 'VIEW_3D':
                    space.clip_start = 1.0
                    space.clip_end = 30000.0

class VIZ_OT_set_unit_scale(bpy.types.Operator):
    bl_idname = "view3d.set_unit_scale"
    bl_label = "Set Unit Scale to 0.01"
    bl_description = "Set Unit Scale to 0.01"

    def execute(self, context):
        set_unit_scale()
        return {'FINISHED'}

class VIZ_OT_set_fps(bpy.types.Operator):
    bl_idname = "view3d.set_fps"
    bl_label = "Set FPS to 59.94"
    bl_description = "Set FPS to 59.94"

    def execute(self, context):
        set_fps()
        return {'FINISHED'}

class VIZ_OT_set_clip_start_end(bpy.types.Operator):
    bl_idname = "view3d.set_clip_start_end"
    bl_label = "Set Clip Start/End"
    bl_description = "Set Clip Start to 0.01m and Clip End to 300m"

    def execute(self, context):
        set_clip_start_end()
        return {'FINISHED'}

def menu_func(self, context):
    self.layout.separator()  # 区切り線を追加
    self.layout.operator(VIZ_OT_set_unit_scale.bl_idname, text="Set Unit Scale to 0.01")
    self.layout.operator(VIZ_OT_set_fps.bl_idname, text="Set FPS to 59.94")
    self.layout.operator(VIZ_OT_set_clip_start_end.bl_idname, text="Set Clip Start/End")

def register():
    bpy.utils.register_class(VIZ_OT_set_unit_scale)
    bpy.utils.register_class(VIZ_OT_set_fps)
    bpy.utils.register_class(VIZ_OT_set_clip_start_end)
    bpy.types.VIEW3D_MT_object_context_menu.append(menu_func)

def unregister():
    bpy.utils.unregister_class(VIZ_OT_set_unit_scale)
    bpy.utils.unregister_class(VIZ_OT_set_fps)
    bpy.utils.unregister_class(VIZ_OT_set_clip_start_end)
    bpy.types.VIEW3D_MT_object_context_menu.remove(menu_func)

if __name__ == "__main__":
    register()

ほぼ修正なしで動作しました。すごいですね、ChatGPT。速度がものすごく速くなってて、これなら無料バージョンでもストレスなく使えるからお世話になる機会が多くなりそうです。
ちなみにChatGPTさん曰く、これをインストールするには

1. スクリプトをPythonファイルとして保存
上記のスクリプトをテキストエディタにコピーし、ファイル名を setup_for_viz_scene.py として保存します。

2. Blenderのアドオンとしてインストール
Blenderを起動します。
Edit -> Preferences -> Add-ons を開きます。
Install... ボタンをクリックし、先ほど保存した setup_for_viz_scene.py ファイルを選択してインストールします。
アドオンリストに「Setup for Viz Scene」が表示されるので、チェックボックスをオンにして有効化します。

ということです。
ほぼ修正なしで動いたってのの「ほぼ」の理由は、Clip Start/Endの値の設定値がUnit Scaleを変更する前のUnit基準で設定されていたからで、それ以外は完璧です。すごい世の中になっているなと今更思うのでした。

コメント ( 0 )|Trackback ( )
 
コメント
 
コメントはありません。
コメントを投稿する
ブログ作成者から承認されるまでコメントは反映されません
 
名前
タイトル
URL
コメント
コメント利用規約に同意の上コメント投稿を行ってください。

数字4桁を入力し、投稿ボタンを押してください。