web-dev-qa-db-ja.com

3DモデルをOpenGL / C ++プロジェクトにインポートするための推奨ファイル形式とグラフィックライブラリ?

あなたがしたい場合:

  • 3Dエディターでオブジェクトをモデル化します。 Blender、Mayaなど
  • モデルをデータ/ファイル形式にエクスポートします
  • openGLとC/C++を使用してモデルをプロジェクトにインポートします

次に:

  • シンプルさ、移植性、互換性(一般的/人気)の観点から、どのファイル形式にエクスポートすることをお勧めしますか?
  • モデルをOpenGLC/C++プロジェクト(つまり、できればオープンソース)にインポートするためにどのグラフィックライブラリを使用することをお勧めしますか?
  • さらに、アニメーションをキャプチャするデータ/ファイル形式、つまり「アニメーションモデル」形式があります。これにより、アニメーションを3Dエディターでモデル化し、コード内で何らかの方法で呼び出すことができます(たとえば、アニメーションシーケンス内のフレームへのアクセスなど)。時間の経過に伴う変更に関連する詳細を保存/ロードするためのパラダイム)?

一般的に言って、私は優先事項としてシンプルさを求めています。つまり、アートとコンピュータサイエンスの両方のバックグラウンドを組み合わせることから始めるのに役立ちます。私はUMassでコンピューターサイエンスを専攻していると同時に、大学でグラフィックデザインの選択科目を受講したり、夏/冬のセッション中にボストン美術館でクラスを受講したりして、アートの「疑似」ダブルメジャーのようなものをしています。言い換えれば、私は完全な初心者ではありませんが、同時に、基本的なデモンストレーションプロジェクトを開始するのが非常に困難になる、クレイジーな高度な構成で過負荷になるオプションは本当に必要ありません。つまり、これら2つの世界の間のギャップを埋める方法を理解するための最初のステップとして。ユーザーが操作できる3Dキャラクターをフィーチャーしたプログラムを作成します。

29
Simone

[〜#〜] collada [〜#〜](最後に「ah」を付けて言っています)、および Assimp (ple as that)。

では、なぜCOLLADAなのか?シンプル:

  • COLLADAは、Khronos(特にSony)によって作成されたオープンスタンダードです。オープンスタンダードフォーマットの美しさは、それがスタンダードであるということです。標準に準拠した製品の出力は、別の標準に準拠した製品でも正しく読み取られることが保証されます。残念ながら、一部の3Dモデリング製品は、COLLADAの標準準拠の測定にそれほど特別ではありません。しかし、それでも安心してください。Blender、Maya、3ds Max、および3Dモデリングの他のすべてのビッグネームは、このフォーマットを適切にサポートしています。
  • COLLADAはXMLを使用します。これにより、独自のリーダーまたはライターを作成することを計画している場合に、はるかに簡単になります。
  • 追加:COLLADAは、特定の会社に関連付けられていない唯一の形式だと思います。これは私たちにとって非常に良いことです。
  • 追加2:COLLADAの解析が遅いことが知られています。それは本当だ。しかし、考えてみてください。他のすべての非バイナリ形式(fbxなど)にも同じ問題があります。あなたのニーズには、COLLADAで十分です。
  • 追加3:COLLADAはアニメーションをサポートしています!

インポーターライブラリーには、Assimpを強くお勧めします。どうして?

  • Assimpは、想像できるあらゆる一般的なフォーマットをサポートしています。すべてのフォーマットに統一されたインターフェースを備えているため、別のフォーマットに切り替えるのはそれほど簡単ではありません。
  • Assimpは拡張可能です。したがって、独自の形式をインポートしても、コードを変更することはできません。
  • 追加4:Assimpはオープンソースです!オープンソースソフトウェアを応援しよう!
14
Mark Garcia

まず、 ここ 推奨されるモデルの読み込みについて読むことができますlbs.Lib Assimp 本当に優れており、多くの形式をサポートしています。推奨される形式については、Collada-そのためお勧めしません解析に時間がかかるXML(テキスト)ベースの形式です。 Obj形式も普及していますが、Colladaと同じ問題があります。構造が非常に単純なので、独自のパーサーを作成する場合でも問題はありませんが、代わりにバイナリの3Dをお勧めします。アニメーションはサポートされていません。静的メッシュとアニメーションの両方をサポートする今日最も人気のある形式はFBXです。 無料でダウンロード オートデスクからFBX SDKを使用して、エンジンに接続できます。FBXを選択する理由は、SDKとフォーマットは非常に堅牢です。たとえば、FBXには、ジオメトリやアニメーションだけでなく、ライトやカメラなどのシーンオブジェクトも埋め込むことができます。オートデスクのドキュメントも非常に便利です。それが役に立てば幸い。

5
Michael IV

基本的に、プログラムで使用される頂点バッファとインデックスバッファのバイナリダンプである独自のカスタム形式を使用することをお勧めします。 (そこでd3d用語を使用すると、openglの概念は同じですが、名前が異なるかどうかを思い出せません)。

次に、ほとんどすべての形式を取り、カスタム形式でファイルを書き出すassimpを使用して別のプログラムを作成します。次に、colladaなどを使用して実際のモデルを保存できますが、実行時にその形式をロードする際の複雑さと速度の低下はありません。

3
jcoder