Artefakte können reproduziert werden, indem die Kamera vergrößert und etwas bewegt wird.
https://threejs.org/examples/webgl_mirror.html
Tatsächlich.
Siehe auch dieses Thema: https://github.com/mrdoob/three.js/issues/11885
Am Ende habe ich das Gefühl, dass der Spiegel nicht richtig implementiert ist.
Das Seitenverhältnis der Hauptkamera wird niemals auf die Spiegelkamera kopiert.
// "examples/Mirror.js" (lines 142-146)
mirrorCamera.near = camera.near;
mirrorCamera.far = camera.far;
mirrorCamera.updateMatrixWorld();
mirrorCamera.updateProjectionMatrix();
Sollte geändert werden zu:
mirrorCamera.updateMatrixWorld();
mirrorCamera.projectionMatrix.copy(camera.projectionMatrix);
Ich werde später eine PR dafür schicken!
Ein weiteres Problem mit dem Spiegel (und dem planaren Ozean) ist, dass es nicht zu funktionieren scheint, wenn logarithmicDepthBuffer
aktiviert ist. Schräge Beschneidungen in der Nähe von Flugzeugen mit der Tiefe und ich habe nie eine Lösung dafür gefunden. Ich wünschte, WebGL hätte glClipPlane
😞
@vanruesc Ich habe mit dem Code
@mrdoob Wenn Sie immer noch
//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 Danke!
Hilfreichster Kommentar
@mrdoob Wenn Sie immer noch