テクスチャ付き3DモデルをwebGLアプリケーションに読み込む最良の方法を理解しようとしていますが、問題があります。私の3Dモデルには1つ以上のテクスチャがあり、これまで見てきた3Dファイルにはこの情報が含まれていないようなので、シェーダにどのテクスチャを使用するかを教えてもらえません。 例を挙げましょう:私は、革シート/クッションを備えた木製の椅子をBlenderでモデル化しました。どの形式で椅子をエクスポートすれば、簡単かつ効率的に抽出できますか: - 頂点位置。 - どの頂点が各面に属しているかを定義するfaces/index情報。 - UVコード。 - 法線 - テクスチャファイルの名前/場所。 - 頂点ごとに使用するテクスチャ。外部で生成された3Dファイルの頂点ごとにどのようなテクスチャ(以前に読み込まれたテクスチャの多く)をfrag-shaderに伝えるには?
JSで頂点とテクスチャIDのペアを取得したら、その特定の頂点にどのテクスチャを使用するかを知ることができる属性(シェーダごとの属性)としてシェーダに渡すことができます(drawElementsを使用して描画します)それは一度にすべて)しかし、私はどのようにその情報に手をつけて始めるのか分からない。
私がウェブ上で見つけたすべての記事、ハウツー、チュートリアルでは、モデルは1つのテクスチャのみで読み込まれています。私はまた、three.jsがすでにこの問題を解決しているようだが、私はwebGLでこれらのライブラリ(three.js、glge、scene.sj、spiderGLなど)に移動する前に、 。
すべてのヘルプ、リンクまたは提案は、最も高く評価されます。
返信ありがとうToji(かなりきれいなブログ - tojicode - あなたが持っている、btw)。だから、私はあなたの2番目の提案(フレームごとに1つのテクスチャをレンダリングする)に行くためにフレームをどこかに保存しなければならないと考えています(フレームバッファ、多分)。再度、感謝します。 – rod
3Dフォーマットについて:私は正式にまだ3Dフォーマットを選択していませんでした。私はcollada、JSON、3dsを使いこなそうとしましたが、どちらが私にとって最も良いかわかりません。私はJSONの方に傾いています。構文解析するのは簡単です。 JSONの内部でバイナリを参照してサイズを縮小する例がいくつか見つかりましたが、現在そのコンセプトを検討しています。 – rod
申し訳ありませんが、私は何かを明確にする必要があります。フレームあたり1つのテクスチャを意味するわけではありませんでした。私はドローコールごとに1つのテクスチャを意味した。 draw呼び出しは、本質的に、gl.drawArrays/gl.drawElementsを呼び出すたびに行われます。 – Toji