резреж my рд╕реЗ резрежgrading рддрдХ рдЕрдкрдЧреНрд░реЗрдб рдХрд░рддреЗ рд╣реБрдП, рдореИрдВрдиреЗ рджреЗрдЦрд╛ рд╣реИ рдХрд┐ рдореЗрд░реЗ рдореЙрдбрд▓ рдХреЗ рд╣рд┐рд╕реНрд╕реЗ рдЕрдм рдРрд╕реЗ рджрд┐рдЦрддреЗ рд╣реИрдВ рдЬреИрд╕реЗ рд╡реЗ рдорд╛рдирджрдВрдб рд╕реЗ рдлрд╝реНрд▓рд┐рдк рдХрд┐рдП рдЧрдП рд╣реИрдВред рдпрд╣ рдХреЗрд╡рд▓ рджреЛ рддрд░рдлрд╛ рд╕рд╛рдордЧреНрд░реА рдХреЗ рд╕рд╛рде рд╣реЛрддрд╛ рд╣реИред
рдпрд╣рд╛рдВ рджреЗрдЦреЗрдВ: https://vaulted-jonquil.glitch.me/
рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ рдЗрд╕реЗ рджрд┐рдЦрдирд╛ рдЪрд╛рд╣рд┐рдП, рджреЛрдиреЛрдВ рдкрд╣рд┐рдпреЛрдВ рдкрд░ рдкреИрдЯрд░реНрди рдЗрдВрдбреЗрдВрдЯ рд╣реЛрдиреЗ рдХреЗ рд╕рд╛рдеред рдРрд╕рд╛ рд╣реА 107 рдореЗрдВ рд╣реБрдЖ рдерд╛
108 рдореЗрдВ рд╕реЗ рдПрдХ рдкрд╣рд┐рдП рдХреЗ рдкреИрдЯрд░реНрди рдореЗрдВ рдРрд╕рд╛ рд▓рдЧ рд░рд╣рд╛ рд╣реИ рдЬреИрд╕реЗ рдпрд╣ рдмрд╛рд╣рд░ рдХреА рдУрд░ рдкреЙрдкрд┐рдВрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ:
@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
:
рдмрд╕ рдкреБрд╖реНрдЯрд┐ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП, рдпрд╣ рдЕрднреА рднреА рджреЗрд╡ рдореЗрдВ рд╣реЛрддрд╛ рд╣реИ:
рд╕рд╣реАред рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдПрдбреНрд░реЗрдиреЛ рдмрдЧ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЛ рдирд╣реАрдВ рд╣рдЯрд╛рддреЗ рд╣реИрдВред
рд▓реЗрдХрд┐рди рдЕрдЧрд░ рдЖрдк рдПрдбреНрд░реЗрдиреЛ рдмрдЧ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЛ рдирд╣реАрдВ рд╣рдЯрд╛рддреЗ рд╣реИрдВред
рдЕрдм рдХреЗ рд▓рд┐рдП рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рд╣рдЯрд╛рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ рдФрд░ рдлрд┐рд░ рдПрдХ рдЕрд▓рдЧ рд╕рдорд╛рдзрд╛рди рдХреЗ рд▓рд┐рдП рдЦреЛрдЬ рдХрд░реЗрдВ? рд╡рд░реНрддрдорд╛рди рдХрд╛рд░реНрдпрд╛рдиреНрд╡рдпрди рдЧрд▓рдд рд╡рд┐рдЬрд╝реБрдЕрд▓реНрд╕ рдХреА рдУрд░ рдЬрд╛рддрд╛ рд╣реИ, рдЗрд╕рд╕реЗ рдХреЛрдИ рдлрд░реНрдХ рдирд╣реАрдВ рдкрдбрд╝рддрд╛ рдХрд┐ рдЖрдк рдХрд┐рд╕ рдкреНрд▓реЗрдЯрдлрд╝реЙрд░реНрдо рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣реЗ рд╣реИрдВред
@ рдореБрдЧреЗрдВ87 рдЗрд╕ рд╡рд┐рд╢реЗрд╖ рдорд╛рдорд▓реЗ рдореЗрдВ, рдореЗрд░рд╛ рдорд╛рдирдирд╛ тАЛтАЛрд╣реИ рдХрд┐ рдЬреНрдпрд╛рдорд┐рддрд┐ рдПрдХ рджреВрд╕рд░реЗ рдХреЗ рджрд░реНрдкрдг рд╣реИрдВ, рд▓реЗрдХрд┐рди рд╡реЗ рд╕рдорд╛рди рд╕рд╛рдорд╛рдиреНрдп рдорд╛рдирдЪрд┐рддреНрд░ рд╕рд╛рдЭрд╛ рдХрд░рддреЗ рд╣реИрдВред
рдореИрдВ рдЖрдкрд╕реЗ рд╕рд╣рдордд рд╣реБрдБред рдореИрдВрдиреЗ рдПрдбреНрд░реЗрдиреЛ-рд╕рдВрдЧрдд рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдвреВрдВрдврдиреЗ рдХреА рдХреЛрд╢рд┐рд╢ рдореЗрдВ рдХрдИ рдШрдВрдЯреЗ рд▓рдЧрд╛рдП рд╣реИрдВ рдЬреЛ рд╣рд░ рдЙрдкрдпреЛрдЧ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рд╕рд╣реА рд╣реИред
рд╡реНрд╣реАрд▓ рдореЙрдбрд▓ рдореЙрдбрд▓ рдХрд╛ рдирд┐рд░реАрдХреНрд╖рдг, рдкреНрд░рддреНрдпреЗрдХ рдкрд╣рд┐рдпрд╛ рдХрд╛ рдЕрдкрдирд╛ рдпреВрд╡реА рд╢реЗрд▓ рд╣реЛрддрд╛ рд╣реИред рдпрд╣ рдПрдХ рд╕рд╛рдЭрд╛ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИред
рдФрд░ рд╢реАрд░реНрд╖ рдХреНрд░рдо рд╡рд┐рдкрд░реАрдд рд╣реИред
рд╣рд╛рд▓рд╛рдВрдХрд┐ рдЪреЗрд╣рд░реЗ рдХрд╛ рдЙрдиреНрдореБрдЦреАрдХрд░рдг рд╕рдорд╛рди рд╣реИ, рдХрдо рд╕реЗ рдХрдо рдмреНрд▓реЗрдВрдбрд░ рдореЗрдВред
рддреЛ рдореБрдЭреЗ рдпрдХреАрди рдирд╣реАрдВ рд╣реИ рдХрд┐ рдпрд╣ r108 рдореЗрдВ рдмрдЧ рд╣реИ, рдпрд╛ рдЕрдЧрд░ r108 рдЕрдм рдЪреАрдЬреЛрдВ рдХреЛ рдареАрдХ рд╕реЗ рдХрд░ рд░рд╣рд╛ рд╣реИред _ (уГД) _ / ┬п
@pushmatrix рдЖрдк рдПрдХрддрд╛ рдпрд╛ рдмреНрд▓реЗрдВрдбрд░ рдХреЗ рд╕рд╛рде рддреБрд▓рдирд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ?
@mrdoob
@pushmatrix
рдПрдХрддрд╛ рдХреЛ рджреЗрдЦрдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реИ рдХреНрдпреЛрдВрдХрд┐ рдкреНрд░рдХрд╛рд╢ рдЙрд╕реА рджрд┐рд╢рд╛ рдореЗрдВ рд╣реИ рдЬреЛ рдХреИрдорд░рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХрддрд╛ рднреА рдЧрд▓рдд рд╣реИ? ЁЯдФ
@mrdoob
рд╣рд╛рдБ, рдпрд╣ рдкреНрд░рдХрд╛рд╢ рдкрд░ рдереЛрдбрд╝рд╛ рд╕рд╛ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ рдпрд╣ рдПрдХ рднреНрд░рдо рд╣реЛрдиреЗ рдХреЗ рдирд╛рддреЗ рд╕рдорд╛рдкреНрдд рд╣реЛрддрд╛ рд╣реИ рдФрд░ рдпрд╣ рджреЗрдЦ рд░рд╣рд╛ рд╣реИ рдХрд┐ рдпрд╣ рдХреБрдЫ рд╕реНрдерд╛рдиреЛрдВ рдкрд░ рдкреЙрдк рдЕрдк рд╣реБрдЖ рд╣реИред рд▓реЗрдХрд┐рди рдЬрдм рдЖрдк рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдорддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рдЧрд╛рдпрдм рд╣реЛ рдЬрд╛рддрд╛ рд╣реИред
рдпрд╣рд╛рдВ рдпрд╣ рдЕрдиреНрдп рдкреНрд░рдХрд╛рд╢ рдореЗрдВ рд╣реИ, рдЬрд╣рд╛рдВ рдпрд╣ рд╕рд╣реА рдкреНрд░рддреАрдд рд╣реЛрддрд╛ рд╣реИ
@ рдорд░реНрдбреЛрдмреВ рдлреНрд░рдВрдЯ-рдЪреЗрд╣рд░реЛрдВ рдХреЗ рдкрд╛рд╕
рдЗрд╕ рдЙрджрд╛рд╣рд░рдг рдореЗрдВ, рдореЗрд░рд╛ _conjecture_ рдмрд╛рдИрдВ рдУрд░ рдХрд╛ рдореЙрдбрд▓ рд╣реИ, рдЬрд┐рд╕рдореЗрдВ рджрдХреНрд╖рд┐рдгрд╛рд╡рд░реНрдд UVs рд╣реИрдВ рдФрд░ рджрд╛рдИрдВ рдУрд░ рдХреЗ рдореЙрдбрд▓ рдореЗрдВ _clockwise_ UVs рд╣реИрдВред рдЬрдм doubleSide
true
рдореЙрдбрд▓ рд╕рд╣реА рддрд░реАрдХреЗ рд╕реЗ рдЧрд▓рдд рддрд░реАрдХреЗ рд╕реЗ рдкреНрд░рд╕реНрддреБрдд рдХрд░ рд░рд╣рд╛ рд╣реИред
AFAIK, рдПрдбреНрд░реЗрдиреЛ-рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЛ рд╣рдЯрд╛рдиреЗ рд╕реЗ рдЧреИрд░-рдПрдбреНрд░реЗрдиреЛ GPU рдХреЗ рд▓рд┐рдП рд╕рдорд╕реНрдпрд╛ рдареАрдХ рд╣реЛ рдЬрд╛рддреА рд╣реИред
@pushmatrix рдЖрдкрдХреА рдПрдХрддрд╛ рдХрд╛ рдЙрджрд╛рд╣рд░рдг рджреЛ рджрд┐рд╢рд╛рдУрдВ рд╕реЗ рджрд┐рд╢рд╛рддреНрдордХ рд░реЛрд╢рдиреА рд╣реИред рдЗрд╕рд╕реЗ рдпрд╣ рд╕рдордЭ рдкрд╛рдирд╛ рдореБрд╢реНрдХрд┐рд▓ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рд╣реЛ рд░рд╣рд╛ рд╣реИред рдПрдХ рдПрдХрд▓ рдкреНрд░рдХрд╛рд╢ рдмреЗрд╣рддрд░ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред
@WestLangley рдореИрдВ рдЙрд╕реА рдкрд░реНрдпрд╛рд╡рд░рдг рдорд╛рдирдЪрд┐рддреНрд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реВрдВ рдЬреЛ рдореЙрдбрд▓-рджрд░реНрд╢рдХ рдЙрдкрдпреЛрдЧ рдХрд░ рд░рд╣рд╛ рд╣реИ, рд▓реЗрдХрд┐рди рд╕рдВрднрд╛рд╡рдирд╛ рд╣реИ рдХрд┐ рдпрд╣ рдПрдХ рд╣реА рд░реЛрдЯреЗрд╢рди рдирд╣реАрдВ рд╣реИред рдореИрдВ рдПрдХ рдПрдХрд▓ рдкреНрд░рдХрд╛рд╢ рдХреЗ рд╕рд╛рде рдХреЛрд╢рд┐рд╢ рдХрд░реВрдВрдЧрд╛ред
@WestLangley рдПрдХрд▓ рджрд┐рд╢рд╛рддреНрдордХ рдкреНрд░рдХрд╛рд╢ рдЪрд╛рд░реЛрдВ рдУрд░ рдШреВрдорддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдореИрдВ рдПрдХ рдСрдкреНрдЯрд┐рдХрд▓ рднреНрд░рдо рджреЗрдЦ рд░рд╣рд╛ рд╣реВрдВ
рдПрдХрддрд╛ рдХреА рддрд░рд╣ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЦрд╛рдВрдЪреЗ рдХреЛ рдкреЙрдк рдореЗрдВ рдФрд░ рдмрд╛рд╣рд░ рдХреИрд╕реЗ рдкреНрд░рдХрд╛рд╢ рд╣рд┐рдЯ рдкрд░ рдирд┐рд░реНрднрд░ рдХрд░рддрд╛ рд╣реИ, рд▓реЗрдХрд┐рди рдХрдо рд╕реЗ рдХрдо рдпрд╣ рджреЛрдиреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрдЧрдд рд╣реИред
рдереНрд░реАрдЬ рднреА рд╕рдВрдЧрдд рд╣реИ, рд▓реЗрдХрд┐рди рдПрдХ рдирд┐рд╢реНрдЪрд┐рдд рд░реВрдк рд╕реЗ рд╣рдореЗрд╢рд╛ рдкреЙрдк рдЖрдЙрдЯ рджрд┐рдЦрддрд╛ рд╣реИ:
рдореБрдЭреЗ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдПрдХрддрд╛ рдореЗрдВ рдХреБрдЫ рдЧрдбрд╝рдмрдбрд╝ рд╣реИ ...
рдЬреИрд╕реЗ рдЗрд╕реЗ рдХреБрдЫ рдЪрд╛рд╣рд┐рдПред 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
рд╕реЗрдЯ рдХрд░рддрд╛ рд╣реВрдВ, рддреЛ рдкрд░рд┐рдгрд╛рдо рдареАрдХ рд▓рдЧрддрд╛ рд╣реИ:
BTW: рдХреНрдпрд╛ рдЗрд╕ рдкреЛрд╕реНрдЯ ^ ^ рдореЗрдВ рд╕реНрдХреЗрдЪрдлреИрдм рд╕реЗ рдХреЛрдб рд╕реНрдирд┐рдкреЗрдЯреНрд╕ рд╕рд╛рдЭрд╛ рдХрд░рдирд╛ рдареАрдХ рд╣реИ? рдЖрдЦрд┐рд░рдХрд╛рд░, рдпрд╣ рдУрдкрди-рд╕реЛрд░реНрд╕ рдирд╣реАрдВ рд╣реИред
рд╕рдВрдЧрддрд┐ рдХреЗ рд▓рд┐рдП, рдпрд╣рд╛рдВ рд╕реНрдХреЗрдЪрдлреИрдм 1 рджрд┐рд╢рд╛рддреНрдордХ рдкреНрд░рдХрд╛рд╢ рдХреЗ рд╕рд╛рде рдЖрдЧреЗ рдФрд░ рдкреАрдЫреЗ рдЪрд▓ рд░рд╣рд╛ рд╣реИ:
рд╣рд╛рдБ рдПрдХ рдмрд╛рдд рдХрд╛ рдзреНрдпрд╛рди рд░рдЦреЗрдВ рдХрд┐ рдЬрдм рдЖрдк рдХреЛрдИ рдореЙрдбрд▓ рдЕрдкрд▓реЛрдб рдХрд░рддреЗ рд╣реИрдВ рддреЛ рд╕реНрдХреЗрдЪрдлреИрдм рдЙрдирдХреЗ рдЕрдВрдд рдореЗрдВ рдкреНрд░реЛрд╕реЗрд╕рд┐рдВрдЧ рдХрд░рддрд╛ рд╣реИ, рдЗрд╕рд▓рд┐рдП рдмрд╣реБрдд рд╕рдВрднрд╡ рд╣реИ рдХрд┐ рд╡реЗ рдЪреАрдЬреЗрдВ / рдЪреАрдЬреЗрдВ рдмрджрд▓ рд░рд╣реЗ рд╣реЛрдВред рдЖрдк рдЬреЛ рджреЗрдЦ рд░рд╣реЗ рд╣реИрдВ, рд╡рд╣ рдПрдХ glTF рдирд╣реАрдВ рд╣реИ, рдмрд▓реНрдХрд┐ рдПрдХ glTF рдлрд╝рд╛рдЗрд▓ рдЙрдирдХреЗ рдЕрдкрдиреЗ рдкреНрд░рд╛рд░реВрдк рдореЗрдВ рдкрд░рд┐рд╡рд░реНрддрд┐рдд рд╣реЛ рдЧрдИ рд╣реИред
@pushmatrix рдХреНрдпрд╛ рдЖрдк _please_ рдкреНрд░рджрд░реНрд╢рд┐рдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ # 17958 рдЖрдкрдХреЗ рдореЙрдбрд▓ рдХреЗ рд▓рд┐рдП рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ?
рддреАрди.js рдЦрдВрдбрд┐рдд рдЫрд╛рдпрд╛ рдореЗрдВ рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рд╡рд┐рд╢реНрд╡рд╛рд╕ рд╣реИ рдХрд┐ рдпрд╣ рд╕рд╣реА рдврдВрдЧ рд╕реЗ рдХрд╛рдо рдХрд░рддрд╛ рд╣реИ рдЕрдЧрд░ рдХреБрдЫ рдЫреЛрдЯреА рдЧрд╛рдбрд╝реА рдПрдбреНрд░реЗрдиреЛ рдЬреАрдкреАрдпреВ рдХреЛ рд╕рдорд╛рдпреЛрдЬрд┐рдд рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдХ рд╣реИрдХ рд╣рдЯрд╛ рджрд┐рдпрд╛ рдЬрд╛рддрд╛ рд╣реИред # 17958 рджреЗрдЦреЗрдВред
//
рд╕реНрдХреЗрдЪрдлреИрдм рд╕реАрдкреАрдпреВ рдкрд░ рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рдХреА рдЧрдгрдирд╛ рдХрд░рддрд╛ рд╣реИ рдЬрдм рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрддреА рд╣реИ рдФрд░ рдореЙрдбрд▓ рджреНрд╡рд╛рд░рд╛ рдкреНрд░рджрд╛рди рдирд╣реАрдВ рдХреА рдЬрд╛рддреА рд╣реИред ( @donmccurdy рдпрд╣ рд╡рд╣реА рд╣реИ рдЬреЛ glTF рдХрд▓реНрдкрдирд╛ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред)
рддреАрди .js рднреА рдРрд╕рд╛ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реЛрдЧрд╛ рдХрд┐ рд╕рднреА рдмрд┐рд▓реНрдЯ-рдЗрди рдЬреНрдпрд╛рдорд┐рддреАрдпреЛрдВ рдореЗрдВ рд╕рд╣реА рд╕реНрдкрд░реНрд╢рд░реЗрдЦрд╛ рдЬреЛрдбрд╝рдирд╛ред рддреАрди.js рдХреЛ ComputeTangents()
рдХреЛ рдмрджрд▓рдиреЗ рдХреЗ рд▓рд┐рдП MIKKTSpace рдПрд▓реНрдЧреЛрд░рд┐рдереНрдо рдХреЛ рднреА рд▓рд╛рдЧреВ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рдЪреВрдВрдХрд┐ рддреАрди.js рдЕрдиреБрдХреНрд░рдорд┐рдд рдФрд░ рдЧреИрд░-рдЕрдиреБрдХреНрд░рдорд┐рдд рджреЛрдиреЛрдВ рдЬреНрдпрд╛рдорд┐рддрд┐ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВ, рдореБрдЭреЗ рдЙрдореНрдореАрдж рд╣реИ рдХрд┐ рдЗрд╕рдХреЗ рд▓рд┐рдП рдХрд╛рдлреА рдкреНрд░рдпрд╛рд╕ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред
рдЗрд╕реЗ рдареАрдХ рдХрд░рддрд╛ рд╣реИ!
рдареАрдХ рд╣реИ, рддреЛ рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣рд╛рдВ рд╕рдорд╛рдзрд╛рди рдПрдбреНрд░реЗрдиреЛ рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб (# 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 рдХрд╣рд╛рдВ рд╕реЗ рд╣реИрдВ
@ рдорд░реНрдбреЛрдмреВ ЁЯХ╡
рдареАрдХ рд╣реИ, рддреЛ рдЕрдм рдХреЗ рд▓рд┐рдП рд╡рд░реНрдХрдЕрд░рд╛рдЙрдВрдб рдХреЛ рд╡рд╛рдкрд╕ рдХрд░рдиреЗ рджреЗрддрд╛ рд╣реИред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдЗрд╕реЗ рдареАрдХ рдХрд░рддрд╛ рд╣реИ!