Three.js: ΠŸΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚ΠΎΠ² WebGL Mirror

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 17 Π°Π²Π³. 2017  Β·  5ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: mrdoob/three.js

АртСфакты ΠΌΠΎΠΆΠ½ΠΎ воспроизвСсти, ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ² ΠΌΠ°ΡΡˆΡ‚Π°Π± ΠΈ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ пСрСмСстив ΠΊΠ°ΠΌΠ΅Ρ€Ρƒ.

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

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

ВСрсия Three.js
  • [x] Dev
  • [x] r86
Π‘Ρ€Π°ΡƒΠ·Π΅Ρ€
  • [x] Chrome
ΠžΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ систСмы
  • [x] macOS

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

@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://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 Бпасибо!

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ