マンガとかイラストの背景描きたくないけどモデリングするのも面倒
というのがテーマです。
読んでいただいてありがとうございます。
BlenderもPythonも詳しくないです。
箱を床に置くスクリプトをアドオンにしてポチッと押したらポンと出てくるようにしたい
前回作った箱を床に置くスクリプトをアドオンにしてほかのメッシュと同じようにメニューから配置します。
自分用のメモとして書きましたが途中何をどうしたかあまり覚えてないので完成品だけ。
アドオン化
ここでchatGPTに前回のファイルを読ませてアドオン化を指示。
ついでにマテリアルも追加
bl_info = {
"name": "Add Floor Cube with White Material",
"author": "もくもく",
"version": (1, 1),
"blender": (3, 6, 0),
"location": "Add > Mesh",
"description": "床に接した1mの立方体を追加",
"category": "Add Mesh",
}
import bpy
from bpy.types import Operator
# -----------------------------
# オペレーター
# -----------------------------
class OBJECT_OT_add_floor_cube(Operator):
bl_idname = "mesh.add_floor_cube"
bl_label = "床に立方体(白)"
bl_description = "床に接した1mの立方体を作成し、白いマテリアルを適用"
bl_options = {'REGISTER', 'UNDO'}
def execute(self, context):
# 1mの立方体を床に接して作成
bpy.ops.mesh.primitive_cube_add(size=1, location=(0, 0, 0.5))
cube = context.object
cube.name = "FloorCube"
# 位置を適用
bpy.ops.object.transform_apply(location=True)
# -----------------------------
# マテリアル設定
# -----------------------------
mat_name = "WhiteMaterial"
mat = bpy.data.materials.get(mat_name)
if mat is None:
mat = bpy.data.materials.new(name=mat_name)
mat.use_nodes = True
bsdf = mat.node_tree.nodes.get("Principled BSDF")
if bsdf:
bsdf.inputs["Base Color"].default_value = (1, 1, 1, 1) # 白 (RGBA)
# 立方体にマテリアルを割り当て
if cube.data.materials:
cube.data.materials[0] = mat
else:
cube.data.materials.append(mat)
return {'FINISHED'}
# -----------------------------
# メニューに追加
# -----------------------------
def menu_func(self, context):
self.layout.operator(OBJECT_OT_add_floor_cube.bl_idname, icon="MESH_CUBE")
# -----------------------------
# 登録処理
# -----------------------------
def register():
bpy.utils.register_class(OBJECT_OT_add_floor_cube)
bpy.types.VIEW3D_MT_mesh_add.append(menu_func)
def unregister():
bpy.types.VIEW3D_MT_mesh_add.remove(menu_func)
bpy.utils.unregister_class(OBJECT_OT_add_floor_cube)
if __name__ == "__main__":
register()
できた
これを.pyで保存してプリファレンスからインストールで床の上に箱が作れます
PythonがわからなくてもBlender用アドオンが簡単に作れる!
って話なんですが、サイズがおかしかったり変なところに浮いてたりエラーが出たり…
そのたびにchatGPTに指示したり一回リセットしてみたり…
完全に自動とはいかなかったんですが
まあ成功でしょう
これをベースに本棚・椅子・テーブルくらいは自動生成できるようになったので可能性はありそう。