6๊ฐ ์ฌ์ฉ์ ์ ์ ์ง์ค๋ฉํธ๋ฆฌ three.js๊ฐ ์ ๊ณตํ๋ ์ง์ค๋ฉํธ๋ฆฌ ์ธ์๋ ์ง์ ์ ์ํ๋ ์ง์ค๋ฉํธ๋ฆฌ๋ฅผ ๋ง๋ค์ด๋ณด์ geometry๋ three.js์์ BufferGeometry ํด๋์ค๋ฅผ ํตํด ์ ์ํ๋ค. BufferGeometry์ ์ ์ํ ์ ์๋ ์์ฑ position: geometry๋ฅผ ๊ตฌ์ฑํ๋ 3์ฐจ์ ์ขํ์ ๋ํ ์ ์ (Vertex) normal: ๊ฐ ์ ์ ์ ๋ํ ์์ง ๋ฒกํฐ color: ๊ฐ ์ ์ ์ ๋ํ ์์ uv: ๊ฐ ์ ์ ์ ๋ํ ํ ์ค์ณ ๋งตํ ์ขํ Vertex index: position ์์ฑ์ผ๋ก ์ง์ ๋ ์ ์ ์ ๋ํ ์ธ๋ฑ์ค ๋ฐฐ์ด mesh๋ฅผ ๊ตฌ์ฑํ๋ ๋ฉด์ ์ต์ ๋จ์๋ ์ผ๊ฐํ์ด๊ณ ์ด ์ผ๊ฐํ์ 3๊ฐ์ ์ ์ ์ผ๋ก ๊ตฌ์ฑ๋๋ค. ์ด ์ผ๊ฐํ์ ๊ตฌ์ฑํ๋ 3๊ฐ์ ์ ์ ์ ๋ํ position ์์ฑ์์์ ์ ์ ์ธ๋ฑ์ค ๋ฒํธ๊ฐ Ve..
5๊ฐ ์ฌ์ง part4 - ํ ์ค์ณ2 [three.js] Material์ ํ ์ค์ณ๋ฅผ ์ ํ๋ณด์ 5๊ฐ ์ฌ์ง part3 - ํ ์ค์ณ map ์์ฑ ํ ์ค์ณ ๊ฐ์ฒด๋ฅผ ์ง์ ํ๋ฉด ์ง์ค๋ฉํธ๋ฆฌ์ ํ๋ฉด์ ์ง์ ๋ ํ ์ค์ณ์ ์ด๋ฏธ์ง๊ฐ ์ท์ฒ๋ผ ์ ํ์ง ๋ฉ์ฌ์ ๋ชจ๋ material์ ์ ์ฉํ ์ ์๋ค ํ ์ค์ณ ๊ฐ์ฒด ์ด๋ฏธ์ง๋ ๋์์ ๋ฑ์ tech-hayo.tistory.com ์ ๋ฒ ์๊ฐ์๋ Material์ map ์์ฑ์ผ๋ก ์ด๋ฏธ์ง๋ฅผ ํ ์ค์ณ๋ก ๋ง๋ค์ด ์ ํ๊ณ , ์ด ํ ์ค์ณ์ ์ฌ๋ฌ ๊ฐ์ง ์์ฑ์ ๋ค๋ค๋ณด์๋ค. ์ด๋ฒ ์๊ฐ์๋ ๋ค์ํ map์ ํตํด ๋ ์ธ๋ฐํ๊ฒ ํ ์ค์ณ๋ฅผ ๊ณ ๋ํํ๋ ๋ฐฉ๋ฒ์ ๋ฐฐ์๋ณธ๋ค. ์ค๋นํ๊ธฐ ์ฐ์ตํ๊ธฐ ์ , ์ฌ์ฉํ ํ ์ค์ณ ์ด๋ฏธ์ง๋ฅผ ์ค๋นํด์ผ ํ๋ค. ์ฌ๊ธฐ์์ ํ ์ค์ณ ์ด๋ฏธ์ง๋ฅผ ๋ค์ด๋ก๋ํ๋ค. [Glass Window 002 Glass Window 002..
ํต์ฌ ์์ฝ ์ฃผ์์ด ํ์ํ๋ค๋ ๊ฒ์ ์ฝ๋๊ฐ ๋ช ํํ๊ฒ ์ง์ฌ์์ง ์๋ค๋ ๋ป์ด๋ค. ⇒ ์ฃผ์์ ์ ์์ฑํ๋ ๊ฒ๋ณด๋ค ์ฝ๋์ ํํ๋ ฅ์ ๊ฐ์ ํด์ ์ฃผ์์ ์ ๊ฑฐํ๋ ค๊ณ ๋ ธ๋ ฅํ๋ ๊ฒ์ด ๋ฐ๋์งํ๋ค. ์ฃผ์์ผ๋ก ๋ํ๋ด๋ ค๋ ์ค๋ช ์ ํจ์๋ ๋ณ์๋ก ํํํ๋ผ. ์ฝ๋๊ฐ ์ด๋ฏธ ํํํ๊ณ ์๋ ์ ๋ณด๋ฅผ ์ฃผ์์ผ๋ก ์ค๋ณต ์ค๋ช ํ์ง ๋ง๋ผ. ์์ค ์ฝ๋ ๊ด๋ฆฌ ์์คํ ์ด ์ค ์ ์๋ ์ ๋ณด๋ฅผ ์ฃผ์์ผ๋ก ํํํ์ง ๋ง๋ผ. ์ฃผ์ ๊ทผ์ฒ์ ์๋ ์ฝ๋์ ๋ํ ์ ๋ณด๋ง ๊ธฐ์ ํ๋ผ. ์ ์ญ์ ์ธ ์ ๋ณด๋ ๋ค๋ฅธ ์์น์ ์๋ ์ฝ๋์ ์์กดํ๋ ์ ๋ณด๋ ๊ธฐ์ ํ์ง ์๋๋ค. 4์ฅ ์ฃผ์ ์ฃผ์์ ์ฌ์ฉํ๋ ์ด์ ๋ ์ฝ๋๋ก ์๋๋ฅผ ํํํ์ง ๋ชปํ๊ธฐ ๋๋ฌธ์ด๋ค. ์ฃผ์์ ์์ํ๊ฒ ์ ํ์ง ๋ชปํ๋ค. ํ๋ก๊ทธ๋๋จธ๋ค์ด ์ฃผ์์ ์ ์งํ๊ณ ๋ณด์ํ๊ธฐ๋ ํ์ค์ ์ผ๋ก ๋ถ๊ฐ๋ฅํ๊ธฐ ๋๋ฌธ์ด๋ค. ๋ฐ๋ผ์ ์ฃผ์์, ๊ฑฐ์ง๋ง์ ์์ฃผ ํ๋ค. ์ค๋๋ ์๋ก..
5๊ฐ ์ฌ์ง part3 - ํ ์ค์ณ map ์์ฑ ํ ์ค์ณ ๊ฐ์ฒด๋ฅผ ์ง์ ํ๋ฉด ์ง์ค๋ฉํธ๋ฆฌ์ ํ๋ฉด์ ์ง์ ๋ ํ ์ค์ณ์ ์ด๋ฏธ์ง๊ฐ ์ท์ฒ๋ผ ์ ํ์ง ๋ฉ์ฌ์ ๋ชจ๋ material์ ์ ์ฉํ ์ ์๋ค ํ ์ค์ณ ๊ฐ์ฒด ์ด๋ฏธ์ง๋ ๋์์ ๋ฑ์ ํตํด ์์ฑ๋๋ค TextureLoader๋ฅผ ํตํด ๋ณํํ ์ ์๋ค UV ์ขํ ํ ์ค์ณ ๋งตํ์ ์ง์ค๋ฉํธ๋ฆฌ์ UV ์ขํ๋ก ๋งตํ๋์ด ์๋ค. 0๊ณผ 1 ์ฌ์ด์ ๊ฐ์ ๊ฐ์ง๋ค. U: ์ํ ๋ฐฉํฅ์ ๋ํ ์ถ, V: ์์ง ๋ฐฉํฅ์ ๋ํ ์ถ three.js์ uv ์ขํ (0,0)์ ์ข์ธก ํ๋จ์ด๊ณ , (1,1)์ ์ฐ์ธก ์๋จ์ด๋ค. PRACTICE: MeshStandardMaterial์ ํ ์ค์ณ ์ ์ฉํ๊ธฐ ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ MeshStandardMaterial์ ์ ์ฉํด ๋ณด์ ์ด๋ฏธ์ง๋ก ํ ์ค์ณ ๊ฐ์ฒด ์์ฑํ๊ธฐ ์ด๋ฏธ์ง๊ฐ ๋คํธ์ํฌ์์ ์ฑ๊ณต์ ์ผ..
5๊ฐ ์ฌ์ง (part1 ~ 2) Material์ ์ง์ค๋ฉํธ๋ฆฌ์ ํจ๊ป Object3D ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ธฐ ์ํ ํ์ ์์ Object์ ์ธ ๊ฐ์ง ํ์ ํด๋์ค (Mesh, Line, Points) ๊ฐ๊ฐ์ ์ํ ํด๋์ค๋ก ๋ถ๋ฅ๋์ด ์ ๊ณต๋๋ค Material ๋ชจ๋ material ํ์ ํด๋์ค๋ ๋ถ๋ชจ ํด๋์ค์ธ Material์ ์์ฑ์ ์ฌ์ฉํ ์ ์๋ค const material = new THREE.MeshBasicMaterial({ // Material์ ์์ฑ๊ฐ (๊ธฐ๋ณธ๊ฐ์ผ๋ก ์ค์ ) visible: true, transparent: true, opacity: 1, depthTest: true, depthWrite: true, side: THREE.FrontSide, // MeshBasicMaterial์ ์์ฑ๊ฐ color..
์์ํ๊ธฐ ์ ์ 3์ฐจ์ ๊ณต๊ฐ ์์ ๋์ด๋ Object3D์ ํ์ ํด๋์ค๋ 3๊ฐ์ง๊ฐ ์๋ค. Mesh: ์ผ๊ฐํ ๋ฉด์ผ๋ก ๊ตฌ์ฑ๋ ๊ฐ์ฒด Line: ์ ํ ๊ฐ์ฒด Points: ์ ์ด 3D ์ค๋ธ์ ํธ๊ฐ 3์ฐจ์ ๊ณต๊ฐ ์์ ๋์ด๊ธฐ ์ํด์๋ ๋ค์ ๊ฐ์ ํ์๋ก ํ๋ค. Position: ์์น Rotation: ํ์ Scale: ํฌ๊ธฐ ์ด ๊ฐ๋ค์ 4x4 ํฌ๊ธฐ์ ํ๋ ฌ ์ ๋ณด๋ก ๋ณํ๋๋ค. ๋ชฉํ xyz ๊ณต๊ฐ ์์ ์ฌ๋ฌ 3D ๊ฐ์ฒด๋ฅผ ๊ตฌ์ฑํ๋ ์ฝ๋๋ฅผ ์์ฑํด ๋ณธ๋ค. ๊ณต๊ฐ ๊ตฌ์ฑ์ Scene Graph๋ฅผ ์ด์ฉํ๋ค. ํ์๊ณผ ์ง๊ตฌ, ๋ฌ์ ์์ ๊ณผ ๊ณต์ ์ ๊ตฌํํ๋ค. Scene Graph๋ก 3D ๊ณต๊ฐ ๊ตฌ์ฑํ๊ธฐ scene graph๋ฅผ ์ฝ๋๋ก ์์ฑํ๋ ๊ฒ = 3์ฐจ์ ๊ฐ์ฒด๋ฅผ ๊ณต๊ฐ์์ ๊ตฌ์ฑํ๋ค๋ ๊ฒ ** ํ์ดํ๋ ๋ถ๋ชจ → ์์์ ๋ปํ๋ค ๋ถ๋ชจ-์์ ๊ด๊ณ๋ก ๊ฐ Obje..
3์ฅ ํจ์ ํจ์๋ ํ๋ก๊ทธ๋จ์ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ๋จ์์ด๋ค. ์ด ์ฅ์์๋, ์๋๋ฅผ ๋ถ๋ช ํ๊ฒ ํํํ๋ ํจ์๋ฅผ ๋ง๋๋ ๋ฐฉ๋ฒ ํ๋ก๊ทธ๋จ ๋ด๋ถ๋ฅผ ์ง๊ด์ ์ผ๋ก ํ์ ํ ์ ์๋๋ก ํจ์๋ฅผ ์ฝ๊ฒ ์ฝ๊ณ ์ดํดํ ์ ์๋๋ก ๋ง๋๋ ๋ฐฉ๋ฒ ์ ๋ํด์ ์์๋ณธ๋ค. ์๊ฒ ๋ง๋ค์ด๋ผ! ํจ์๋ ์์์๋ก ๋ ์ข๋ค. ๊ทธ๋์ผ ์ฝ๊ณ ์ดํดํ๊ธฐ ์ฌ์์ง๋ค. ์กฐ๊ฑด๋ฌธ, ๋ฐ๋ณต๋ฌธ ๋ฑ์ ๋ค์ด๊ฐ๋ ๋ธ๋ก์ ํ ์ค์ด์ด์ผ ํ๋ค. ์ฆ, ์ค์ฒฉ ๊ตฌ์กฐ๊ฐ ์๊ธธ ๋งํผ ํจ์๊ฐ ์ปค์ ธ์๋ ์ ๋๋ค. ํจ์์์ ๋ค์ฌ ์ฐ๊ธฐ ์์ค์ 2๋จ์ ๋์ด์๋ฉด ์ ๋๋ค. ํ ๊ฐ์ง๋ง ํด๋ผ! ํจ์๋ ํ ๊ฐ์ง๋ฅผ ํด์ผ ํ๋ค. ๊ทธ ํ ๊ฐ์ง๋ฅผ ์ํด์ผ ํ๋ค. ๊ทธ ํ ๊ฐ์ง๋ง์ ํด์ผ ํ๋ค. ์ฌ๊ธฐ์์ ‘ํ ๊ฐ์ง๋ฅผ ํ๋ค’๊ฐ ์๋ฏธํ๋ ๊ฒ์ ์ถ์ํ ์์ค์ด ํ๋์ธ ๋จ๊ณ๋ง ์ํํ๋ค๋ ๊ฒ์ด๋ค. ๋จ์ํ ๋ค๋ฅธ ํํ์ด ์๋๋ผ ์๋ฏธ ์๋ ์ด๋ฆ์ผ๋ก..
3๊ฐ Geometry BufferGeometry Geometry๋ ๊ธฐ๋ณธ์ ์ผ๋ก BufferGeometry๋ฅผ ์์๋ฐ๋๋ค. Geometry์ ํ์์ ์ ์ํ๊ธฐ ์ํ ๋ฐ์ดํฐ๋ ์ด 6๊ฐ์ง์ด๋ค. Geometry์ ํ์์ ์ ์ํ๊ธฐ ์ํ ๋ฐ์ดํฐ ์ ์ : xyz ์ถ์ ๋ํ ์ขํ ์ ์ ์ธ๋ฑ์ค: 3์ฐจ์ ์ค๋ธ์ ํธ์ ๋ฉด์ ๊ตฌ์ฑํ๋ ์ ์ ์ ๋ํ ์ธ๋ฑ์ค ์์ง ๋ฒกํฐ: ์ ์ ์ ๋ํ ์์ง ๋ฒกํฐ ์ ์ ์์: ๋ฒกํฐ ์ ์ ์ ์์ ํ ์ค์ณ ๋งตํ์ ์ํ UV ์ขํ ์ฌ์ฉ์ ์ ์ ๋ฐ์ดํฐ 3์ฐจ์ ์๊ฐํ๋ ์ด ์ฌ์ฏ ๊ฐ์ง ๋ฐ์ดํฐ๊ฐ GPU์ ์ ๋ฌ๋๋ฉด์ ์ฒ๋ฆฌ๋๋ค. โUV ์ขํ๋ UV ์ขํ๋ ํ ์ค์ณ ์ด๋ฏธ์ง๋ฅผ 3์ฐจ์ ์ค๋ธ์ ํธ์ ์ ํ๊ธฐ ์ํ ๋ณํ ๊ธฐ์ค. 3D ๋ชจ๋ธ์ ํ๋ฉด์ 2์ฐจ์ ์ขํ๋ก ์ ๊ฐํ๋ฉด UV ์ขํ๊ฐ ๋๋ค ์ขํ๊ฐ์ 0 ~ 1 ์ฌ์ด์ ๊ฐ๋ง ๊ฐ์ง ์ ์๋ค. thr..