〇Nゴンとは?
Nゴンはメッシュの形状を表す概念です。
通常ポリゴンモデルは3つの頂点から構成される面によって構成されます。
3つの頂点の場合はポリゴンと呼ばれますが、Blenderを含む一部のアプリケーションについては3つを超える頂点によって構成される面も使用されています。(広義にはポリゴン(polygon)=poly(多くの)-gon(角)という意味であり、ポリゴンという言葉自体は多角形全体を指します。)
N個の頂点であらわされるという意味でこのようなメッシュをNゴンと呼びます。

〇Blenderで通常機能でNゴンを検知する
まずはPythonで自作する前にBlender自体に組み込まれている機能がありますのでそちらを紹介します。
Blenderの場合は面の頂点数を基準に選択を行う機能があります。

これは編集モードで選択→特徴で全選択→Faces by Sides(面の辺数)を選択します。

3Dビューポートに表示されるウィンドウで頂点数を3に設定してタイプを大きいに設定することでNゴンが選択されるようになります。

〇Pythonを使用してNゴンを検知する
まずはすべてのポリゴン数を検出するコードを書きます。
import bpy
# アクティブなオブジェクトを取得
obj = bpy.context.active_object
if obj is not None and obj.type == 'MESH':
# メッシュデータを取得
mesh = obj.data
# ポリゴン数を出力
print("ポリゴン数: ", len(mesh.polygons))
else:
print("メッシュオブジェクトが選択されていません")
このコードを実行すると次のようにコンソールにポリゴン数が出力されます。
![]()
ここで使用しているbpy.context.active_object.data.polygonsによってそのオブジェクトのすべてのポリゴン数を出力できます。
次に3つ以上の頂点で構成されるNゴンの数を検知します。
import bpy
# アクティブなオブジェクトを取得
obj = bpy.context.active_object
if obj is not None and obj.type == 'MESH':
# メッシュデータを取得
mesh = obj.data
# ポリゴン数を出力
ngon_count = sum(1 for p in mesh.polygons if len(p.vertices) > 3)
print("Nゴンの数: ", ngon_count)
else:
print("メッシュオブジェクトが選択されていません")
このコードを実行することでNゴンの数を出力できます。

こちらのコードでは選択されたメッシュオブジェクトから3つ以上の頂点を持つポリゴンを検出しています。
if len(p.vertices) > 3は3つ以上の頂点を持つ場合に真となります。
pはすべてのポリゴンを示しており、最終的にsum()関数によって加算されてNゴンの数となります。
以上でNゴンの数を検知することができるようになりました。
本日は以上です。