以下の内容はhttps://redhologerbera.hatenablog.com/entry/2024/08/28/230604より取得しました。


BlenderPythonで頂点グループをウェイトごと複製する

本日はBlender枠です。

〇環境

・Blender4.1

・Windows11PC

〇ウェイトペイントを含めた頂点グループの複製

 ウェイトペイントはオブジェクトのリグやクロスシミュレーションの強さなどあらゆる範囲で使用することができます。

 例えば先日行った髪の毛を揺らす処理の場合はクロスシミュレーションを使用して髪の毛が受ける重力の強さを制御しました。

redhologerbera.hatenablog.com

 このようにウェイトを使うことで様々なことができます。

 このウェイトの情報を含む頂点グループはデータプロパティからアクセス出ます。

頂点グループをウェイト事複製して使いまわしたい時など、頂点グループを選択して右クリックなどを押しても複製することができません。

今回はPythonを使用してコードで複製を行います。

〇コード

今回はこちらのようなコードをChatGPTを使用して作成しました。

import bpy

# アクティブオブジェクトを取得
obj = bpy.context.active_object

# アクティブオブジェクトがメッシュオブジェクトであるか確認
if obj and obj.type == 'MESH':
    # 現在選択されている頂点グループを取得
    active_vertex_group = obj.vertex_groups.active

    if active_vertex_group:
        # 新しい頂点グループを追加し、名前を変更
        new_vertex_group = obj.vertex_groups.new(name=f"{active_vertex_group.name}_copy")

        # 現在の頂点グループのウェイト情報を新しい頂点グループにコピー
        for vertex in obj.data.vertices:
            for group in vertex.groups:
                if group.group == active_vertex_group.index:
                    new_vertex_group.add([vertex.index], group.weight, 'REPLACE')

        print(f"頂点グループ '{active_vertex_group.name}' を '{new_vertex_group.name}' として複製しました。")
    else:
        print("No selected vertex group")
else:
    print("No Active Mesh")

対象のオブジェクトのデータプロパティから複製したい頂点グループが選択されている状態でコードを実行することで選択中の頂点グループが複製されます。

本日は以上です。




以上の内容はhttps://redhologerbera.hatenablog.com/entry/2024/08/28/230604より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14