0

重複の可能性:
複数のインデックスを持つメッシュのレンダリング

これは、OBJファイルからのように、インデックスバッファを使用してカスタムジオメトリをレンダリングすることについてです。3Dグラフィックスの規則については少し知っていますが、WebGLではほとんど何もしていません。私の質問の短い形式は、「WebGLでインデックスバッファをどのように使用しますか?」です。

私がやりたいのは、カスタムジオメトリの一部について、再生中の位置ベクトルのリストと再生中のUVベクトルのリストを作成することです(法線をスキップします)。次に、三角形を描画するときに、既存の3つの位置ベクトルへのポインターと3つの既存のUVベクトルへのポインターを使用して各三角形を定義します。(それがOBJの設定方法だからです)

私が読んだものから(私はこれを100の異なる方法でグーグルで検索し、決定的な答えを得ることができなかったことを誓います)、UVと位置を頂点としてまとめる必要があり、三角形は3つのポインターとして定義されますこれらの頂点の。しかし、UVのリストが位置のリストと異なる長さである場合はどうなりますか?

私が立方体を持っているとしましょう。これは8つの位置ベクトルです。ただし、各面が同じ正方形のUVレイアウトであるとすると(レンダリングすると、各面は同じように見えるはずです)。これは4つの(一意の)UVです。それで?

これは、この方法を放棄して弾丸を噛み、12個の三角形すべてについて、各位置とUVを定義する必要があるようなものです。立方体のエッジに沿って位置ベクトルを繰り返し、面の対角線に沿ってuvを繰り返すという「コスト」がかかります。これが受け入れられている慣行である場合、それは問題ありません。私はこれが正しい方法で行われていることを確認したいだけです。

4

2 に答える 2

1

頂点の位置、テクスチャ座標、法線などを含む配列は、同じ長さである必要があります。これは、多くの場合、冗長データを意味します。キューブは、冗長性が特に悪い一例です。実際には、24個の頂点と24個のtexcoordを渡す必要があります。

于 2012-10-18T20:55:00.073 に答える
0

立方体の頂点を再利用できないことはすでに聞いたことがありますが、いくつかの追加のコンテキストとして、最新の3Dコンテンツには滑らかで平坦でない表面がたくさんあることに注意してください。したがって、三角形間のほとんどの結合は、同じ法線プロパティと他のプロパティを持っているため、頂点を共有できます。属性が不連続である鋭いエッジはあまり一般的ではないため、最適化する必要はありません。

于 2012-10-19T00:56:29.067 に答える