Three.js: WebGL рдорд┐рд░рд░ рдЙрджрд╛рд╣рд░рдг рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 17 рдЕрдЧре░ 2017  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: mrdoob/three.js

рдХреИрдорд░реЗ рдХреЛ рдереЛрдбрд╝рд╛ рд╕рд╛ рдЬрд╝реВрдо рдЗрди рдФрд░ рдореВрд╡ рдХрд░рдХреЗ рдХрд▓рд╛рдХреГрддрд┐рдпреЛрдВ рдХреЛ рдкреБрди: рдкреНрд░рд╕реНрддреБрдд рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

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

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

рддреАрди.рдЬреЗрдПрд╕ рд╕рдВрд╕реНрдХрд░рдг
  • [x] рджреЗрд╡
  • [x] r86
рдмреНрд░рд╛рдЙрдЬрд╝рд░
  • [x] рдХреНрд░реЛрдо
рдУрдПрд╕
  • [x] macOS

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

@ рдорд░реНрдбреЛрдм рдЕрдЧрд░ рдЖрдк рдЕрднреА рднреА рдЧрдбрд╝рдмрдбрд╝ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рд░рд▓реАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рд╣реИ ...

//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 рдореИрдВ рдХреЛрдб рдХреЗ рд╕рд╛рде рдЦрд┐рд▓рд╡рд╛рдбрд╝ рдХрд░ рд░рд╣рд╛ рдерд╛ рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдЗрд╕реЗ рд╕реАрдзреЗ рд▓рд╛рдЧреВ рдХрд┐рдпрд╛ред рдмрд╣реБрдд рдзрдиреНрдпрд╡рд╛рдж!

@ рдорд░реНрдбреЛрдм рдЕрдЧрд░ рдЖрдк рдЕрднреА рднреА рдЧрдбрд╝рдмрдбрд╝ рдХрд░ рд░рд╣реЗ рд╣реИрдВ, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╕рд░рд▓реАрдХрд░рдг рдХреЗ рд▓рд┐рдП рдЬрдЧрд╣ рд╣реИ ...

//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 рд░реЗрдЯрд┐рдВрдЧреНрд╕