アストラルプリズム

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

Blender python 一番下の辺のindexを取得する。

それぞれの辺の中点を比較して一番zが低い値を一番下としている
スクリプトの最初位にやってて間違えてて、後の設定全部直す羽目になってて今半泣き状態。
一番最後の番号の時は最初の番号の頂点の中点をとる。

import bpy,bmesh
from mathutils import Matrix, 

plane =bpy.context.object
mat = plane.matrix_world.copy()
msh = plane.data
#zの値が小さいloopを一番下と仮定する(z_min_no)
z = []
for l in msh.loops:
    index_no0 = l.vertex_index
    if l.index == len(msh.loops) - 1:
        index_no1 = msh.loops[0].vertex_index
    else:
        print(l.index)
        index_no1 = msh.loops[l.index + 1].vertex_index
    z0 = orig_p_mat @ msh.vertices[index_no0].co
    z1 = orig_p_mat @ msh.vertices[index_no1].co
    z_center = (z0 + z1) / 2
    z.append(z_center[2])
 
#一番下のloopのindex  
z_min_no = z.index(min(z))
#一番下の頂点のindex
z_min_vertex_no = msh.loops[z_min_no].vertex_index