…のですが、制作途中にもっとちゃんとしたスクリプトを公開している方が多数居る事に気づきまして…
まあ、雑なんですが、せっかく作ったので公開します。尚、2.7、2.8両対応。
まあ、雑なんですが、せっかく作ったので公開します。尚、2.7、2.8両対応。
# idle vg remover
import bpy
if bpy.context.mode == 'OBJECT':
for obj in bpy.context.selected_objects:
if obj.type == 'MESH':
list_use = [False]*len(obj.vertex_groups)
for vertex in obj.data.vertices:
for group in vertex.groups:
idxGroup = group.group
list_use[idxGroup] = True
idx = 0
for vg in obj.vertex_groups:
if not list_use[idx]:
obj.vertex_groups.remove(vg)
idx = idx+1
for obj in bpy.context.selected_objects:
if obj.type == 'MESH':
list_use = [False]*len(obj.vertex_groups)
for vertex in obj.data.vertices:
for group in vertex.groups:
idxGroup = group.group
list_use[idxGroup] = True
idx = 0
for vg in obj.vertex_groups:
if not list_use[idx]:
obj.vertex_groups.remove(vg)
idx = idx+1
使用方法はオブジェクトモードで該当するオブジェクトを選択して、スクリプト実行。
コレが
こうなる
動作の解説をすると
1.オブジェクトに所属する頂点グループの数だけ使用を検証するフラグリストを作る
2.全頂点に対して使用頂点グループのインデックスを調べ、見つかったインデックスのテーブルフラグを上げる
3.最終的にフラグが上がらなかった(=未使用)頂点グループを削除
…正直面白味も何もないコードですね。というか、なぜ標準でこの機能が無いんでしょうか?
1.オブジェクトに所属する頂点グループの数だけ使用を検証するフラグリストを作る
2.全頂点に対して使用頂点グループのインデックスを調べ、見つかったインデックスのテーブルフラグを上げる
3.最終的にフラグが上がらなかった(=未使用)頂点グループを削除
…正直面白味も何もないコードですね。というか、なぜ標準でこの機能が無いんでしょうか?
0 件のコメント:
コメントを投稿