Three.js: WebGLミラーのサンプルアーティファクト

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

ズームインしてカメラを少し動かすと、アーティファクトが再現される場合があります。

https://threejs.org/examples/webgl_mirror.html

screen shot 2017-08-16 at 8 53 26 pm

Three.jsバージョン
  • [x]開発
  • [x] r86
ブラウザ
  • [x]クローム
OS
  • [x] macOS
Bug

最も参考になるコメント

@mrdoobまだいじっているのなら、単純化の余地があると思います...

//mirrorCamera.up.set( 0, - 1, 0 );
//mirrorCamera.up.applyMatrix4( rotationMatrix );
//mirrorCamera.up.reflect( normal ).negate();

mirrorCamera.up.set( 0, 1, 0 ).applyMatrix4( rotationMatrix ).reflect( normal );

全てのコメント5件

確かに。
このトピックも参照してください: https
最後に、ミラーが適切に実装されていないように感じます。

メインカメラのアスペクト比がミラーカメラにコピーされることはありません。

// "examples/Mirror.js" (lines 142-146)
mirrorCamera.near = camera.near;
mirrorCamera.far = camera.far;
mirrorCamera.updateMatrixWorld();
mirrorCamera.updateProjectionMatrix();

次のように変更する必要があります。

mirrorCamera.updateMatrixWorld();
mirrorCamera.projectionMatrix.copy(camera.projectionMatrix);

後でPRを送ります!

ミラー(および平面の海)のもう1つの問題は、 logarithmicDepthBufferが有効になっていると機能しないように見えることです。 斜めの平面近くのクリッピングは深さで混乱し、私はこれに対する解決策を見つけられませんでした。 WebGLにglClipPlaneあればいいのに😞

@vanruescコードをいじっていたので、直接実装しました。 どうもありがとう!

@mrdoobまだいじっているのなら、単純化の余地があると思います...

//mirrorCamera.up.set( 0, - 1, 0 );
//mirrorCamera.up.applyMatrix4( rotationMatrix );
//mirrorCamera.up.reflect( normal ).negate();

mirrorCamera.up.set( 0, 1, 0 ).applyMatrix4( rotationMatrix ).reflect( normal );

@WestLangleyありがとう!

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

関連する問題

boyravikumar picture boyravikumar  ·  3コメント

Bandit picture Bandit  ·  3コメント

Horray picture Horray  ·  3コメント

filharvey picture filharvey  ·  3コメント

fuzihaofzh picture fuzihaofzh  ·  3コメント