ODA SDKs バージョン 21.3 より前は、OdGiProgressiveMeshGenerator を使用するためにシェルデータからプログレッシブメッシュを作成する必要があり、初期データ転送後にジェネレータのステータスを確認することが含まれていました。ステータスが OK でない場合、プログレッシブメッシュは構築できないか、データが失われる可能性がありました。そのため、プログレッシブメッシュを生成するか、元のシェルデータをどこかに保持するかを決定する必要がありました。
バージョン 21.3 以降、新しい OdGiProgressiveMeshEx クラスは OdGiProgressiveMeshGenerator と OdGiProgressiveMesh をラップします。このクラスは、プログレッシブメッシュの生成がキャンセルされた場合、またはデータの非多様性によりメッシュが生成されなかった場合でも、初期シェルデータを保持します。
OdGiProgressiveMeshEx クラスは、同じ API を介してプログレッシブメッシュデータと初期データへのアクセスを提供します。
プログレッシブメッシュを作成する
プログレッシブメッシュを作成するには、OdGiProgressiveMeshEx のインスタンスを作成し、初期データで埋め、buildProgressiveMesh メソッドを呼び出します。
OdGiProgressiveMeshExPtr pPM = OdGiProgressiveMeshEx::createObject();
pPM->setupInitialShell( pts.size(), pts.asArrayPtr(), faces.size(), faces.asArrayPtr() );
pPM->options().setMinVertices( nMinPoints );
pPM->options().setMinFaces( nMinFaces );
pPM->buildProgressiveMesh();
OdGiProgressiveMeshEx::options() メソッドを使用して OdGiProgressiveMeshGeneratorOptions にアクセスできます。
OdGiProgressiveMeshEx::buildProgressiveMesh() メソッドを使用して、頂点、面、およびエッジデータを指定します。
OdGiProgressiveMeshEx::setGenerationAbortFlags() メソッドを使用すると、プログレッシブメッシュの生成を中止する OdGiProgressiveMeshGenerator::Status フラグのセットを指定できます。
OdGiProgressiveMeshEx::isProgressiveMeshGenerated() メソッドは、プログレッシブメッシュが正常に生成された場合に true を返します。このメソッドが false を返す場合、OdGiProgressiveMeshEx は初期データで動作し、すべてのプログレッシブメッシュ固有の呼び出し (setLOD() など) は無視されます。
メッシュが生成された場合、OdGiProgressiveMeshEx::progressiveMesh() の呼び出しによって取得できます。
VisualizeSDK
Visualize SDKバージョン21.3以降、OdTvProgressiveMeshDataクラスはOdGiProgressiveMeshの代わりにOdGiProgressiveMeshExをラップします。そのため、メッシュが生成されなくても、初期データは保持され、レンダリングできます。
OdTvProgressiveMeshDataクラスには、メッシュが正常に生成された場合にtrueを返す新しいisProgressiveMeshGenerated()メソッドがあります。