本日は Blender の技術調査枠です。
Blender2.9で利用可能なpythonスクリプトを作ります。
メッシュのポリゴン数を取得する
python スクリプトからメッシュオブジェクトのポリゴン数を取得してみます。
Mesh データの polygons からメッシュのコレクションが取得できるので、このコレクションの数からポリゴン数を取得できます。
docs.blender.org
サンプルコード
指定オブジェクトのポリゴン数を返却します。取得に失敗した場合は 0 を返します。
・Script_meshpolygons_count.py
# bpyインポート import bpy # 指定メッシュのポリゴン数を取得する def count_polygons_mesh(arg_object) -> int: """指定メッシュのポリゴン数を取得する Keyword Arguments: arg_objectname {bpy.types.Object} -- 対象オブジェクト Returns: int -- ポリゴン数(取得失敗時:0) """ # 指定オブジェクトがメッシュか確認する if arg_object.type != 'MESH': # 指定オブジェクトが存在しない場合は処理しない return 0 # Meshデータを取得する # メッシュアクセスのマニュアル # (https://docs.blender.org/api/current/bpy.types.Mesh.html) msh = arg_object.data return len(msh.polygons) # 関数の実行例 # 全オブジェクトデータを取得する for obj in bpy.data.objects: # ポリゴン数を取得する polycount = count_polygons_mesh(obj) # 結果をコンソールに表示する print(obj.name + " : " + str(polycount))
シーン内の全オブジェクトの総ポリゴン数を返却します。取得に失敗した場合は 0 を返します。
・Script_allmeshpolygons_count.py
# bpyインポート import bpy # 指定メッシュのポリゴン数を取得する def count_allpolygons_mesh() -> int: """全メッシュの総ポリゴン数を取得する Keyword Arguments: Returns: int -- ポリゴン数(取得失敗時:0) """ # 総ポリゴン数のカウンタ polygons_count = 0 # 全メッシュデータを取得する for obj in bpy.data.objects: # ポリゴン数を加算する polygons_count += count_polygons_mesh(obj) return polygons_count # 指定メッシュのポリゴン数を取得する def count_polygons_mesh(arg_object) -> int: """指定メッシュのポリゴン数を取得する Keyword Arguments: arg_objectname {bpy.types.Object} -- 対象オブジェクト Returns: int -- ポリゴン数(取得失敗時:0) """ # 指定オブジェクトがメッシュか確認する if arg_object.type != 'MESH': # 指定オブジェクトが存在しない場合は処理しない return 0 # Meshデータを取得する # メッシュアクセスのマニュアル # (https://docs.blender.org/api/current/bpy.types.Mesh.html) msh = arg_object.data return len(msh.polygons) # 関数の実行例 # 総ポリゴン数を取得する polycount = count_allpolygons_mesh() # 結果をコンソールに表示する print("polygons : " + str(polycount))
三角面数を取得する場合
ポリゴン数ではなく三角面数を取得する場合は以下の記事を参考にして下さい。
bluebirdofoz.hatenablog.com