0

モデルビューア用にColladaローダーを作成しました。

今すぐ書くと、すべての頂点とインデックスをループし、メッシュをレンダリングできるようにインデックスと頂点バッファを作成します。

モデルが三角測量されていない場合、2つのオプションがあります。インデックスがバッファに書き込まれるときにインデックスを処理することもできます(つまり、インデックスを計算して追加し、三角形を作成します)。

または、バッファを書き込む前にメッシュ全体を三角測量し、バッファシステムをそのままにしておくこともできます(メッシュは事前に三角測量されていると想定されます)。

事前にモデルを切り捨てるには、リスト全体をリンクリストループにロードし、新しいインデックスを挿入して4つ以上のポリゴンを三角形にハックする必要があります。

メッシュを作成するときに三角形分割した場合、4つ以上のポリゴンの書き込みを拒否し、それらを別のバッファーに入れ、そのバッファーに4つ以上のポリゴン全体が含まれているときに、三角形分割して新しいインデックスを書き込む必要があります。

これにより、基本的に、4つ以上の三角形に遭遇するたびにのみトリガーされる別のforループが追加されます。

これは私がこれまでに書いた中で最も複雑なことであり、どちらの方向がより効率的になるかについて頭を包むのに非常に苦労しています。

1つは、メッシュ全体を複製して処理できるようにすることで、使用しているメモリの量を2倍にすることです。もう1つは、4つ以上のポリゴンに遭遇したときにのみトリガーされるネストされたforループを含みます。

両方を実際に作成してテストせずに、2つのオプションの複雑さを測定する方法について、誰かがアドバイスを提供できますか?

4

1 に答える 1

1

時折発生する状態を処理するために内部ループを追加することは問題ありません。私があなたの問題を正しく理解しているなら、あなたはポリゴンをテストし、必要に応じて何らかの方法でそれらを三角測量する必要があります。条件付きで実行される内部ループは、これを適切に反映しています。

内部ループによって関数が長すぎる/醜い/読みにくいと思われる場合は、内部ループを含む別の「triangulate_polygon()」関数を記述して、条件付きで呼び出すことができます。

于 2012-06-22T00:59:43.953 に答える