1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

BlenderのPythonで立方体を作るアドオン

Posted at

マンガとかイラストの背景描きたくないけどモデリングするのも面倒

というのがテーマです。
読んでいただいてありがとうございます。
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に指示したり一回リセットしてみたり…
完全に自動とはいかなかったんですが
まあ成功でしょう

これをベースに本棚・椅子・テーブルくらいは自動生成できるようになったので可能性はありそう。

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?