2007年11月28日水曜日

blender - python ポリゴン数表示

ちょっと微妙に忙しくなってきたので、週末まで小ネタ中心でいきます。
最近Blenderハマってるので、インプットが少ないくせに、できるだけアウトプットして行こうと思ってます。

さて、今回は、ポリゴン数計算スクリプトです。
Blenderは右上に頂点の数、線の数、面の数が表示されます。
通常ポリゴン数とは、三角形の面の数を示すそうです。
面は三角形と四角形のものがあるので、面の数は、正確なポリゴン数ではありません。

というわけで、四角形の面は、三角形2つで出来ているので、四角形の面が見つかったら+2、三角形の面だったら+1するだけですね。

以下スクリプト。

http://render.jp/blender/npolygon.py

import Blender
from Blender import *

scene = Blender.Scene.GetCurrent()
meshes = [ob for ob in scene.objects if ob.type == 'Mesh']

# ----------------------------------
# return polygon number
# meshes : list of Blender.Object
# ----------------------------------
def getPolygonNumber(meshes):
num = 0
for mesh in meshes:
for face in mesh.getData().faces:
n = len(face)
if (n == 4):
num += 2
if (n == 3):
num += 1
return num

# ----------------------------------
# execute
# ----------------------------------
print getPolygonNumber(meshes)

分かりやすくifつかったものの、どうせ面は三角形か四角形しか無いので、
num += (len(face) - 2)
としてもOKですね。

Blenderのテキストエディタで開いてALT+Pで実行すると、コンソールにポリゴン数が表示されるはずです。
やってることは、見てのとおり、全メッシュの面を参照してるだけです。
この程度だと、スクリプトよりブログ書くほうが時間かかります…。
こういう自分用ユーティリティー的なのを大量生産して、後でGUI使ってまとめると便利っすな。

次回、多分「メッシュに使ってないマテリアルを一掃する」スクリプト。

0 件のコメント: