私はHalf-Edgeデータ構造に基づいて独自のMesh構造を持つ3D OpenGl(C++)アプリケーションを開発しています。 Wavefront objファイルをメッシュ構造にロードする簡単な方法を構築したいと思います。もちろん、私はそんなに素直に行うことはできますが、もっと効率的なやり方が必要です(プロフェッショナルなアプリケーションがファイルを順番にローディングしていないことは知っています。HalfEdge Meshの.objファイルローダーを高速化する方法はありますか?
誰かがチュートリアルや本当に高速OBJローダーの例を教えてもらえますか? Half Edgeのデータ構造と関係があるのであれば、それが望ましいでしょう。
編集:
私の周り
1を得るために探しています二つの基本的な問題があります)ファイル
2から浮動小数点数を読み取る一般的な遅さを避けてください)どのように私はインテリジェントに決定かオンザフライで各エッジの「隣接する」ハーフエッジ。私は、作成されているエッジの対称または次のエッジが既に存在するかどうかを判断するための何らかのハッシング関数を想像しています。
'std :: unordered_set'はあなたにO(1)ルックアップを与えます。 –
真ですが、要素を頻繁に挿入または消去する必要があるときは、ハッシュマップを避ける傾向があります。多くのデータを読み込むとき、 'std :: unordered_set'(ハッシュマップ)を頻繁に再ハッシュする必要がありますが、これは非常に高価な操作です。いくつのプリミティブが共有されているか分かっていればスペースを予約できますが、OBJファイルではそれが分かりません。どのコンテナが異なるファイルサイズに最も適しているかは興味深いでしょう。 – PeddleSpam