2020年8月30日日曜日

Blender で頂点グループソートスクリプトを書いてみた

 Theそんなもん標準機能につけておけ。というシロモノ。
当初作る際に面倒なプログラムになりそうだと思っていたのですが、調べていたらそのまんまな関数がありました。…そこまで作っているなら最後まで実装して欲しいのですが。

# vg sort

import bpy

if bpy.context.mode == 'OBJECT':
    # print all selected objects
    for obj in bpy.context.selected_objects:
        print(obj.name)
        
        # Use objectmode only
        if obj.type == 'MESH':
            bpy.ops.object.vertex_group_sort(sort_type='NAME')
            # bpy.ops.object.vertex_group_sort(sort_type='BONE_HIERARCHY')

これが

こうなる

使用方法はオブジェクトモードで該当するオブジェクトを選択して、スクリプト実行。
一応、2.7系、2.8系両対応です。

ただし、頂点グループのソートが bpy.ops.object に対して、選択されたオブジェクトの検索ループが bpy.context.selected_objects となり齟齬が出ています。

手っ取り早く言うと、複数のオブジェクトを選択してこのスクリプトを実行するとちゃんと動作しない可能性が高いので、1個ずつオブジェクトを選択して実行して欲しいです。

尚、このソースでは名前順に並べ直しますが、コメントアウトした'BONE_HIERARCHY'側を使うと、ボーンの継承順位順にソートされます。

0 件のコメント:

コメントを投稿