web-dev-qa-db-ja.com

どの3Dモデル形式を使用する必要がありますか?

ゲームエンジンを作成していて、どの3Dモデル形式を使用/ロード/エクスポートする必要があるのか​​疑問に思っていますか? Objは普遍的で簡単に見えますが、ほとんどのモデルにはエラーが含まれており、他の形式と同じくらい近くに格納されていないため、信頼性が低いようです。

MD2/3/5などのゲーム専用のフォーマットがあるようですが、よくわかりません。モデル化する場合はwings3dを使用します。フォーマットIDから必要なものとサポートを純粋にロードする以外に、他の詳細がわからないので、 IKを実装する必要があるなど、実装しますか?また、インバースキネマティクスやボーンリギングではなく、スクリプトごとのアニメーションを使用できますか?

32
Tom J Nowell

Collada は、Khronosグループ(OpenGL標準化団体)が所有する3Dモデル用のオープンXMLベースのフォーマットです

Collada.org FAQから:

COLLADA 1.4.x機能セットには以下が含まれます。

  • メッシュ形状
  • 階層の変換(回転、平行移動、シアー、スケール、マトリックス)
  • 効果
  • シェーダー(Cg、GLSL、GLES)
  • 材料
  • テクスチャー
  • ライト
  • カメラ
  • スキニング
  • アニメーション
  • 物理学(リジッドボディ、コンストレイント、ラグドール、衝突、ボリューム)
  • インスタンス化
  • テクニック
  • 複数表現
  • 資産
  • ユーザーデータ

どの3D形式をサポートするかを考える前に、エンジンに実装する予定の機能に本当に集中する必要があると思います。それらを要件として書き留め、エンジンを紹介したいので、リストからほとんどの機能をサポートする形式を選択します(私は、あなたのエンジンが一般に利用できるように計画していると想定しています)。エンジンに特定の機能がある場合は、独自の形式を使用することもできます(これは常にゲームエンジンに適しています)。

その後、可能な限り多くの一般的な形式(.X、.3DS、.OBJ、.B3D)をサポートします...エンジンがアクセスしやすくなるほど、より多くの人々がそれを使用したくなるでしょう!

Colladaは見た目も一般的な形式ですが、Nilsが述べているように、最終的な展開には理想的な形式ではありません。

5
Paul-Jan

私は自分のバイナリ形式を使用しています。既存のフォーマットを使用しようとしましたが、常に制限に直面しました。回避できるものもあれば、ショートッパーがいるところもあります。

Colladaは一見の価値があります。 3Dエンジンで読めるフォーマットほ​​どいいとは思いません。ただし、一般的なデータ交換形式としては問題ありません。

http://www.collada.org/mediawiki/index.php/Main_Page

2

Colladaの+1。また、本当に高速にロードするためのカスタムネイティブバイナリフォーマットが必要な場合もあります(通常、頂点/インデックスバッファデータのバイナリダンプに加えて、マテリアルとスケルトンデータ、および必要に応じて衝突データ)。

ゲーム業界の1つの傾向は、エンジンの開発者ビルドでcolladaのような形式のロードをサポートすることですが、リリース用に最適化されたバージョンをエクスポートするツールチェーンも持っています。開発者バージョンはメッシュを動的に更新できるため、アーティストが変更を保存すると、ファイルが自動的に再ロードされ、モデルの(ほぼ)瞬時のWYSIWYGビューが可能になりますが、完全に最適化されたリリース形式が提供されます。

2
sdclibbery

colladaを十分にサポートしてから、他の形式との間で優れたコンバータを提供します(これは難しいかもしれません)。これにより、最大限の柔軟性が得られます。 C4エンジン を見てください。

1
Scott Evernden

Colladaは素晴らしいですが、3Dアプリ側のほうに住んでいます。つまり、ゲームエンジン内から3Dデータをロードするのではなく、アプリケーション間で3Dデータを転送するのに最適です。ルアを調べましたか?途方もなく速い(ゲームに最適)かつ非常に柔軟(エンジンに必要なあらゆるデータを表すために使用できる)のスクリプト言語であるため、ゲームで広く使用されています。

0
Mathew