Three.js: Exemples d'artefacts de miroir WebGL

Créé le 17 août 2017  ·  5Commentaires  ·  Source: mrdoob/three.js

Les artefacts peuvent être reproduits en zoomant et en déplaçant légèrement la caméra.

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

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

Version Three.js
  • [x] Dev
  • [x] r86
Le navigateur
  • [x] Chrome
OS
  • [x] macOS
Bug

Commentaire le plus utile

@mrdoob Si vous êtes toujours en train de déconner, je pense qu'il y a place à la simplification ...

//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 );

Tous les 5 commentaires

En effet.
Voir également cette rubrique: https://github.com/mrdoob/three.js/issues/11885
À la fin, j'ai l'impression que le miroir n'est pas correctement implémenté.

Le rapport hauteur / largeur de la caméra principale n'est jamais copié sur la caméra miroir.

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

Devrait être remplacé par:

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

J'enverrai un PR pour cela plus tard!

Un autre problème avec le miroir (et l'océan planaire) est qu'il ne semble pas fonctionner lorsque le logarithmicDepthBuffer est activé. L'écrêtage oblique proche du plan gâche la profondeur et je n'ai jamais trouvé de solution à cela. J'aurais aimé que WebGL ait glClipPlane 😞

@vanruesc J'étais en train de

@mrdoob Si vous êtes toujours en train de déconner, je pense qu'il y a place à la simplification ...

//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 Merci!

Cette page vous a été utile?
0 / 5 - 0 notes