107์์ 108๋ก ์
๊ทธ๋ ์ด๋ํ๋ฉด ์ด์ ๋ชจ๋ธ์ ์ผ๋ถ๊ฐ ๋ฒ์ ์ ๋ค์ง์ ๊ฒ์ฒ๋ผ ๋ณด์
๋๋ค. ์ด๊ฒ์ ์๋ฉด ์ฌ๋ฃ์์๋ง ๋ฐ์ํฉ๋๋ค.
์ฌ๊ธฐ๋ฅผ ์ฐธ์กฐํ์ญ์์ค : https://vaulted-jonquil.glitch.me/
์ด๊ฒ์ ๋ ๋ฐํด์ ํจํด์ด ์ํน ๋ค์ด๊ฐ ์ํ๋ก ๋ณด์ผ ๊ฒ์
๋๋ค. 107์์ ๊ทธ๋ฌ์ด
108์์๋ ๋ฐํด ์ค ํ๋๊ฐ ํ์ด ๋์ค๋ ๊ฒ์ฒ๋ผ ๋ณด์ด๋ ํจํด์ ๊ฐ์ง๊ณ ์์ง๋ง :
@pushmatrix ์ด ๋ชจ๋ธ์ด ์์ฒด ์ ์ ์ ์ ๊ณตํ๋์ง ์ฌ๋ถ๋ฅผ ํ์ธํ ์ ์์ต๋๊น? ์ด๊ฒ์ด # 11438๊ณผ ๊ด๋ จ์ด ์๋์ง ๊ถ๊ธํฉ๋๋ค.
์์ฒด ์ ์ ์ ์ง์ ํ๋ค๊ณ ์๊ฐํ์ง ์์ต๋๋ค.
๋ค๋ฅธ ํ ์คํธ ์ผ์ด์ค๋ฅผ ์ฌ์ฉํ์ฌ git bisect๋ ๋ฉ์ฌ๊ฐ ์๋ฉด์ด๊ณ ์์ ์ฒ๋๊ฐ X ์ธ ๊ฒฝ์ฐ ๋ฌธ์ ๋ฅผ ์์ํ PR๋ก # 17586์ ๊ฐ๋ฆฌ ํต๋๋ค.ํ์ง๋ง r.108์ด ์๋๋ผ r.109์์์์ต๋๋ค.
ํด๋น ๋ชจ๋ธ์ ์ฌ์ฉํ ์ ์๊ธฐ ๋๋ฌธ์์ด PR์ ๋ชจ๋ธ์์ ํ ์คํธ๋์ง ์์์ต๋๋ค.
๋ค์์ ํ
์คํธ glb์
๋๋ค.
wheels.glb.zip
3 ๋ ์ ๋ถํฐ : https://github.com/mrdoob/three.js/issues/10331#issue -194807426
๊ธฐ๋ณธ์ ์ผ๋ก ... gl_FrontFace๊ฐ Adreno GPU์ ์๋ฉด ์ฌ์ง์์ ์ ๋๋ก ์๋ํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ด๊ฒ์ด _ ์ฌ์ ํ _ ์ฐ๋ฆฌ๊ฐ ์์ฉํด์ผํ๋ ๋ฌธ์ ์ ๋๊น?
//
normalmap_pars_fragment
์์ Adreno ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ ๊ฑฐํ๋ฉด์ด ๋ชจ๋ธ์ด ๋ด ์ปดํจํฐ์์ ์ฌ๋ฐ๋ฅด๊ฒ ๋ ๋๋ง๋๋ ๊ฒ ๊ฐ์ต๋๋ค.
#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/GoogleWebComponents/model-viewer/issues/740
์๋ง๋ ๊ด๋ จ์ด ์์ต๋๊น? FWIW, ์ด์ Adreno GPU์ ๋ํ ํผ๋๋ฐฑ์ ๋ฐ์์ผ๋ฏ๋ก ์ฌ์ ํ ์๋นํ ์ผ๋ฐ์ ์ ๋๋ค.
ํ์ธ์ ์ํด dev
์์ ์ฌ์ ํ ๋ฐ์ํฉ๋๋ค.
ํ์ธํ๊ธฐ ์ํด ์ด๊ฒ์ ์ฌ์ ํ โโdev์์ ๋ฐ์ํฉ๋๋ค.
๊ถ๋ฆฌ. ๊ทธ๋ฌ๋ Adreno ๋ฒ๊ทธ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ ๊ฑฐํ๋ฉด ์๋๋๋ค.
๊ทธ๋ฌ๋ Adreno ๋ฒ๊ทธ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ ๊ฑฐํ๋ฉด ์๋๋๋ค.
์ง๊ธ์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ ๊ฑฐํ ๋ค์ ๋ค๋ฅธ ์๋ฃจ์ ์ ๊ฒ์ํ๋ ๊ฒ์ ์ด๋ป์ต๋๊น? ํ์ฌ ๊ตฌํ์ ์ฌ์ฉ์ค์ธ ํ๋ซํผ์ ๊ด๊ณ์์ด ์๋ชป๋ ์๊ฐ์ผ๋ก ์ด์ด์ง๋๋ค.
@ Mugen87 ์ด ํน๋ณํ ๊ฒฝ์ฐ์ ์ ๋ ๊ธฐํํ์ด ์๋ก์ ๊ฑฐ์ธ์ด๋ผ๊ณ ๋ฏฟ์ง๋ง ๋์ผํ ๋ ธ๋ฉ ๋งต์ ๊ณต์ ํฉ๋๋ค.
๋์ํฉ๋๋ค. ๋ชจ๋ ์ฌ์ฉ ์ฌ๋ก์์ ์ฌ๋ฐ๋ฅธ Adreno ํธํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ฐพ๊ธฐ ์ํด ๋ง์ ์๊ฐ์ ํฌ์ํ์ต๋๋ค.
ํ ๋ชจ๋ธ ๋ชจ๋ธ์ ๊ฒ์ฌํ๋ฉด ๊ฐ ํ ์๋ ์์ฒด UV ์์ด ์์ต๋๋ค. ํ๋๋ฅผ ๊ณต์ ํ์ง ์์ต๋๋ค.
๊ทธ๋ฆฌ๊ณ ์ ์ ์์๋ ๋ฐ๋์
๋๋ค.
๊ทธ๋ฌ๋ ์ผ๊ตด ๋ฐฉํฅ์ ์ ์ด๋ Blender์์ ๋์ผํฉ๋๋ค.
๊ทธ๋์ ๋๋ ๊ทธ๊ฒ์ด r108์ ๋ฒ๊ทธ์ธ์ง ๋๋ r108์ด ์ด์ ์ ๋๋ก ์ผ์ํ๊ณ ์๋์ง ํ์คํ์ง ์์ต๋๋ค. ยฏ_ (ใ) _ / ยฏ
@pushmatrix ๋ Unity ๋๋ Blender์ ๋น๊ตํ ์ ์์ต๋๊น?
๋ฟก๋ฟก
ํํ
๋น์ด ์นด๋ฉ๋ผ์ ๊ฐ์ ๋ฐฉํฅ์ ์๊ธฐ ๋๋ฌธ์ Unity๋๋ณด๊ธฐ ์ด๋ ต์ง๋ง Unity๋ ์๋ชป๋ ๊ฒ ๊ฐ์ต๋๊น? ๐ค
๋ฟก๋ฟก
์, ์กฐ๋ช ์ ์ฝ๊ฐ ์์กดํ์ฌ ํ์์ด๋๊ณ ์ด๋ค ๊ณณ์์ ํ์ด ๋์จ ๊ฒ์ฒ๋ผ ๋ณด์ ๋๋ค. ํ์ง๋ง ํ์ ํ๋ฉด ์ฌ๋ผ์ง๋๋ค.
์ฌ๊ธฐ์ ๋ค๋ฅธ ๋น์ด ์์ผ๋ฉฐ, ์ฌ๋ฐ๋ฅธ ๊ฒ์ผ๋ก ๋ณด์
๋๋ค.
@mrdoob ์๋ฉด์ three.js์์ ์๊ณ ๋ฐ๋ ๋ฐฉํฅ์ผ๋ก ๊ฐ๊ธฐ ์์๋ฅผ ๊ฐ์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๊ฐ๋ฉด์ 3 ๊ฐ ์ ์ UV๋ UV ๋งต์์ ์๊ณ ๋ฐ๋ ๋ฐฉํฅ์ ๊ฐ๊ธฐ ์์๋ฅผ ๊ฐ์ต๋๋ค.
์ด ์์์ ๋ด _conjecture_๋ ์ผ์ชฝ์ ๋ชจ๋ธ์ด ์๊ณ ๋ฐ๋ ๋ฐฉํฅ์ UV๋ฅผ ๊ฐ์ง๊ณ ์๊ณ ์ค๋ฅธ์ชฝ์ ๋ชจ๋ธ์ _clockwise_ UV๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค. doubleSide
์ด true
๋ ์ค๋ฅธ์ชฝ ๋ชจ๋ธ์ด three.js์์ ์๋ชป ๋ ๋๋ง๋ฉ๋๋ค.
AFAIK, Adreno ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ ๊ฑฐํ๋ฉด Adreno๊ฐ ์๋ GPU์ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ฉ๋๋ค.
@pushmatrix Unity ์์ ์๋ ๋ ๋ฐฉํฅ์ ๋ฐฉํฅ ์กฐ๋ช ์ด์๋ ๊ฒ ๊ฐ์ต๋๋ค. ๊ทธ๊ฒ์ ๋ฌด์จ ์ผ์ด ์ผ์ด๋๊ณ ์๋์ง ๋ถ๋ณํ๊ธฐ ์ด๋ ต๊ฒ ๋ง๋ญ๋๋ค. ๋จ์ผ ์กฐ๋ช ์ด ๋ฐ๋์ง ํ ์ ์์ต๋๋ค.
@WestLangley ๋ชจ๋ธ ๋ทฐ์ด ๊ฐ ์ฌ์ฉํ๋ ๊ฒ๊ณผ ๋์ผํ ํ๊ฒฝ ๋งต์ ์ฌ์ฉํ๊ณ ์์ง๋ง ๋์ผํ ํ์ ์ด ์์ ๊ฐ๋ฅ์ฑ์ด ๋์ต๋๋ค. ๋๋ ํ๋์ ๋น์ผ๋ก ์๋ ํ ๊ฒ์ ๋๋ค.
@WestLangley ๋จ์ผ ๋ฐฉํฅ ์กฐ๋ช ์ด ํ์ ํฉ๋๋ค. ์ฐฉ์ ํ์์ ๋ณด๋ ๊ฒ ๊ฐ์
Unity๊ฐ ๋น์ด ๋ฟ๋ ๋ฐฉ์์ ๋ฐ๋ผ ๊ทธ๋ฃจ๋ธ๊ฐ ํ์ด ๋์ค๊ฒ ๋ง๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง ์ ์ด๋ ๋ ๋ค ์ผ๊ด๋ฉ๋๋ค.
Threejs๋ ์ผ๊ด์ฑ์ด ์์ง๋ง ๋ถ๋ช
ํ ํญ์ ํ์ด ๋์จ ๊ฒ์ฒ๋ผ ๋ณด์
๋๋ค.
Unity One์ ๋ฌธ์ ๊ฐ์๋ ๊ฒ ๊ฐ์ต๋๋ค ...
๊ฐ์ ๊ฒ์ด ํ์ํฉ๋๋ค. material.normalMapScale.x = -1
๋ฟก ๋นต๋จ
@mrdoob ์๋ฉด์ three.js์์ ์๊ณ ๋ฐ๋ ๋ฐฉํฅ์ผ๋ก ๊ฐ๊ธฐ ์์๋ฅผ ๊ฐ์ต๋๋ค. ์ผ๋ฐ์ ์ผ๋ก ๊ฐ๋ฉด์ 3 ๊ฐ ์ ์ UV๋ UV ๋งต์์ ์๊ณ ๋ฐ๋ ๋ฐฉํฅ์ ๊ฐ๊ธฐ ์์๋ฅผ ๊ฐ์ต๋๋ค.
์ด ์์์ ๋ด _conjecture_๋ ์ผ์ชฝ์ ๋ชจ๋ธ์ด ์๊ณ ๋ฐ๋ ๋ฐฉํฅ์ UV๋ฅผ ๊ฐ์ง๊ณ ์๊ณ ์ค๋ฅธ์ชฝ์ ๋ชจ๋ธ์ _clockwise_ UV๋ฅผ ๊ฐ์ง๊ณ ์์ต๋๋ค.
doubleSide
์ดtrue
๋ ์ค๋ฅธ์ชฝ ๋ชจ๋ธ์ด three.js์์ ์๋ชป ๋ ๋๋ง๋ฉ๋๋ค.AFAIK, Adreno ํด๊ฒฐ ๋ฐฉ๋ฒ์ ์ ๊ฑฐํ๋ฉด Adreno๊ฐ ์๋ GPU์ ๋ฌธ์ ๊ฐ ํด๊ฒฐ๋ฉ๋๋ค.
๊ฐ์ฌํฉ๋๋ค. ๊ทธ๋๋ ๋ ๋ง์ ์กฐ์ฌ๊ฐ ํ์ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. Sketchfab์ด ๋ชจ๋ ์ฅ์น์์ ์ฌ๋ฐ๋ฅด๊ฒ ๋ณด์ด๋ฉด ์ ฐ์ด๋๋ฅผ ์ดํด ๋ด์ผ ํ ์ ์์ต๋๋ค.
์ค๋ ๊ฐ๊ฐ์ ์ ฐ์ด๋ ์ฝ๋๋ฅผ ์ดํด ๋ดค๋๋ฐ "ํฝ์ ๋น ์ ์ ๊ณต๊ฐ ๋ ธ๋ฉ ๋งคํ"์ ์ฌ์ฉํ์ง ์๋ ๊ฒ ๊ฐ์ต๋๋ค.
์ด ๊ฒ์๋ฌผ ์ ๋ฐ๋ฅด๋ฉด Sketchfab์ ์์ฐ์ ํ์ ํธ ์ ์ ๋๋ ์ด๋ฌํ ๋ฐ์ดํฐ๊ฐ
UV ์ขํ๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ์์ฑํฉ๋๋ค. ๊ทธ๊ฒ์ ๋ด๊ฐ GLSL ์ฝ๋์์ ๋ณธ ๊ฒ๊ณผ ์ผ์นํฉ๋๋ค.
BufferGeometryUtils.computeTangents()
๋ฅผ ํตํด ๋ชจ๋ธ์ ์ ์ ์ ์ถ๊ฐํ๊ณ Material.vertexTangents
์ true
๋ก ์ค์ ํ๋ฉด ๊ฒฐ๊ณผ๊ฐ ๊ด์ฐฎ์ ๋ณด์
๋๋ค.
BTW :์ด ๊ฒ์๋ฌผ์์ Sketchfab์ ์ฝ๋ ์ค ๋ํซ์ ๊ณต์ ํด๋ ๋๋์ ^^? ๊ฒฐ๊ตญ ์คํ ์์ค๊ฐ ์๋๋๋ค.
์ผ๊ด์ฑ์ ์ํด ๋ค์์ 1 ๊ฐ์ ๋ฐฉํฅ ์กฐ๋ช ์ด ์๋ค๋ก ์์ง์ด๋ Sketchfab์ ๋๋ค.
์, ๋ช ์ฌํด์ผ ํ ํ ๊ฐ์ง๋ Sketchfab์ด ๋ชจ๋ธ์ ์ ๋ก๋ ํ ๋ ์ฒ๋ฆฌ๋ฅผ ์ํํ๋ฏ๋ก ๋ฌด์ธ๊ฐ๋ฅผ ์์ฑํ๊ฑฐ๋ ๋ณ๊ฒฝํ ๊ฐ๋ฅ์ฑ์ด ๋งค์ฐ ๋์ต๋๋ค. ๋ณด๊ณ ์๋ ๊ฒ์ glTF๊ฐ ์๋๋ผ ์์ฒด ํ์์ผ๋ก ๋ณํ ๋ glTF ํ์ผ์ ๋๋ค.
@pushmatrix # 17958์ด ๋ชจ๋ธ์ ์ ์ฉ๋๋ค๋ ๊ฒ์ _please_ ๋ณด์ฌ์ค ์ ์์ต๋๊น?
three.js๋ ํ๋๊ทธ๋จผํธ ์ ฐ์ด๋์์ ํ์ ํธ๋ฅผ ๊ณ์ฐํฉ๋๋ค. ํน์ ๋ฒ๊ทธ๊ฐ์๋ Adreno GPU๋ฅผ ์์ฉํ๊ธฐ์ํ ํดํน์ด ์ ๊ฑฐ๋๋ฉด ์ ๋๋ก ์๋ํ๋ค๊ณ ์๊ฐํฉ๋๋ค. # 17958์ ์ฐธ์กฐํ์ญ์์ค.
//
Sketchfab์ ์ ์ ์ด ํ์ํ์ง๋ง ๋ชจ๋ธ์์ ์ ๊ณตํ์ง ์๋ ๊ฒฝ์ฐ CPU์์ ์ ์ ์ ๊ณ์ฐํฉ๋๋ค. ( @donmccurdy ์ด๊ฒ์ด glTF ์ฌ์์ ํ์ํ ๊ฒ์ ๋๋ค.)
three.js๋ ๊ทธ๋ ๊ฒ ํ ์ ์์ง๋ง ๋ชจ๋ ๋ด์ฅ ๋ํ์ ์ฌ๋ฐ๋ฅธ ์ ์ ์ ์ถ๊ฐํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค. three.js๋ ๋ํ MIKKTSpace ์๊ณ ๋ฆฌ์ฆ์ ๊ตฌํํ์ฌ ComputeTangents()
๋ฅผ ๋์ฒดํด์ผํฉ๋๋ค. three.js๋ ์ธ๋ฑ์ฑ ๋ ์ง์ค๋ฉํธ๋ฆฌ์ ๋น ์ธ๋ฑ์ฑ ๋ ์ง์ค๋ฉํธ๋ฆฌ๋ฅผ ๋ชจ๋ ์ง์ํ๋ฏ๋ก ์๋นํ ๋
ธ๋ ฅ์ด ํ์ํ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค.
๊ทธ๊ฒ์ ๊ณ ์น๋ค!
์ข์ต๋๋ค. ์ฌ๊ธฐ์ ํด๊ฒฐ์ฑ
์ Adreno ํด๊ฒฐ ๋ฐฉ๋ฒ (# 17958)์ ๋๋๋ฆฌ๊ณ ๋ชจ๋ธ์ ํ์ ํธ๊ฐ์๊ณ Adreno GPU (# 15850)๋ฅผ ์ง์ํ๋ ค๋ ๊ฒฝ์ฐ ์ฌ๋๋ค์๊ฒ BufferGeometryUtils.computeTangents()
๋ฅผ ์ฌ์ฉํ๋๋ก ๊ถ์ฅํ๋ ๊ฒ ๊ฐ์ต๋๋ค. .
์ข์๊ฐ์?
๋ ๋ค๋ฅธ ํด๊ฒฐ์ฑ
์ ์ ๊ณต๋์ง ์์ ๋ ์์ง์์ ์๋์ผ๋ก BufferGeometryUtils.computeTangents()
๋ฅผ ํธ์ถํ๊ณ ํ๋๊ทธ๋จผํธ ์
ฐ์ด๋์์ ํ์ ํธ๋ฅผ ๊ณ์ฐํ๋ ๋ชจ๋ ์ฝ๋๋ฅผ ์ ๊ฑฐํ๋ ๊ฒ์
๋๋ค ... ๐ค
BufferGeometryUtils.computeTangents()
ํ์ฌ ์ธ๋ฑ์ค๊ฐ ํ์ํ๋ฏ๋ก ์ฝ์ด์์ ์ฌ์ฉํ ์ ์์ต๋๋ค. ๊ทธ๋ฌ๋ three.js
๊ฐ MIKKTSpace์ ๋ฐ๋ผ ์ด๋ค ์ง์ ์์ ํ์ ํธ๋ฅผ ์์ฑ ํ ๋ค์ perturbNormal2Arb()
์ ๊ฑฐํ๋ ๊ฒ์ด ๋ฐ๋์งํ๋ค๊ณ ์๊ฐํฉ๋๋ค.
@WestLangley ๋ ๋ค์
์ด๋ ๋ชจ๋ ๋ด์ฅ ํ์์ ์ฌ๋ฐ๋ฅธ ์ ์ ์ ์ถ๊ฐํ๋ ๊ฒ์ ์๋ฏธํฉ๋๋ค.
๋ง์์ ๋ฐ๊พธ๋ ์ค ... ์ ์ ์ด ๋ฐ๋์ ํ์ํ ๊ฒ์ ์๋๋๋ค. ๋์ , BufferGeometry.computeTangents()
๋ฉ์๋๋ฅผ ๋ณต์ํ๊ณ ๋ถ์์ ์ผ๋ก ์ ํํ ์ ์ ์ ์ค์ ํ ์์๋ ๋ชจ๋ ๋ด์ฅ ์ง์ค๋ฉํธ๋ฆฌ์ ๋ํด ํด๋น ๋ฉ์๋๋ฅผ "์ฌ์ ์"ํฉ๋๋ค.
//
๋ ๋ค๋ฅธ ํด๊ฒฐ์ฑ ์ ์์ง์์ BufferGeometryUtils.computeTangents ()๊ฐ ์ ๊ณต๋์ง ์์ ๋ ์๋์ผ๋ก ํธ์ถํ๊ณ ์กฐ๊ฐ ์ ฐ์ด๋์์ ํ์ ํธ๋ฅผ ๊ณ์ฐํ๋ ๋ชจ๋ ์ฝ๋๋ฅผ ์ ๊ฑฐํ๋ ๊ฒ์ ๋๋ค.
์ ์๊ฒ ๋ง๋ ๊ฒ ๊ฐ์ต๋๋ค.
BufferGeometryUtils.computeTangents ()๋ ํ์ฌ ์ธ๋ฑ์ค๊ฐ ํ์ํ๋ฏ๋ก ์ฝ์ด์์ ์ฌ์ฉํ ์ ์์ต๋๋ค.
์ฝ๊ฒ ๊ณ ์น ์ ์๋ค๊ณ ์๊ฐํฉ๋๋ค. ๊ทธ๋ฆฌ๊ณ https://github.com/mrdoob/three.js/issues/17804#issuecomment -557135610์ ์ง์ํ๋๋ก ์์ ํด์ผํฉ๋๋ค.
three.js๊ฐ ์ด๋ค ์ง์ ์์ MIKKTSpace์ ๋ฐ๋ผ ํ์ ํธ๋ฅผ ์์ฑ ํ ๋ค์ perturbNormal2Arb ()๋ฅผ ์ ๊ฑฐ ํ ์ ์๋ค๋ฉด ๋ ์ข์ ๊ฒ์ ๋๋ค.
MikkTSpace๊ฐ ๋ฐ๋์ ํ๋๊ทธ๋จผํธ ์์ด๋ ๊ณ์ฐ์ ๋์ฒดํด์ผํ๋์ง ๋ชจ๋ฅด๊ฒ ์ต๋๋ค. ์ ฐ์ด๋๋ ์ฑ๋ฅ ๋น์ฉ์ด ๊ฑฐ์ ์์ผ๋ฉฐ ๋๋ถ๋ถ์ ๋ชจ๋ธ์์ ์ ์๋ํฉ๋๋ค. ์ ์ ์ ๋ฏธ๋ฆฌ ๊ณ์ฐํ๋ฉด ๋งค๋ฒ ์ ์ ๋น ์ ํ ๋น์ฉ์ด ๋ฐ์ํ๋ฉฐ ์ด๋ฌํ ํน์ ๊ฒฝ์ฐ๋ฅผ ์ ์ธํ๊ณ ๋ ์ด์ ์ด ์์ต๋๋ค. ๐ glTF ์ฌ์์ ๋ช ์๋ ๋ด์ฉ์๋ ๋ถ๊ตฌํ๊ณ ๊ธฐ๋ณธ์ ์ผ๋ก์ด๋ฅผ ์ ๋นํํ๋ ๋ฐ ์ด๋ ค์์ ๊ฒช๊ณ ์์ต๋๋ค.
BufferGeometryUtils.computeTangents
๊ฐ MikkTSpace ์ ๊ทผ ๋ฐฉ์์ ๊ตฌํํ ์ ์๋ค๋ฉด ์ข์ ๊ฒ์
๋๋ค. ๋ฏธ๋ฆฌ ๊ณ์ฐํด์ผํ๋ค๋ฉด ์ด๊ฒ์ด ์ต๊ณ ์ ์๊ณ ๋ฆฌ์ฆ์
๋๋ค. ๊ทธ๋ฌ๋ ๊ธฐ์กด์ ๊ธฐ๋ณธ ๊ตฌํ์ ์ฌ์ฉํ ์์๋ glTF-Pipeline ๋๋ gltfpack๊ณผ ๊ฐ์ ๋๊ตฌ์ MikkTSpace๋ฅผ ๋ฃ๊ณ ์คํ๋ผ์ธ์์ ๋ฏธ๋ฆฌ ๊ณ์ฐ์ ์ํํ๋ ๊ฒ์ด ๋ ์ฌ์ธ ๊ฒ์
๋๋ค.
๋ฟก๋ฟก
ํ์ง๋ง <model-viewer>
์ฌ์ฉ ์ฌ๋ก์์ ์ฌ์ฉ์๊ฐ Adreno GPU๋ฅผ ๊ฐ์ง๊ณ ์๋์ง ์ ์์๋ ์ ๋ขฐํ ์์๋ ๋ฐฉ๋ฒ์ด ์๋ค๊ณ ์๊ฐํ์ง๋ง ์ฌ๋ฐ๋ฅด๊ฒ ๋ณด์ด๊ธธ ์ํฉ๋๋ค (https : // github. com / GoogleWebComponents / model-viewer / issues / 740).
์ ์ ์ด ์ ๊ณต๋์ง ์์ ๋ <model-viewer>
(๋ฐ x-gpu ์ง์์ ์ํ๋ ๋ค๋ฅธ ํ๋ก์ ํธ)์์ BufferGeometryUtils.computeTangents
ํธ์ถํด์ผํฉ๋๊น? ์๋๋ฉด 3 ๊ฐ๋ฅผ ์ฌ์ฉํด์ผํฉ๋๊น?
ํํ
ํํ,์ด ๋ฐํด๊ฐ ์ด๋์์ ์๋์ง ๋ฐฉ๊ธ ๊นจ๋ฌ์์ต๋๋ค ๐
@mrdoob ๐ต
์ด์ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ๋๋๋ฆด ์ ์์ต๋๋ค.
๊ฐ์ฅ ์ ์ฉํ ๋๊ธ
๊ทธ๊ฒ์ ๊ณ ์น๋ค!