Three.js: рдиреЙрд░реНрдорд▓реНрд╕ рдЬрд╛рд▓ рдХреЗ рдХреБрдЫ рд╣рд┐рд╕реНрд╕реЛрдВ рдкрд░ рдлрд╝реНрд▓рд┐рдк рдХрд░рддреЗ рд╣реИрдВ рдЬрд┐рдирдореЗрдВ рдбрдмрд▓ рдкрдХреНрд╖реАрдп рд╕рд╛рдордЧреНрд░реА рд╣реЛрддреА рд╣реИ

рдХреЛ рдирд┐рд░реНрдорд┐рдд 23 рдЕрдХреНрддреВре░ 2019  ┬╖  36рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: mrdoob/three.js

рд╕рдорд╕реНрдпрд╛ рдХрд╛ рд╡рд┐рд╡рд░рдг

резреж my рд╕реЗ резрежgrading рддрдХ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдореЙрдбрд▓ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдЕрдм рдРрд╕реЗ рджрд┐рдЦрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рд╡реЗ рдорд╛рдирджрдВрдб рд╕реЗ рдлрд╝реНрд▓рд┐рдк рдХрд┐рдП рдЧрдП рд╣реИрдВред рдпрд╣ рдХреЗрд╡рд▓ рджреЛ рддрд░рдлрд╛ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИред
рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ: https://vaulted-jonquil.glitch.me/

рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдЗрд╕реЗ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП, рджреЛрдиреЛрдВ рдкрд╣рд┐рдпреЛрдВ рдкрд░ рдкреИрдЯрд░реНрди рдЗрдВрдбреЗрдВрдЯ рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рдеред рдРрд╕рд╛ рд╣реА 107 рдореЗрдВ рд╣реБрдЖ рдерд╛
Screen Shot 2019-10-23 at 3 51 35 PM

108 рдореЗрдВ рд╕реЗ рдПрдХ рдкрд╣рд┐рдП рдХреЗ рдкреИрдЯрд░реНрди рдореЗрдВ рдРрд╕рд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ рдЬреИрд╕реЗ рдпрд╣ рдмрд╛рд╣рд░ рдХреА рдУрд░ рдкреЙрдкрд┐рдВрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ:
Screen Shot 2019-10-23 at 3 51 27 PM

рддреАрди.рдЬреЗрдПрд╕ рд╕рдВрд╕реНрдХрд░рдг
  • [x] r108
рдмреНрд░рд╛рдЙрдЬрд╝рд░
  • [x] рдЙрди рд╕рднреА рдХреЛ
рдУрдПрд╕
  • [x] рдЙрди рд╕рднреА рдХреЛ
  • [ ] рдЦрд┐рдбрд╝рдХрд┐рдпрд╛рдБ
  • [ ] рдореИрдХ рдУ рдПрд╕
  • [] рд▓рд┐рдирдХреНрд╕
  • [ ] рдПрдВрдбреНрд░реЙрдпрдб
  • [] рдЖрдИрдУрдПрд╕

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

рдЗрд╕реЗ рдареАрдХ рдХрд░рддрд╛ рд╣реИ!
Screen Shot 2019-11-21 at 10 02 54 AM

рд╕рднреА 36 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

@pushmatrix рдХреНрдпрд╛ рдЖрдк рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдпрд╣ рдореЙрдбрд▓ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рдХреА рдЖрдкреВрд░реНрддрд┐ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ? рдореИрдВ рдЙрддреНрд╕реБрдХ рд╣реВрдБ рдЕрдЧрд░ рдпрд╣ # 11438 рд╕реЗ рд╕рдВрдмрдВрдзрд┐рдд рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдпрд╣ рдЕрдкрдиреЗ рд╕реНрд╡рдпрдВ рдХреЗ рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛рдУрдВ рдХреЛ рдирд┐рд░реНрджрд┐рд╖реНрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ

рдПрдХ рдЕрд▓рдЧ рдкрд░реАрдХреНрд╖рдг рдХреЗ рдорд╛рдорд▓реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╣реБрдП, git bisect, # 17586 рдХреЛ PR рдХреЗ рд░реВрдк рдореЗрдВ рдЗрдВрдЧрд┐рдд рдХрд░рддрд╛ рд╣реИ рдЬрд┐рд╕рдиреЗ рд╕рдорд╕реНрдпрд╛ рдХреЛ рд╢реБрд░реВ рдХрд┐рдпрд╛ рд╣реИ рдпрджрд┐ рдореЗрд╖ рджреЛ рддрд░рдлрд╛ рд╣реИ рдФрд░ рдирдХрд╛рд░рд╛рддреНрдордХ рдкреИрдорд╛рдиреЗ X рд╣реИред рдпрд╣ r.109 рдореЗрдВ рдерд╛, r.108 рдирд╣реАрдВред

рдЗрд╕ рдкреАрдЖрд░ рд╕реЗ рдореЙрдбрд▓ рдкрд░ рдкрд░реАрдХреНрд╖рдг рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ рдХреНрдпреЛрдВрдХрд┐ рд╡рд╣ рдореЙрдбрд▓ рдЙрдкрд▓рдмреНрдз рдирд╣реАрдВ рд╣реИред

рдпрд╣рд╛рдБ рдкрд░реАрдХреНрд╖рдг glb рд╣реИ
wheels.glb.zip

3 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рд╕реЗ: https://github.com/mrdoob/three.js/issues/10331#issue -194807426

рдореВрд▓ рд░реВрдк рд╕реЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ ... gl_FrontFace Adreno GPU рдкрд░ рдбрдмрд▓ рдкрдХреНрд╖реАрдп рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рдареАрдХ рд╕реЗ рдХрд╛рдо рдирд╣реАрдВ рдХрд░ рд░рд╣рд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ _still_ рдПрдХ рдРрд╕рд╛ рдореБрджреНрджрд╛ рд╣реИ рдЬрд┐рд╕реЗ рд╣рдореЗрдВ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ?

//

рдпрд╣ рдореЙрдбрд▓ рдореЗрд░реА рдорд╢реАрди рдкрд░ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рд░реЗрдВрдбрд░ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдкреНрд░рдХрдЯ рд╣реЛрддрд╛ рд╣реИ рдпрджрд┐ рд╣рдо normalmap_pars_fragment рдореЗрдВ рдПрдбреНрд░реЗрдиреЛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЛ рд╣рдЯрд╛ рджреЗрдВ:

#ifdef DOUBLE_SIDED

    // Workaround for Adreno GPUs gl_FrontFacing bug. See #15850 and #10331

    bool frontFacing = dot( cross( S, T ), N ) > 0.0;

    mapN.xy *= ( float( frontFacing ) * 2.0 - 1.0 );

#else

    mapN.xy *= ( float( gl_FrontFacing ) * 2.0 - 1.0 );

#endif

рд╣рдореНрдо, рдореБрдЭреЗ рд╡рд╣ рдЯрд┐рдкреНрдкрдгреА рдкрдврд╝рдирд╛ рднреА рдпрд╛рдж рд╣реИ; рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдЗрд╕ рдмрдЧ рдХреЛ рджреЗрдЦрддреЗ рд╣реБрдП рдЖрдпрд╛ рдерд╛, рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ r108 рдореЗрдВ рддрдп рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ (рдХрдо рд╕реЗ рдХрдо рдЗрд╕реЗ рд╣рдорд╛рд░реЗ рд▓рд┐рдП рдирд┐рд░реНрдзрд╛рд░рд┐рдд рдХрд┐рдпрд╛ рдЧрдпрд╛ рд╣реИ): https://github.com/GoogleWebCompords/model-viewer/issues/740

рд╢рд╛рдпрдж рдпрд╣ рд╕рдВрдмрдВрдзрд┐рдд рд╣реИ? FWIW, рдореБрдЭреЗ рдкреБрд░рд╛рдиреЗ рдПрдбреНрд░реЗрдиреЛ рдЬреАрдкреАрдпреВ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреБрдЫ рдкреНрд░рддрд┐рдХреНрд░рд┐рдпрд╛ рдорд┐рд▓реА рд╣реИ, рддреЛ рдЬрд╛рд╣рд┐рд░ рд╣реИ рдХрд┐ рд╡реЗ рдЕрднреА рднреА рдХрд╛рдлреА рд╕рд╛рдорд╛рдиреНрдп рд╣реИрдВред

рдмрд╕ рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЕрднреА рднреА dev :

Screen Shot 2019-10-25 at 4 06 51 PM

рдмрд╕ рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЕрднреА рднреА рджреЗрд╡ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ:

рд╕рд╣реАред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдПрдбреНрд░реЗрдиреЛ рдмрдЧ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЛ рдирд╣реАрдВ рд╣рдЯрд╛рддреЗ рд╣реИрдВред

рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдПрдбреНрд░реЗрдиреЛ рдмрдЧ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЛ рдирд╣реАрдВ рд╣рдЯрд╛рддреЗ рд╣реИрдВред

рдЕрдм рдХреЗ рд▓рд┐рдП рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ рдФрд░ рдлрд┐рд░ рдПрдХ рдЕрд▓рдЧ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХрд░реЗрдВ? рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд▓рдд рд╡рд┐рдЬрд╝реБрдЕрд▓реНрд╕ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдЖрдк рдХрд┐рд╕ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

@ рдореБрдЧреЗрдВ87 рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЬреНрдпрд╛рдорд┐рддрд┐ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рджрд░реНрдкрдг рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рд╕рдорд╛рди рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдирдЪрд┐рддреНрд░ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВред

рдореИрдВ рдЖрдкрд╕реЗ рд╕рд╣рдордд рд╣реБрдБред рдореИрдВрдиреЗ рдПрдбреНрд░реЗрдиреЛ-рд╕рдВрдЧрдд рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдвреВрдВрдврдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рдХрдИ рдШрдВрдЯреЗ рд▓рдЧрд╛рдП рд╣реИрдВ рдЬреЛ рд╣рд░ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рд╣реА рд╣реИред

рд╡реНрд╣реАрд▓ рдореЙрдбрд▓ рдореЙрдбрд▓ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг, рдкреНрд░рддреНрдпреЗрдХ рдкрд╣рд┐рдпрд╛ рдХрд╛ рдЕрдкрдирд╛ рдпреВрд╡реА рд╢реЗрд▓ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рд╕рд╛рдЭрд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдФрд░ рд╢реАрд░реНрд╖ рдХреНрд░рдо рд╡рд┐рдкрд░реАрдд рд╣реИред

рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЪреЗрд╣рд░реЗ рдХрд╛ рдЙрдиреНрдореБрдЦреАрдХрд░рдг рд╕рдорд╛рди рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдмреНрд▓реЗрдВрдбрд░ рдореЗрдВред

Screen Shot 2019-11-18 at 11 21 05 AM

рддреЛ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ r108 рдореЗрдВ рдмрдЧ рд╣реИ, рдпрд╛ рдЕрдЧрд░ r108 рдЕрдм рдЪреАрдЬреЛрдВ рдХреЛ рдареАрдХ рд╕реЗ рдХрд░ рд░рд╣рд╛ рд╣реИред _ (уГД) _ / ┬п

@pushmatrix рдЖрдк рдПрдХрддрд╛ рдпрд╛ рдмреНрд▓реЗрдВрдбрд░ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?

@mrdoob

рдмреНрд▓реЗрдВрдбрд░ 2.8

Screen Shot 2019-11-20 at 8 27 27 AM

рдПрдХрддрд╛

Screen Shot 2019-11-20 at 8 40 30 AM

Sketchfab

Screen Shot 2019-11-20 at 8 32 48 AM

@pushmatrix

рдПрдХрддрд╛ рдХреЛ рджреЗрдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рдХрд╛рд╢ рдЙрд╕реА рджрд┐рд╢рд╛ рдореЗрдВ рд╣реИ рдЬреЛ рдХреИрдорд░рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХрддрд╛ рднреА рдЧрд▓рдд рд╣реИ? ЁЯдФ

@mrdoob

рд╣рд╛рдБ, рдпрд╣ рдкреНрд░рдХрд╛рд╢ рдкрд░ рдереЛрдбрд╝рд╛ рд╕рд╛ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдпрд╣ рдПрдХ рднреНрд░рдо рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рджреЗрдЦ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдкреЙрдк рдЕрдк рд╣реБрдЖ рд╣реИред рд▓реЗрдХрд┐рди рдЬрдм рдЖрдк рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдорддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред

рдпрд╣рд╛рдВ рдпрд╣ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд╢ рдореЗрдВ рд╣реИ, рдЬрд╣рд╛рдВ рдпрд╣ рд╕рд╣реА рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ
Screen Shot 2019-11-20 at 2 36 16 PM

@ рдорд░реНрдбреЛрдмреВ рдлреНрд░рдВрдЯ-рдЪреЗрд╣рд░реЛрдВ рдХреЗ рдкрд╛рд╕

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдореЗрд░рд╛ _conjecture_ рдмрд╛рдИрдВ рдУрд░ рдХрд╛ рдореЙрдбрд▓ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рджрдХреНрд╖рд┐рдгрд╛рд╡рд░реНрдд UVs рд╣реИрдВ рдФрд░ рджрд╛рдИрдВ рдУрд░ рдХреЗ рдореЙрдбрд▓ рдореЗрдВ _clockwise_ UVs рд╣реИрдВред рдЬрдм doubleSide true рдореЙрдбрд▓ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд░рд╣рд╛ рд╣реИред

AFAIK, рдПрдбреНрд░реЗрдиреЛ-рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдЧреИрд░-рдПрдбреНрд░реЗрдиреЛ GPU рдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдареАрдХ рд╣реЛ рдЬрд╛рддреА рд╣реИред

@pushmatrix рдЖрдкрдХреА рдПрдХрддрд╛ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджреЛ рджрд┐рд╢рд╛рдУрдВ рд╕реЗ рджрд┐рд╢рд╛рддреНрдордХ рд░реЛрд╢рдиреА рд╣реИред рдЗрд╕рд╕реЗ рдпрд╣ рд╕рдордЭ рдкрд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдПрдХ рдПрдХрд▓ рдкреНрд░рдХрд╛рд╢ рдмреЗрд╣рддрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред

@WestLangley рдореИрдВ рдЙрд╕реА рдкрд░реНрдпрд╛рд╡рд░рдг рдорд╛рдирдЪрд┐рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдореЙрдбрд▓-рджрд░реНрд╢рдХ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╣реА рд░реЛрдЯреЗрд╢рди рдирд╣реАрдВ рд╣реИред рдореИрдВ рдПрдХ рдПрдХрд▓ рдкреНрд░рдХрд╛рд╢ рдХреЗ рд╕рд╛рде рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред

@WestLangley рдПрдХрд▓ рджрд┐рд╢рд╛рддреНрдордХ рдкреНрд░рдХрд╛рд╢ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдорддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдПрдХ рдСрдкреНрдЯрд┐рдХрд▓ рднреНрд░рдо рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ

unity

рдПрдХрддрд╛ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЦрд╛рдВрдЪреЗ рдХреЛ рдкреЙрдк рдореЗрдВ рдФрд░ рдмрд╛рд╣рд░ рдХреИрд╕реЗ рдкреНрд░рдХрд╛рд╢ рд╣рд┐рдЯ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рдпрд╣ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрдЧрдд рд╣реИред

рдереНрд░реАрдЬ рднреА рд╕рдВрдЧрдд рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣рдореЗрд╢рд╛ рдкреЙрдк рдЖрдЙрдЯ рджрд┐рдЦрддрд╛ рд╣реИ:
wheels

рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХрддрд╛ рдореЗрдВ рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝ рд╣реИ ...
рдЬреИрд╕реЗ рдЗрд╕реЗ рдХреБрдЫ рдЪрд╛рд╣рд┐рдПред material.normalMapScale.x = -1 ред

@WestLangley

@ рдорд░реНрдбреЛрдмреВ рдлреНрд░рдВрдЯ-рдЪреЗрд╣рд░реЛрдВ рдХреЗ рдкрд╛рд╕

рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдореЗрд░рд╛ _conjecture_ рдмрд╛рдИрдВ рдУрд░ рдХрд╛ рдореЙрдбрд▓ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рджрдХреНрд╖рд┐рдгрд╛рд╡рд░реНрдд UVs рд╣реИрдВ рдФрд░ рджрд╛рдИрдВ рдУрд░ рдХреЗ рдореЙрдбрд▓ рдореЗрдВ _clockwise_ UVs рд╣реИрдВред рдЬрдм doubleSide true рдореЙрдбрд▓ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд░рд╣рд╛ рд╣реИред

AFAIK, рдПрдбреНрд░реЗрдиреЛ-рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдЧреИрд░-рдПрдбреНрд░реЗрдиреЛ GPU рдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдареАрдХ рд╣реЛ рдЬрд╛рддреА рд╣реИред

рдзрдиреНрдпрд╡рд╛рдж, рдпрд╣ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЕрднреА рднреА рдЕрдзрд┐рдХ рдЬрд╛рдВрдЪ рдХреЗ рдпреЛрдЧреНрдп рд╣реИред рдпрджрд┐ рд╕реНрдХреЗрдЪрдлреИрдм рд╕рднреА рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рд╕рд╣реА рджрд┐рдЦрддрд╛ рд╣реИ, рддреЛ рд╣рдореЗрдВ рдЙрдирдХреЗ рд╢реЗрдбреНрд╕ рдХреЛ рджреЗрдЦрдирд╛ рдкрдбрд╝ рд╕рдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рдЖрдЬ рд╕рдВрдмрдВрдзрд┐рдд shader рдХреЛрдб рдкрд░ рдПрдХ рдирдЬрд╝рд░ рдереА рдФрд░ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╡реЗ "Per-Pixel Tangent Space Normal Mapping" рдХрд╛ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд░ рд░рд╣реЗ рд╣реИрдВред

рдЗрд╕ рдкреЛрд╕реНрдЯ рдХреЗ рдЕрдиреБрд╕рд╛рд░, рд╕реНрдХреЗрдЪрдлреИрдм рд╕рдВрдкрддреНрддрд┐ рдореЗрдВ рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рдкрд░рд┐рднрд╛рд╖рд╛рдУрдВ рдХреА рдЕрдкреЗрдХреНрд╖рд╛ рдХрд░рддрд╛ рд╣реИ рдпрд╛ рдпреЗ рдбреЗрдЯрд╛ рд╣реИрдВ
рдпреВрд╡реА рдирд┐рд░реНрджреЗрд╢рд╛рдВрдХ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдЙрддреНрдкрдиреНрдиред рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдореИрдВрдиреЗ GLSL рдХреЛрдб рдореЗрдВ рджреЗрдЦрд╛ рд╣реИред

рдпрджрд┐ рдореИрдВ BufferGeometryUtils.computeTangents() рдорд╛рдзреНрдпрдо рд╕реЗ рдореЙрдбрд▓ рдореЗрдВ рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рдЬреЛрдбрд╝рддрд╛ рд╣реВрдВ рдФрд░ Material.vertexTangents рд╕реЗ true рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдкрд░рд┐рдгрд╛рдо рдареАрдХ рд▓рдЧрддрд╛ рд╣реИ:

image

BTW: рдХреНрдпрд╛ рдЗрд╕ рдкреЛрд╕реНрдЯ ^ ^ рдореЗрдВ рд╕реНрдХреЗрдЪрдлреИрдм рд╕реЗ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯреНрд╕ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдареАрдХ рд╣реИ? рдЖрдЦрд┐рд░рдХрд╛рд░, рдпрд╣ рдУрдкрди-рд╕реЛрд░реНрд╕ рдирд╣реАрдВ рд╣реИред

рд╕рдВрдЧрддрд┐ рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рд╕реНрдХреЗрдЪрдлреИрдм 1 рджрд┐рд╢рд╛рддреНрдордХ рдкреНрд░рдХрд╛рд╢ рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдФрд░ рдкреАрдЫреЗ рдЪрд▓ рд░рд╣рд╛ рд╣реИ:

sketchfab

рд╣рд╛рдБ рдПрдХ рдмрд╛рдд рдХрд╛ рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдЬрдм рдЖрдк рдХреЛрдИ рдореЙрдбрд▓ рдЕрдкрд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╕реНрдХреЗрдЪрдлреИрдм рдЙрдирдХреЗ рдЕрдВрдд рдореЗрдВ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмрд╣реБрдд рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд╡реЗ рдЪреАрдЬреЗрдВ / рдЪреАрдЬреЗрдВ рдмрджрд▓ рд░рд╣реЗ рд╣реЛрдВред рдЖрдк рдЬреЛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ, рд╡рд╣ рдПрдХ glTF рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ glTF рдлрд╝рд╛рдЗрд▓ рдЙрдирдХреЗ рдЕрдкрдиреЗ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЧрдИ рд╣реИред

@pushmatrix рдХреНрдпрд╛ рдЖрдк _please_ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ # 17958 рдЖрдкрдХреЗ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?

рддреАрди.js рдЦрдВрдбрд┐рдд рдЫрд╛рдпрд╛ рдореЗрдВ рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЕрдЧрд░ рдХреБрдЫ рдЫреЛрдЯреА рдЧрд╛рдбрд╝реА рдПрдбреНрд░реЗрдиреЛ рдЬреАрдкреАрдпреВ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реИрдХ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред # 17958 рджреЗрдЦреЗрдВред

//

рд╕реНрдХреЗрдЪрдлреИрдм рд╕реАрдкреАрдпреВ рдкрд░ рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ рдЬрдм рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдореЙрдбрд▓ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред ( @donmccurdy рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ glTF рдХрд▓реНрдкрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред)

рддреАрди .js рднреА рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реЛрдЧрд╛ рдХрд┐ рд╕рднреА рдмрд┐рд▓реНрдЯ-рдЗрди рдЬреНрдпрд╛рдорд┐рддреАрдпреЛрдВ рдореЗрдВ рд╕рд╣реА рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рдЬреЛрдбрд╝рдирд╛ред рддреАрди.js рдХреЛ ComputeTangents() рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП MIKKTSpace рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рднреА рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЪреВрдВрдХрд┐ рддреАрди.js рдЕрдиреБрдХреНрд░рдорд┐рдд рдФрд░ рдЧреИрд░-рдЕрдиреБрдХреНрд░рдорд┐рдд рджреЛрдиреЛрдВ рдЬреНрдпрд╛рдорд┐рддрд┐ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдЗрд╕реЗ рдареАрдХ рдХрд░рддрд╛ рд╣реИ!
Screen Shot 2019-11-21 at 10 02 54 AM

рдареАрдХ рд╣реИ, рддреЛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рд╕рдорд╛рдзрд╛рди рдПрдбреНрд░реЗрдиреЛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб (# 17958) рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдирд╛ рд╣реИ рдФрд░ рд▓реЛрдЧреЛрдВ рдХреЛ BufferGeometryUtils.computeTangents() рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдиреЗ рдХреА рд╕рд▓рд╛рд╣ рджреЗрддреЗ рд╣реИрдВ рдЬрдм рдореЙрдбрд▓ рдореЗрдВ рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рдирд╣реАрдВ рд╣реЛрддреА рд╣реИ рдФрд░ рд╡реЗ Adreno GPUs (# 15850) рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ ред

рдмрдврд╝рд┐рдпрд╛ рд╣реИ?

рдПрдХ рдЕрдиреНрдп рдЙрдкрд╛рдп рдпрд╣ рд╣реИ рдХрд┐ BufferGeometryUtils.computeTangents() рдЗрдВрдЬрди рдореЗрдВ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП рдЬрдм рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рд╕рднреА рдХреЛрдб рд╣рдЯрд╛ рджреЗрдВ рдЬреЛ рдХрд┐ рдЯреБрдХрдбрд╝реЗ рдЯреБрдХрдбрд╝реЗ рдореЗрдВ рдЯреИрдВрдЯрд░ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ ... $

BufferGeometryUtils.computeTangents() рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рдЗрдВрдбреЗрдХреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдХреЛрд░ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдБрдХрд┐, рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ рдпрджрд┐ three.js рдХреБрдЫ рдмрд┐рдВрджреБ рдкрд░ MIKKTSpace рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХреЗ рдФрд░ рдлрд┐рд░ perturbNormal2Arb() рдирд┐рдХрд╛рд▓ рджреЗрдВред

@WestLangley рдиреЗ рд▓рд┐рдЦрд╛:

рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реЛрдЧрд╛ рд╕рднреА рдмрд┐рд▓реНрдЯ-рдЗрди рдЬрд┐рдпреЛрдореЗрдЯреНрд░реА рдореЗрдВ рд╕рд╣реА рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рдЬреЛрдбрд╝рдирд╛ред

рдореЗрд░рд╛ рдорди рдмрджрд▓ рд░рд╣рд╛ рд╣реИ ... рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛рдУрдВ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИред рдЗрд╕рдХреЗ рдмрдЬрд╛рдп, рдореИрдВ рд╕рднреА рдмрд┐рд▓реНрдЯ-рдЗрди рдЬреНрдпрд╛рдорд┐рддрд┐ рдХреЗ рд▓рд┐рдП BufferGeometry.computeTangents() рдФрд░ "рдУрд╡рд░рд░рд╛рдЗрдб" рдкрджреНрдзрддрд┐ рдХреЛ рдкреБрдирд░реНрд╕реНрдерд╛рдкрд┐рдд рдХрд░реВрдВрдЧрд╛, рдЬрд┐рд╕рдХреЗ рд▓рд┐рдП рд╣рдо рд╡рд┐рд╢реНрд▓реЗрд╖рдгрд╛рддреНрдордХ рд░реВрдк рд╕реЗ рд╕рдЯреАрдХ рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рд╕реЗрдЯ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

//

рдПрдХ рдФрд░ рдЙрдкрд╛рдп рд╣реИ рдХрд┐ рдЗрдВрдЬрди рдореЗрдВ рдмрдлрд╝рд░рдЧреЗрдЯреЛрдореЗрдЯреНрд░реА рдпреБрдЯрд┐рд▓реНрд╕.рдХреЙрдордкреНрдпреВрдЯреЗрдВрдЯреНрд╕ () рдХреЛ рд╕реНрд╡рдЪрд╛рд▓рд┐рдд рд░реВрдк рд╕реЗ рдХреЙрд▓ рдХрд┐рдпрд╛ рдЬрд╛рдП рдЬрдм рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИ рдФрд░ рдЯреБрдХрдбрд╝реЗ рдЯреБрдХрдбрд╝реЗ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рд╕рднреА рдХреЛрдб рдХреЛ рд╣рдЯрд╛ рджреЗрдВ ...

рдпрд╣ рдореБрдЭреЗ рд╕рд╣реА рд▓рдЧрддрд╛ рд╣реИред

BufferGeometryUtils.computeTangents () рдХреЛ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдПрдХ рдЗрдВрдбреЗрдХреНрд╕ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдЗрд╕рд▓рд┐рдП рдЗрд╕реЗ рдХреЛрд░ рдореЗрдВ рдЙрдкрдпреЛрдЧ рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдЖрд╕рд╛рдиреА рд╕реЗ рддрдп рд╣реЛ рдЧрдпрд╛ рд╣реИред рдФрд░ рдЗрд╕рдХреЗ рд▓рд┐рдП https://github.com/mrdoob/three.js/issues/17804#issuecomment -557135610 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред

рдпрд╣ рдмреЗрд╣рддрд░ рд╣реЛрдЧрд╛ рдпрджрд┐ рддреАрди.js рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ MIKKTSpace рдХреЗ рдЕрдиреБрд╕рд╛рд░ рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рдЙрддреНрдкрдиреНрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдлрд┐рд░ perturbNormal2Arb () рдХреЛ рд╣рдЯрд╛ рджреЗрдВ ...

рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрдпрд╛ рдорд┐рдХрдХрд╕реНрдкреЗрд╕ рдХреЛ рдЖрд╡рд╢реНрдпрдХ рд░реВрдк рд╕реЗ рдЯреБрдХрдбрд╝реЗ рдЯреБрдХрдбрд╝реЗ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдХрдВрдкреНрдпреБрдЯреЗрд╢рди рдХреЛ рдмрджрд▓рдирд╛ рдЪрд╛рд╣рд┐рдПред рд╢реЗрдбрд░ рдХреЗ рдкрд╛рд╕ рд▓рдЧрднрдЧ рдХреЛрдИ рдкреНрд░рджрд░реНрд╢рди рд▓рд╛рдЧрдд рдирд╣реАрдВ рд╣реИ, рдФрд░ рдЕрдзрд┐рдХрд╛рдВрд╢ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдареАрдХ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИред рдкреНрд░реАрдХрдВрдкреНрдпреВрдЯрд┐рдВрдЧ рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛рдУрдВ рдореЗрдВ рд╣рд░ рдмрд╛рд░ рдПрдХ-рдкреНрд░рддрд┐-рд╢реАрд░реНрд╖ рдЕрдкрд╕реНрдЯреНрд░реАрдо рд▓рд╛рдЧрдд рд╣реЛрддреА рд╣реИ, рдФрд░ рдЗрди рд╡рд┐рд╢рд┐рд╖реНрдЯ рдорд╛рдорд▓реЛрдВ рдХреЛ рдЫреЛрдбрд╝рдХрд░ рдХреЛрдИ рд▓рд╛рдн рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред F glTF рдХрд▓реНрдкрдирд╛ рдХреНрдпрд╛ рдХрд╣рддреА рд╣реИ, рдХреЗ рдмрд╛рд╡рдЬреВрдж рдореБрдЭреЗ рдбрд┐рдлрд╝реЙрд▓реНрдЯ рд░реВрдк рд╕реЗ рдРрд╕рд╛ рдХрд░рдиреЗ рдореЗрдВ рдореБрд╢реНрдХрд┐рд▓ рд╕рдордп рдЖ рд░рд╣рд╛ рд╣реИред

рдпрд╣ рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛ рдпрджрд┐ BufferGeometryUtils.computeTangents рдорд┐рдХрдХрд╕реНрдкреЗрд╕ рджреГрд╖реНрдЯрд┐рдХреЛрдг рдХреЛ рд▓рд╛рдЧреВ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ - рдпрд╣ рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рд╣реИ, рдЕрдЧрд░ рдЖрдкрдХреЛ рдЙрдиреНрд╣реЗрдВ рдкрд╣рд▓реЗ рд╕реЗ рддреИрдпрд╛рд░ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рд╢рд╛рдпрдж glkF- рдкрд╛рдЗрдкрд▓рд╛рдЗрди рдпрд╛ gltfpack рдЬреИрд╕реЗ рдЙрдкрдХрд░рдгреЛрдВ рдореЗрдВ рдорд┐рдХрдХрд╕реНрдкреЗрд╕ рдХреЛ рд░рдЦрдирд╛ рдЖрд╕рд╛рди рд╣реЛрдЧрд╛, рдЬреЛ рдореМрдЬреВрджрд╛ рджреЗрд╢реА рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рдФрд░ рдЧрдгрдирд╛ рдЕрдЧреНрд░рд┐рдо рдореЗрдВ, рдСрдлрд╝рд▓рд╛рдЗрди рдХрд░ рд╕рдХрддреЗ рд╣реИрдВред

@donmccurdy

рд▓реЗрдХрд┐рди, рдХрд╣рддреЗ рд╣реИрдВ ... <model-viewer> рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореБрдЭреЗ рдирд╣реАрдВ рд▓рдЧрддрд╛ рдХрд┐ рдпрд╣ рдЬрд╛рдирдиреЗ рдХрд╛ рдХреЛрдИ рд╡рд┐рд╢реНрд╡рд╕рдиреАрдп рддрд░реАрдХрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛ рдХреЗ рдкрд╛рд╕ рдПрдбреНрд░реЗрдиреЛ рдЬреАрдкреАрдпреВ рд╣реИ рд▓реЗрдХрд┐рди рд╣рдо рд╕рд╣реА рджреЗрдЦрдирд╛ рдЪрд╛рд╣реЗрдВрдЧреЗ (https: // github)ред com / GoogleWebComponents / рдореЙрдбрд▓-рджрд░реНрд╢рдХ / рдореБрджреНрджреЛрдВ / 740)ред

рдХреНрдпрд╛ <model-viewer> (рдФрд░ рдЕрдиреНрдп рдкреНрд░реЛрдЬреЗрдХреНрдЯреНрд╕ рдЬреЛ x-gpu рд╕рдорд░реНрдерди рдЪрд╛рд╣рддреЗ рд╣реИрдВ) рдХреЛ BufferGeometryUtils.computeTangents рдЬрдм рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИ, рдпрд╛ рддреАрди рд╣реЛрдиреА рдЪрд╛рд╣рд┐рдП?

@pushmatrix

рд╣рд╛рд╣рд╛, рдореБрдЭреЗ рдЕрднреА рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ рдпреЗ рдкрд╣рд┐рдП realized рдХрд╣рд╛рдВ рд╕реЗ рд╣реИрдВ

https://bumbleride.com/products/era?variant=20719969599599

Screen Shot 2019-11-22 at 3 52 19 PM

@ рдорд░реНрдбреЛрдмреВ ЁЯХ╡

рдареАрдХ рд╣реИ, рддреЛ рдЕрдм рдХреЗ рд▓рд┐рдП рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

jack-jun picture jack-jun  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

donmccurdy picture donmccurdy  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

scrubs picture scrubs  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

filharvey picture filharvey  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

Horray picture Horray  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ