〇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ゴンの数を検知することができるようになりました。
本日は以上です。