ΠΡΡΠ΅ΡΠ°ΠΊΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΎΡΠΏΡΠΎΠΈΠ·Π²Π΅ΡΡΠΈ, ΡΠ²Π΅Π»ΠΈΡΠΈΠ² ΠΌΠ°ΡΡΡΠ°Π± ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅ΡΡΠΈΠ² ΠΊΠ°ΠΌΠ΅ΡΡ.
https://threejs.org/examples/webgl_mirror.html
ΠΠ΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ.
Π’Π°ΠΊΠΆΠ΅ ΡΠΌΠΎΡΡΠΈΡΠ΅ ΡΡΡ ΡΠ΅ΠΌΡ: https://github.com/mrdoob/three.js/issues/11885
Π ΠΊΠΎΠ½ΡΠ΅ ΠΊΠΎΠ½ΡΠΎΠ², ΠΌΠ½Π΅ ΠΊΠ°ΠΆΠ΅ΡΡΡ, ΡΡΠΎ ΠΠ΅ΡΠΊΠ°Π»ΠΎ Π½Π΅ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ΠΎ Π΄ΠΎΠ»ΠΆΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ.
Π‘ΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ ΡΡΠΎΡΠΎΠ½ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΊΠ°ΠΌΠ΅ΡΡ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΊΠΎΠΏΠΈΡΡΠ΅ΡΡΡ Π½Π° Π·Π΅ΡΠΊΠ°Π»ΡΠ½ΡΡ ΠΊΠ°ΠΌΠ΅ΡΡ.
// "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);
Π― ΠΏΡΠΈΡΠ»Ρ ΠΏΠΈΠ°Ρ ΠΏΠΎΠ·ΠΆΠ΅!
ΠΡΡΠ³Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ° Ρ Π·Π΅ΡΠΊΠ°Π»ΠΎΠΌ (ΠΈ ΠΏΠ»ΠΎΡΠΊΠΈΠΌ ΠΎΠΊΠ΅Π°Π½ΠΎΠΌ) Π·Π°ΠΊΠ»ΡΡΠ°Π΅ΡΡΡ Π² ΡΠΎΠΌ, ΡΡΠΎ ΠΎΠ½ΠΎ Π½Π΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ, ΠΊΠΎΠ³Π΄Π° Π²ΠΊΠ»ΡΡΠ΅Π½ 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 Π‘ΠΏΠ°ΡΠΈΠ±ΠΎ!
Π‘Π°ΠΌΡΠΉ ΠΏΠΎΠ»Π΅Π·Π½ΡΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΉ
@mrdoob ΠΡΠ»ΠΈ Π²Ρ Π²ΡΠ΅ Π΅ΡΠ΅