Three.js: 面のないジオメトリは引き続きメッシュでレンダリングされます

作成日 2017年08月07日  ·  3コメント  ·  ソース: mrdoob/three.js

私のジオメトリには常に同じ頂点がありますが、オプションで面が追加されるという考え方です。 しかし、それは関係なくランダムにものを描くことを決定します。 ここでデモ。

Bug Won't fix

最も参考になるコメント

今日、この問題をデバッグしました。 Geometryは内部でBufferGeometry変換されます。 この変換の結果は、オブジェクトのタイプ(メッシュ、ラインなど)によって異なります。 したがって、 @ makcの例では、ジオメトリはLineオブジェクトのジオメトリとして変換されます。 これにより、位置と色の属性が作成されます。 Meshのインスタンスが同じGeometryオブジェクトでレンダリングされると、レンダラーは同じキャッシュされたBufferGeometryインスタンスを返します。

https://github.com/mrdoob/three.js/blob/ec67749b0767e2727deebd52da2dbd3a4e7ab6a2/src/renderers/webgl/WebGLGeometries.js#L63 -L65

これが、デモでこれらの緑色の三角形が表示される理由です。 MeshLineは、同じ内部BufferGeometryを共有し、解釈が異なります。 BufferGeometryキャッシュするときにオブジェクトのタイプを尊重しようとすると、この問題を解決できると思います。

または、最初にBufferGeometryを使用することをお勧めします:sweat_smile:

全てのコメント3件

ここでの反対の問題-それらが定義されている面が表示されません。 おそらくこれは、ジオメトリがラインとメッシュの間で共有されているためです。

今日、この問題をデバッグしました。 Geometryは内部でBufferGeometry変換されます。 この変換の結果は、オブジェクトのタイプ(メッシュ、ラインなど)によって異なります。 したがって、 @ makcの例では、ジオメトリはLineオブジェクトのジオメトリとして変換されます。 これにより、位置と色の属性が作成されます。 Meshのインスタンスが同じGeometryオブジェクトでレンダリングされると、レンダラーは同じキャッシュされたBufferGeometryインスタンスを返します。

https://github.com/mrdoob/three.js/blob/ec67749b0767e2727deebd52da2dbd3a4e7ab6a2/src/renderers/webgl/WebGLGeometries.js#L63 -L65

これが、デモでこれらの緑色の三角形が表示される理由です。 MeshLineは、同じ内部BufferGeometryを共有し、解釈が異なります。 BufferGeometryキャッシュするときにオブジェクトのタイプを尊重しようとすると、この問題を解決できると思います。

または、最初にBufferGeometryを使用することをお勧めします:sweat_smile:

@mrdoob新しいラベルWont't fixを導入し、それを問題に割り当てて閉じることをお勧めします。 とにかくプロジェクトがGeometryレンダリングを停止する場合、レンダラーに修正を追加することは意味がないと思います。 この問題の解決策は、 BufferGeometryです。

このページは役に立ちましたか?
0 / 5 - 0 評価