0

以下を使用してマージした 100 個の異なる形状ジオメトリがあるとします。

THREE.GeometryUtils.merge(geometry1, geometry2)

すべてではなく個々のシェイプのジオメトリを更新できますか? もしそうなら、どうすればいいですか?

4

1 に答える 1

1

a) 各ジオメトリの頂点オフセット (つまり、最新のものをマージする前に、マージされたジオメトリに既にいくつの頂点があるか) を書き留めてから、それを使用して特定のジオメトリをループして変更するか、b) それぞれが優れたマテリアルである場合、すべての面をループして、修正を正しいマテリアルを持つ面にアタッチされている頂点に制限することができます。

ただし、これはまだ 1 つの大きなジオメトリであるため、編集の少なさに関係なく、全体を GPU にプッシュすることになります。ときどき変更するだけであれば問題ないかもしれませんが、その場合は、全体を再マージするだけで十分なパフォーマンスが得られるかどうかを確認し、より複雑なことは気にしないでください。

変更されたデータのみを GPU にプッシュする必要がある場合は、void bufferSubData(GLenum target, GLintptr offset, ArrayBufferView data)そのための関数が存在します。ただし、これは生の WebGL であり、それにパッチを適用するには、three.js の内部に飛び込む必要があります。

于 2013-05-29T06:12:40.780 に答える