2

overdraw が true に設定されている場合、キャンバス レンダラーは実際には面の端を超えて塗りつぶしを拡張するため、面が少し重なるようです。これは通常は問題ありませんが、マテリアルが透明な場合、これらの重なったエッジによって望ましくないワイヤーフレーム タイプのアーティファクトが作成されます。

例のピンクの矢印を参照してください:

塗りつぶしが実際にどれだけ拡張されているかを試す方法はありますか? ソース コードが単に私の頭の中にあるのではないかと思いますが、誰かがそれがどこで処理されているか (ソースのどの行) を指摘できれば、それは大歓迎です。それができない場合は、誰かが別の解決策または回避策を知っていることを願っています。

WebGL レンダラーを使用すると問題が解決することはわかっていますが、可能であれば Canvas で機能するように依頼されています。

4

1 に答える 1

3

うん。残念ながら、を使用した解決策はありませんCanvasRenderer

しかし、いくつかの値を試してみたい場合...これはそれを行う関数です:

https://github.com/mrdoob/three.js/blob/master/src/renderers/CanvasRenderer.js#L1011-1025

あなたはこれを試すことができます...

idet = ( 1 / Math.sqrt( det ) ) * 0.5;

次に、システムに python がインストールされている状態で、/utils に移動し、これを実行して新しい Three.js を生成します。

python build.py --common

そして、これはあなたが終わったときにそれを縮小するためのものです:

python build.py --common --minified

しかし、ブラウザによって異なる結果が得られる可能性があると思います。

あなたがこれを解決するかどうか知りたいです。

于 2012-08-04T19:51:17.647 に答える