本日はBlender枠です。
〇環境
・Blender4.1
・Windows11PC
〇レンダリング設定のGUI
今回は以前作成した外部にレンダリング設定を保存しておいて読み込むスクリプトをGUIを作成してより使いやすくしていきます。
Blenderでシンプルなコンソールを実装するPythonコードは以下のようになります。
bl_info = {
"name": "HoloMotoUtility",
"blender": (3, 0, 0),
"category": "Object",
"version": (1, 0, 0),
"author": "HoloMoto",
"description": "An addon to ensure music21 library and its dependencies are loaded",
"location": "View3D > Tool Shelf",
"warning": "",
"doc_url": "",
}
import bpy
# Define a new operator (action or function)
class HelloWorldOperator(bpy.types.Operator):
bl_idname = "object.hello_world"
bl_label = "Hello, World!"
def execute(self, context):
self.report({'INFO'}, "Hello, World!")
return {'FINISHED'}
# Define a new UI panel
class HelloWorldPanel(bpy.types.Panel):
bl_label = "My Panel"
bl_idname = "OBJECT_PT_hello_world"
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
bl_category = 'HoloMotoUtilis'
def draw(self, context):
layout = self.layout
# Add the operator to the panel
layout.operator("object.hello_world")
# Registration
def register():
bpy.utils.register_class(HelloWorldOperator)
bpy.utils.register_class(HelloWorldPanel)
def unregister():
bpy.utils.unregister_class(HelloWorldOperator)
bpy.utils.unregister_class(HelloWorldPanel)
if __name__ == "__main__":
register()
https://redhologerbera.hatenablog.com/entry/2023/08/23/151320
こちらをベースにレンダリング設定の保存の処理を加えていきます。
bl_info = {
"name": "HoloMotoUtility",
"blender": (3, 0, 0),
"category": "Object",
"version": (1, 0, 0),
"author": "HoloMoto",
"description": "",
"location": "View3D > Tool Shelf",
"warning": "",
"doc_url": "",
}
import bpy
import json
# Define a new operator (action or function)
class HelloWorldOperator(bpy.types.Operator):
bl_idname = "object.hello_world"
bl_label = "Hello, World!"
def execute(self, context):
self.report({'INFO'}, "Hello, World!")
return {'FINISHED'}
class OBJECT_OT_save_render_settings(bpy.types.Operator):
bl_idname = "object.save_render_settings"
bl_label = "Save Render Settings"
def execute(self, context):
render_settings = {
"engine": bpy.context.scene.render.engine,
"device": bpy.context.scene.cycles.device,
"compute_device_type": bpy.context.preferences.addons['cycles'].preferences.compute_device_type,
"samples": bpy.context.scene.cycles.samples,
"preview_samples": bpy.context.scene.cycles.preview_samples,
}
# ファイルに保存
file_path = "C:/Users/seiri/Documents/Development/BlenderProject/RenderSettings/render_settings.json"
with open(file_path, 'w') as f:
json.dump(render_settings, f, indent=4)
self.report({'INFO'}, f"Render settings saved to {file_path}")
return {'FINISHED'}
# Define a new UI panel
class HelloWorldPanel(bpy.types.Panel):
bl_label = "Utilites"
bl_idname = "OBJECT_PT_hello_world"
bl_space_type = 'VIEW_3D'
bl_region_type = 'UI'
bl_category = 'HoloMotoUtilis'
def draw(self, context):
layout = self.layout
# Add the operator to the panel
layout.operator("object.save_render_settings")
# Registration
def register():
bpy.utils.register_class(HelloWorldOperator)
bpy.utils.register_class(HelloWorldPanel)
bpy.utils.register_class(OBJECT_OT_save_render_settings)
def unregister():
bpy.utils.unregister_class(HelloWorldOperator)
bpy.utils.unregister_class(HelloWorldPanel)
bpy.utils.unregister_class(OBJECT_OT_save_render_settings)
if __name__ == "__main__":
register()
これは既存のレンダリング設定の保存処理をクラスとして再定義しています。
具体的にはbpy.types.Operatiorを使用してラベルとidを定義しています。
class OBJECT_OT_save_render_settings(bpy.types.Operator):
bl_idname = "object.save_render_settings"
bl_label = "Save Render Settings"
def execute(self, context):
・・・既存の処理
これによって次のようにGUIでレンダリング設定の保存が行えるようになりました。

次回は保存パスを任意に設定できるようにしていきます。
本日は以上です。