ポリゴンメッシュを三角形に分割した際の総三角形数を知りたい (スクリプト)

UnityやWebGLなどのリアルタイム環境に形状を渡す場合に、
Shade3Dでの形状をポリゴンメッシュの三角形に変換したときの三角形数を知りたい場合があります。
選択されたポリゴンメッシュを三角形分割する (スクリプト)」では形状そのものを三角形に分割してしまいますが、
元の形状はそのままにしておき三角形数を求めるには以下のスクリプトを実行します。


scene = xshade.scene()

# アクティブ形状でポリゴンメッシュをリストに格納.
activeShapesList = []
for shape in scene.active_shapes:
  if shape.type == 7:   # ポリゴンメッシュの場合.
    activeShapesList.append(shape)

# 形状を複製.
copyShapesList = []
for shape in activeShapesList:
    s = shape.copy_object(((1,0,0,0),(0,1,0,0),(0,0,1,0),(0,0,0,1)))
    copyShapesList.append(s)

# 三角形数を計算.
triCou = 0
for shape in copyShapesList:
  # 分割対象の面番号のリスト.
  indices = []
  for i in range(shape.number_of_faces):
    indices.append(i)

  # 指定の面を三角形分割.
  shape.triangulate_faces(indices)

  triCou += shape.number_of_faces

# 複製した形状を削除.
for shape in copyShapesList:
  shape.remove()

# 元の選択に戻す.
if len(activeShapesList) > 0:
  scene.active_shapes = activeShapesList

print "選択されたポリゴンメッシュの三角形数 : " + str(triCou)

上記スクリプトは、UNDO/REDOには対応していません。
ブラウザで対象となるポリゴンメッシュを選択し上記スクリプトを実行すると、
メッセージウィンドウに選択したポリゴンメッシュを三角形に分割したときの三角形数が表示されます。

Translate »