undefined

'๐ŸŒฟ ์Šคํ„ฐ๋””'์— ํ•ด๋‹น๋˜๋Š” ๊ธ€ 21๊ฑด

  1. [three.js] ์‚ฌ์šฉ์ž ์ •์˜ ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ

    6๊ฐ• ์‚ฌ์šฉ์ž ์ •์˜ ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ three.js๊ฐ€ ์ œ๊ณตํ•˜๋Š” ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ ์™ธ์—๋„ ์ง์ ‘ ์ •์˜ํ•˜๋Š” ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ๋ฅผ ๋งŒ๋“ค์–ด๋ณด์ž geometry๋Š” three.js์—์„œ BufferGeometry ํด๋ž˜์Šค๋ฅผ ํ†ตํ•ด ์ •์˜ํ•œ๋‹ค. BufferGeometry์— ์ •์˜ํ•  ์ˆ˜ ์žˆ๋Š” ์†์„ฑ position: geometry๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” 3์ฐจ์› ์ขŒํ‘œ์— ๋Œ€ํ•œ ์ •์ (Vertex) normal: ๊ฐ ์ •์ ์— ๋Œ€ํ•œ ์ˆ˜์ง ๋ฒกํ„ฐ color: ๊ฐ ์ •์ ์— ๋Œ€ํ•œ ์ƒ‰์ƒ uv: ๊ฐ ์ •์ ์— ๋Œ€ํ•œ ํ…์Šค์ณ ๋งตํ•‘ ์ขŒํ‘œ Vertex index: position ์†์„ฑ์œผ๋กœ ์ง€์ •๋œ ์ •์ ์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค ๋ฐฐ์—ด mesh๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ๋ฉด์˜ ์ตœ์†Œ ๋‹จ์œ„๋Š” ์‚ผ๊ฐํ˜•์ด๊ณ  ์ด ์‚ผ๊ฐํ˜•์€ 3๊ฐœ์˜ ์ •์ ์œผ๋กœ ๊ตฌ์„ฑ๋œ๋‹ค. ์ด ์‚ผ๊ฐํ˜•์„ ๊ตฌ์„ฑํ•˜๋Š” 3๊ฐœ์˜ ์ •์ ์— ๋Œ€ํ•œ position ์†์„ฑ์—์„œ์˜ ์ •์  ์ธ๋ฑ์Šค ๋ฒˆํ˜ธ๊ฐ€ Ve..

  2. [three.js] Material ์—ฌ๋Ÿฌ๊ฐ€์ง€ map์„ ์ ์šฉํ•ด ๋”์šฑ ์‚ฌ์‹ค์ ์ธ ํ…์Šค์ณ๋ฅผ ๋งŒ๋“ค์–ด๋ณด์ž

    5๊ฐ• ์žฌ์งˆ part4 - ํ…์Šค์ณ2 [three.js] Material์— ํ…์Šค์ณ๋ฅผ ์ž…ํ˜€๋ณด์ž 5๊ฐ• ์žฌ์งˆ part3 - ํ…์Šค์ณ map ์†์„ฑ ํ…์Šค์ณ ๊ฐ์ฒด๋ฅผ ์ง€์ •ํ•˜๋ฉด ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ์˜ ํ‘œ๋ฉด์— ์ง€์ •๋œ ํ…์Šค์ณ์˜ ์ด๋ฏธ์ง€๊ฐ€ ์˜ท์ฒ˜๋Ÿผ ์ž…ํ˜€์ง ๋ฉ”์‰ฌ์˜ ๋ชจ๋“  material์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค ํ…์Šค์ณ ๊ฐ์ฒด ์ด๋ฏธ์ง€๋‚˜ ๋™์˜์ƒ ๋“ฑ์„ tech-hayo.tistory.com ์ €๋ฒˆ ์‹œ๊ฐ„์—๋Š” Material์˜ map ์†์„ฑ์œผ๋กœ ์ด๋ฏธ์ง€๋ฅผ ํ…์Šค์ณ๋กœ ๋งŒ๋“ค์–ด ์ž…ํžˆ๊ณ , ์ด ํ…์Šค์ณ์˜ ์—ฌ๋Ÿฌ ๊ฐ€์ง€ ์†์„ฑ์„ ๋‹ค๋ค„๋ณด์•˜๋‹ค. ์ด๋ฒˆ ์‹œ๊ฐ„์—๋Š” ๋‹ค์–‘ํ•œ map์„ ํ†ตํ•ด ๋” ์„ธ๋ฐ€ํ•˜๊ฒŒ ํ…์Šค์ณ๋ฅผ ๊ณ ๋„ํ™”ํ•˜๋Š” ๋ฐฉ๋ฒ•์„ ๋ฐฐ์›Œ๋ณธ๋‹ค. ์ค€๋น„ํ•˜๊ธฐ ์—ฐ์Šตํ•˜๊ธฐ ์ „, ์‚ฌ์šฉํ•  ํ…์Šค์ณ ์ด๋ฏธ์ง€๋ฅผ ์ค€๋น„ํ•ด์•ผ ํ•œ๋‹ค. ์—ฌ๊ธฐ์—์„œ ํ…์Šค์ณ ์ด๋ฏธ์ง€๋ฅผ ๋‹ค์šด๋กœ๋“œํ•œ๋‹ค. [Glass Window 002 Glass Window 002..

  3. [ํด๋ฆฐ์ฝ”๋“œ] 4์žฅ ์ฃผ์„ (with Typescript)

    ํ•ต์‹ฌ ์š”์•ฝ ์ฃผ์„์ด ํ•„์š”ํ•˜๋‹ค๋Š” ๊ฒƒ์€ ์ฝ”๋“œ๊ฐ€ ๋ช…ํ™•ํ•˜๊ฒŒ ์งœ์—ฌ์žˆ์ง€ ์•Š๋‹ค๋Š” ๋œป์ด๋‹ค. ⇒ ์ฃผ์„์„ ์ž˜ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ๋ณด๋‹ค ์ฝ”๋“œ์˜ ํ‘œํ˜„๋ ฅ์„ ๊ฐœ์„ ํ•ด์„œ ์ฃผ์„์„ ์ œ๊ฑฐํ•˜๋ ค๊ณ  ๋…ธ๋ ฅํ•˜๋Š” ๊ฒƒ์ด ๋ฐ”๋žŒ์งํ•˜๋‹ค. ์ฃผ์„์œผ๋กœ ๋‚˜ํƒ€๋‚ด๋ ค๋Š” ์„ค๋ช…์„ ํ•จ์ˆ˜๋‚˜ ๋ณ€์ˆ˜๋กœ ํ‘œํ˜„ํ•˜๋ผ. ์ฝ”๋“œ๊ฐ€ ์ด๋ฏธ ํ‘œํ˜„ํ•˜๊ณ  ์žˆ๋Š” ์ •๋ณด๋ฅผ ์ฃผ์„์œผ๋กœ ์ค‘๋ณต ์„ค๋ช…ํ•˜์ง€ ๋งˆ๋ผ. ์†Œ์Šค ์ฝ”๋“œ ๊ด€๋ฆฌ ์‹œ์Šคํ…œ์ด ์ค„ ์ˆ˜ ์žˆ๋Š” ์ •๋ณด๋ฅผ ์ฃผ์„์œผ๋กœ ํ‘œํ˜„ํ•˜์ง€ ๋งˆ๋ผ. ์ฃผ์„ ๊ทผ์ฒ˜์— ์žˆ๋Š” ์ฝ”๋“œ์— ๋Œ€ํ•œ ์ •๋ณด๋งŒ ๊ธฐ์ˆ ํ•˜๋ผ. ์ „์—ญ์ ์ธ ์ •๋ณด๋‚˜ ๋‹ค๋ฅธ ์œ„์น˜์— ์žˆ๋Š” ์ฝ”๋“œ์— ์˜์กดํ•˜๋Š” ์ •๋ณด๋Š” ๊ธฐ์ˆ ํ•˜์ง€ ์•Š๋Š”๋‹ค. 4์žฅ ์ฃผ์„ ์ฃผ์„์„ ์‚ฌ์šฉํ•˜๋Š” ์ด์œ ๋Š” ์ฝ”๋“œ๋กœ ์˜๋„๋ฅผ ํ‘œํ˜„ํ•˜์ง€ ๋ชปํ–ˆ๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ์ฃผ์„์€ ์ˆœ์ˆ˜ํ•˜๊ฒŒ ์„ ํ•˜์ง€ ๋ชปํ•˜๋‹ค. ํ”„๋กœ๊ทธ๋ž˜๋จธ๋“ค์ด ์ฃผ์„์„ ์œ ์ง€ํ•˜๊ณ  ๋ณด์ˆ˜ํ•˜๊ธฐ๋ž€ ํ˜„์‹ค์ ์œผ๋กœ ๋ถˆ๊ฐ€๋Šฅํ•˜๊ธฐ ๋•Œ๋ฌธ์ด๋‹ค. ๋”ฐ๋ผ์„œ ์ฃผ์„์€, ๊ฑฐ์ง“๋ง์„ ์ž์ฃผ ํ•œ๋‹ค. ์˜ค๋ž˜๋ ์ˆ˜๋ก..

  4. [three.js] Material์— ํ…์Šค์ณ๋ฅผ ์ž…ํ˜€๋ณด์ž

    5๊ฐ• ์žฌ์งˆ part3 - ํ…์Šค์ณ map ์†์„ฑ ํ…์Šค์ณ ๊ฐ์ฒด๋ฅผ ์ง€์ •ํ•˜๋ฉด ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ์˜ ํ‘œ๋ฉด์— ์ง€์ •๋œ ํ…์Šค์ณ์˜ ์ด๋ฏธ์ง€๊ฐ€ ์˜ท์ฒ˜๋Ÿผ ์ž…ํ˜€์ง ๋ฉ”์‰ฌ์˜ ๋ชจ๋“  material์— ์ ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค ํ…์Šค์ณ ๊ฐ์ฒด ์ด๋ฏธ์ง€๋‚˜ ๋™์˜์ƒ ๋“ฑ์„ ํ†ตํ•ด ์ƒ์„ฑ๋œ๋‹ค TextureLoader๋ฅผ ํ†ตํ•ด ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ๋‹ค UV ์ขŒํ‘œ ํ…์Šค์ณ ๋งตํ•‘์€ ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ์— UV ์ขŒํ‘œ๋กœ ๋งตํ•‘๋˜์–ด ์žˆ๋‹ค. 0๊ณผ 1 ์‚ฌ์ด์˜ ๊ฐ’์„ ๊ฐ€์ง„๋‹ค. U: ์ˆ˜ํ‰ ๋ฐฉํ–ฅ์— ๋Œ€ํ•œ ์ถ•, V: ์ˆ˜์ง ๋ฐฉํ–ฅ์— ๋Œ€ํ•œ ์ถ• three.js์˜ uv ์ขŒํ‘œ (0,0)์€ ์ขŒ์ธก ํ•˜๋‹จ์ด๊ณ , (1,1)์€ ์šฐ์ธก ์ƒ๋‹จ์ด๋‹ค. PRACTICE: MeshStandardMaterial์— ํ…์Šค์ณ ์ ์šฉํ•˜๊ธฐ ๊ฐ€์žฅ ๋งŽ์ด ์‚ฌ์šฉ๋˜๋Š” MeshStandardMaterial์— ์ ์šฉํ•ด ๋ณด์ž ์ด๋ฏธ์ง€๋กœ ํ…์Šค์ณ ๊ฐ์ฒด ์ƒ์„ฑํ•˜๊ธฐ ์ด๋ฏธ์ง€๊ฐ€ ๋„คํŠธ์›Œํฌ์—์„œ ์„ฑ๊ณต์ ์œผ..

  5. [three.js] Scene Graph๋ฅผ ์ด์šฉํ•œ ๊ณต๊ฐ„๊ตฌ์„ฑ

    ์‹œ์ž‘ํ•˜๊ธฐ ์ „์— 3์ฐจ์› ๊ณต๊ฐ„ ์ƒ์— ๋†“์ด๋Š” Object3D์˜ ํŒŒ์ƒ ํด๋ž˜์Šค๋Š” 3๊ฐ€์ง€๊ฐ€ ์žˆ๋‹ค. Mesh: ์‚ผ๊ฐํ˜• ๋ฉด์œผ๋กœ ๊ตฌ์„ฑ๋œ ๊ฐ์ฒด Line: ์„ ํ˜• ๊ฐ์ฒด Points: ์  ์ด 3D ์˜ค๋ธŒ์ ํŠธ๊ฐ€ 3์ฐจ์› ๊ณต๊ฐ„ ์ƒ์— ๋†“์ด๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋‹ค์Œ ๊ฐ’์„ ํ•„์š”๋กœ ํ•œ๋‹ค. Position: ์œ„์น˜ Rotation: ํšŒ์ „ Scale: ํฌ๊ธฐ ์ด ๊ฐ’๋“ค์€ 4x4 ํฌ๊ธฐ์˜ ํ–‰๋ ฌ ์ •๋ณด๋กœ ๋ณ€ํ™˜๋œ๋‹ค. ๋ชฉํ‘œ xyz ๊ณต๊ฐ„ ์ƒ์— ์—ฌ๋Ÿฌ 3D ๊ฐ์ฒด๋ฅผ ๊ตฌ์„ฑํ•˜๋Š” ์ฝ”๋“œ๋ฅผ ์ž‘์„ฑํ•ด ๋ณธ๋‹ค. ๊ณต๊ฐ„ ๊ตฌ์„ฑ์— Scene Graph๋ฅผ ์ด์šฉํ•œ๋‹ค. ํƒœ์–‘๊ณผ ์ง€๊ตฌ, ๋‹ฌ์˜ ์ž์ „๊ณผ ๊ณต์ „์„ ๊ตฌํ˜„ํ•œ๋‹ค. Scene Graph๋กœ 3D ๊ณต๊ฐ„ ๊ตฌ์„ฑํ•˜๊ธฐ scene graph๋ฅผ ์ฝ”๋“œ๋กœ ์ž‘์„ฑํ•˜๋Š” ๊ฒƒ = 3์ฐจ์› ๊ฐ์ฒด๋ฅผ ๊ณต๊ฐ„์ƒ์— ๊ตฌ์„ฑํ•œ๋‹ค๋Š” ๊ฒƒ ** ํ™”์‚ดํ‘œ๋Š” ๋ถ€๋ชจ → ์ž์‹์„ ๋œปํ•œ๋‹ค ๋ถ€๋ชจ-์ž์‹ ๊ด€๊ณ„๋กœ ๊ฐ Obje..

  6. [ํด๋ฆฐ์ฝ”๋“œ] 3์žฅ ํ•จ์ˆ˜ with Typescript

    3์žฅ ํ•จ์ˆ˜ ํ•จ์ˆ˜๋Š” ํ”„๋กœ๊ทธ๋žจ์˜ ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ๋‹จ์œ„์ด๋‹ค. ์ด ์žฅ์—์„œ๋Š”, ์˜๋„๋ฅผ ๋ถ„๋ช…ํ•˜๊ฒŒ ํ‘œํ˜„ํ•˜๋Š” ํ•จ์ˆ˜๋ฅผ ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ• ํ”„๋กœ๊ทธ๋žจ ๋‚ด๋ถ€๋ฅผ ์ง๊ด€์ ์œผ๋กœ ํŒŒ์•…ํ•  ์ˆ˜ ์žˆ๋„๋ก ํ•จ์ˆ˜๋ฅผ ์‰ฝ๊ฒŒ ์ฝ๊ณ  ์ดํ•ดํ•  ์ˆ˜ ์žˆ๋„๋ก ๋งŒ๋“œ๋Š” ๋ฐฉ๋ฒ• ์— ๋Œ€ํ•ด์„œ ์•Œ์•„๋ณธ๋‹ค. ์ž‘๊ฒŒ ๋งŒ๋“ค์–ด๋ผ! ํ•จ์ˆ˜๋Š” ์ž‘์„์ˆ˜๋ก ๋” ์ข‹๋‹ค. ๊ทธ๋ž˜์•ผ ์ฝ๊ณ  ์ดํ•ดํ•˜๊ธฐ ์‰ฌ์›Œ์ง„๋‹ค. ์กฐ๊ฑด๋ฌธ, ๋ฐ˜๋ณต๋ฌธ ๋“ฑ์— ๋“ค์–ด๊ฐ€๋Š” ๋ธ”๋ก์€ ํ•œ ์ค„์ด์–ด์•ผ ํ•œ๋‹ค. ์ฆ‰, ์ค‘์ฒฉ ๊ตฌ์กฐ๊ฐ€ ์ƒ๊ธธ ๋งŒํผ ํ•จ์ˆ˜๊ฐ€ ์ปค์ ธ์„œ๋Š” ์•ˆ ๋œ๋‹ค. ํ•จ์ˆ˜์—์„œ ๋“ค์—ฌ ์“ฐ๊ธฐ ์ˆ˜์ค€์€ 2๋‹จ์„ ๋„˜์–ด์„œ๋ฉด ์•ˆ ๋œ๋‹ค. ํ•œ ๊ฐ€์ง€๋งŒ ํ•ด๋ผ! ํ•จ์ˆ˜๋Š” ํ•œ ๊ฐ€์ง€๋ฅผ ํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ ํ•œ ๊ฐ€์ง€๋ฅผ ์ž˜ํ•ด์•ผ ํ•œ๋‹ค. ๊ทธ ํ•œ ๊ฐ€์ง€๋งŒ์„ ํ•ด์•ผ ํ•œ๋‹ค. ์—ฌ๊ธฐ์—์„œ ‘ํ•œ ๊ฐ€์ง€๋ฅผ ํ•œ๋‹ค’๊ฐ€ ์˜๋ฏธํ•˜๋Š” ๊ฒƒ์€ ์ถ”์ƒํ™” ์ˆ˜์ค€์ด ํ•˜๋‚˜์ธ ๋‹จ๊ณ„๋งŒ ์ˆ˜ํ–‰ํ•œ๋‹ค๋Š” ๊ฒƒ์ด๋‹ค. ๋‹จ์ˆœํžˆ ๋‹ค๋ฅธ ํ‘œํ˜„์ด ์•„๋‹ˆ๋ผ ์˜๋ฏธ ์žˆ๋Š” ์ด๋ฆ„์œผ๋กœ..

  7. [three.js] ๋‹ค์–‘ํ•œ ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ ์‚ฌ์šฉํ•ด ๋ณด๊ธฐ

    3๊ฐ• Geometry BufferGeometry Geometry๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ BufferGeometry๋ฅผ ์ƒ์†๋ฐ›๋Š”๋‹ค. Geometry์˜ ํ˜•์ƒ์„ ์ •์˜ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐ๋Š” ์ด 6๊ฐ€์ง€์ด๋‹ค. Geometry์˜ ํ˜•์ƒ์„ ์ •์˜ํ•˜๊ธฐ ์œ„ํ•œ ๋ฐ์ดํ„ฐ ์ •์ : xyz ์ถ•์— ๋Œ€ํ•œ ์ขŒํ‘œ ์ •์  ์ธ๋ฑ์Šค: 3์ฐจ์› ์˜ค๋ธŒ์ ํŠธ์˜ ๋ฉด์„ ๊ตฌ์„ฑํ•˜๋Š” ์ •์ ์— ๋Œ€ํ•œ ์ธ๋ฑ์Šค ์ˆ˜์ง ๋ฒกํ„ฐ: ์ •์ ์— ๋Œ€ํ•œ ์ˆ˜์ง ๋ฒกํ„ฐ ์ •์  ์ƒ‰์ƒ: ๋ฒกํ„ฐ ์ •์ ์˜ ์ƒ‰์ƒ ํ…์Šค์ณ ๋งตํ•‘์„ ์œ„ํ•œ UV ์ขŒํ‘œ ์‚ฌ์šฉ์ž ์ •์˜ ๋ฐ์ดํ„ฐ 3์ฐจ์› ์‹œ๊ฐํ™”๋Š” ์ด ์—ฌ์„ฏ ๊ฐ€์ง€ ๋ฐ์ดํ„ฐ๊ฐ€ GPU์— ์ „๋‹ฌ๋˜๋ฉด์„œ ์ฒ˜๋ฆฌ๋œ๋‹ค. โ“UV ์ขŒํ‘œ๋ž€ UV ์ขŒํ‘œ๋Š” ํ…์Šค์ณ ์ด๋ฏธ์ง€๋ฅผ 3์ฐจ์› ์˜ค๋ธŒ์ ํŠธ์— ์ž…ํžˆ๊ธฐ ์œ„ํ•œ ๋ณ€ํ™˜ ๊ธฐ์ค€. 3D ๋ชจ๋ธ์˜ ํ‘œ๋ฉด์„ 2์ฐจ์› ์ขŒํ‘œ๋กœ ์ „๊ฐœํ•˜๋ฉด UV ์ขŒํ‘œ๊ฐ€ ๋œ๋‹ค ์ขŒํ‘œ๊ฐ’์€ 0 ~ 1 ์‚ฌ์ด์˜ ๊ฐ’๋งŒ ๊ฐ€์งˆ ์ˆ˜ ์žˆ๋‹ค. thr..