アストラルプリズム

PC、スマホ、ゲームなどの備忘録と日記

辺の選択順序を辺に沿って順番にする方法

辺の選択順(index)を辺に沿って順にしたいが「要素をソート」で出来ない場合。

f:id:katsumi3:20191209194859p:plain

頑張ればbmeshで並び替えれなくもなさそうな気もするけど面倒。

解決するには

メッシュからカーブに変換して、またカーブからメッシュに変換し直すと辺に沿ってループ状に選択順序が変わる。

 

bpyではこの二行だけで済む。

bpy.ops.object.convert(target='MESH', keep_original=False)

bpy.ops.object.convert(target='CURVE', keep_original=False)

 

ちゃんとした(?)やり方

頂点を順にとるには

bm.faces[0].loopsを使えばよい。

無理に頂点の順を変えなくてもLoopsが順番に頂点を指定しくれる。

どうしても順番にしたければ

bm.faces[0].loops[0].vert.select_set(True)

で順番に頂点を選択して

bpy.ops.mesh.sort_elements(type='SELECTED', elements={'VERT'})

をやればいい。

頂点か辺か面かどのメッシュの順番を変更するかは選べる。