project

๐Ÿ“Œ Three.js 3D ๋ทฐ์–ด ์‚ฌ์ดํŠธ ๋ฐฐํฌ ๋ฐ ์‹ค์ œ ํ™œ์šฉ ๋ฐฉ๋ฒ•

octo54 2025. 4. 1. 11:08
๋ฐ˜์‘ํ˜•

๐Ÿ“Œ Three.js 3D ๋ทฐ์–ด ์‚ฌ์ดํŠธ ๋ฐฐํฌ ๋ฐ ์‹ค์ œ ํ™œ์šฉ ๋ฐฉ๋ฒ•

์ด์ „๊นŒ์ง€์˜ ๊ธ€์—์„œ๋Š” Three.js๋กœ 3D ๋ชจ๋ธ์„ ๋ถˆ๋Ÿฌ์˜ค๊ณ , ์• ๋‹ˆ๋ฉ”์ด์…˜์„ ์ ์šฉํ•˜๊ณ , ์„ฑ๋Šฅ์„ ์ตœ์ ํ™”ํ•˜๋Š” ์‹ค์ „ ๊ตฌํ˜„ ๊ณผ์ •์„ ๋‹ค๋ค˜์Šต๋‹ˆ๋‹ค.
์ด์ œ ๋งˆ์ง€๋ง‰ ๋‹จ๊ณ„์ธ **"๋ฐฐํฌ"**๋ฅผ ํ†ตํ•ด ์‹ค์ œ ์„œ๋น„์Šค๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ์›น์‚ฌ์ดํŠธ๋ฅผ ๋งŒ๋“ค์–ด๋ณด๊ฒ ์Šต๋‹ˆ๋‹ค.
๋˜ํ•œ, ์ด ๋ทฐ์–ด๋ฅผ ํฌํŠธํด๋ฆฌ์˜ค, ์ œํ’ˆ ํ”„๋ฆฌ๋ทฐ, ๊ฒŒ์ž„ ์•„์ดํ…œ ๋ทฐ์–ด ๋“ฑ ์‹ค์ „ ํ”„๋กœ์ ํŠธ๋กœ ์–ด๋–ป๊ฒŒ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š”์ง€๋„ ํ•จ๊ป˜ ์†Œ๊ฐœํ•ฉ๋‹ˆ๋‹ค.


๐Ÿš€ 1. ๋ฐฐํฌ ํ”Œ๋žซํผ ์„ ํƒํ•˜๊ธฐ

Three.js ๊ธฐ๋ฐ˜ ์‚ฌ์ดํŠธ๋Š” ์ •์  ์›น์‚ฌ์ดํŠธ ํ˜•ํƒœ์ด๋ฏ€๋กœ, Netlify, Vercel, GitHub Pages์™€ ๊ฐ™์€ ํ”Œ๋žซํผ์„ ํ†ตํ•ด ์†์‰ฝ๊ฒŒ ๋ฐฐํฌํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

ํ”Œ๋žซํผ ์žฅ์ 

Vercel Next.js์— ์ตœ์ ํ™”, ๋น ๋ฅธ CI/CD, custom domain ์ง€์›
Netlify React + Vite ํ”„๋กœ์ ํŠธ์— ์นœํ™”์ , ์‰ฌ์šด ์„ค์ •
GitHub Pages ๋ฌด๋ฃŒ ํ˜ธ์ŠคํŒ…, ๊ฐœ์ธ ํ”„๋กœ์ ํŠธ์šฉ์— ์ ํ•ฉ

โœ… 2. Vercel์„ ํ™œ์šฉํ•œ ๋ฐฐํฌ (Vite + React ๊ธฐ์ค€)

1๏ธโƒฃ GitHub ์ €์žฅ์†Œ์— ํ”„๋กœ์ ํŠธ ์—…๋กœ๋“œ

git init
git remote add origin https://github.com/yourname/threejs-viewer.git
git add .
git commit -m "init"
git push -u origin main

2๏ธโƒฃ Vercel์—์„œ ๋ฐฐํฌ ์„ค์ •

๋ฐ˜์‘ํ˜•
  1. https://vercel.com ์ ‘์†
  2. GitHub ๊ณ„์ • ์—ฐ๋™
  3. threejs-viewer ์ €์žฅ์†Œ ์„ ํƒ
  4. Framework ์„ ํƒ: React
  5. Build Command: npm run build
  6. Output Directory: dist
  7. Deploy ๋ฒ„ํŠผ ํด๋ฆญ ๐ŸŽ‰

โœ… 3. ๋ฐฐํฌ ์‹œ ์ฃผ์˜์‚ฌํ•ญ

๐Ÿ“ฆ ๋ชจ๋ธ ํŒŒ์ผ์€ public/models์— ์œ„์น˜์‹œํ‚ฌ ๊ฒƒ

GLTF ๋ชจ๋ธ ํŒŒ์ผ(.glb)์€ ์ •์  ํŒŒ์ผ์ด๋ฏ€๋กœ ๋ฐ˜๋“œ์‹œ public ํด๋” ํ•˜์œ„์— ์žˆ์–ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

public/
 โ”— models/
    โ”— robot.glb

๐Ÿ‘‰ ๋ฐฐํฌ ํ›„ URL ๊ฒฝ๋กœ: /models/robot.glb


โš ๏ธ ๋ธŒ๋ผ์šฐ์ € MIME ํƒ€์ž… ๋ฌธ์ œ

์„œ๋ฒ„๊ฐ€ .glb, .gltf ํŒŒ์ผ์„ application/octet-stream์œผ๋กœ ์ œ๊ณตํ•ด์•ผ ์ •์ƒ ์ž‘๋™ํ•ฉ๋‹ˆ๋‹ค.
Vercel๊ณผ Netlify๋Š” ๊ธฐ๋ณธ์ ์œผ๋กœ ๋ฌธ์ œ ์—†์ด ์ฒ˜๋ฆฌํ•˜์ง€๋งŒ, GitHub Pages์—์„œ๋Š” 404 ๋˜๋Š” wrong MIME ์˜ค๋ฅ˜๊ฐ€ ๋ฐœ์ƒํ•  ์ˆ˜ ์žˆ์œผ๋ฏ€๋กœ ์ฃผ์˜ํ•˜์„ธ์š”.


๐ŸŽฏ 4. ์‹ค์ œ ํ™œ์šฉ ์‹œ๋‚˜๋ฆฌ์˜ค ์˜ˆ์‹œ

โœ… 1) 3D ํฌํŠธํด๋ฆฌ์˜ค

  • ์ž์‹ ์˜ 3D ๋ชจ๋ธ๋ง ์ž‘์—…์„ ์›น์—์„œ ์ธํ„ฐ๋ž™ํ‹ฐ๋ธŒํ•˜๊ฒŒ ๋ณด์—ฌ์คŒ
  • ์˜ˆ: ์•„๋ฐ”ํƒ€, ํ™˜๊ฒฝ ๋ชจ๋ธ, ์ œํ’ˆ ๋””์ž์ธ ๋“ฑ

โœ… 2) ์ œํ’ˆ ๋ทฐ์–ด (e-commerce)

  • ์ „์ž์ œํ’ˆ, ์˜๋ฅ˜, ๊ฐ€๊ตฌ ๋“ฑ์˜ 3D ๋ทฐ์–ด
  • ์˜ˆ: ๊ณ ๊ฐ์ด ๋งˆ์šฐ์Šค๋กœ ํšŒ์ „ํ•˜์—ฌ ์ œํ’ˆ ํ™•์ธ

โœ… 3) ๊ฒŒ์ž„ ์•„์ดํ…œ ๋ทฐ์–ด

  • ์บ๋ฆญํ„ฐ, ๋ฌด๊ธฐ, ํƒˆ๊ฒƒ ๋“ฑ์„ ์‚ฌ์ „์— ์‹œ๊ฐ์ ์œผ๋กœ ์†Œ๊ฐœ
  • NFT ๊ฒŒ์ž„ ๋ฐ P2E ํ™˜๊ฒฝ์—์„œ๋„ ํ™œ์šฉ ๊ฐ€๋Šฅ

โœ… 4) ๊ต์œก ์ฝ˜ํ…์ธ  / ์ „์‹œ

  • ๊ณตํ•™, ํ•ด๋ถ€ํ•™, ๊ฑด์ถ• ๋ถ„์•ผ์˜ ๊ต์œก ์ž๋ฃŒ 3D ์‹œ๊ฐํ™”
  • ๋ฉ”ํƒ€๋ฒ„์Šค ์ „์‹œํšŒ, ๋ฏธ์ˆ ๊ด€ ์˜จ๋ผ์ธ ํ”Œ๋žซํผ

๐Ÿ“ˆ 5. ํ™•์žฅ ์•„์ด๋””์–ด

๊ธฐ๋Šฅ ์„ค๋ช…

โœ… ๋ชจ๋ธ ์—…๋กœ๋“œ ๊ธฐ๋Šฅ ์‚ฌ์šฉ์ž๊ฐ€ ์ง์ ‘ .glb ํŒŒ์ผ์„ ์—…๋กœ๋“œ
โœ… ๊ณต์œ  ๊ธฐ๋Šฅ ํŠน์ • ๋ชจ๋ธ์— ๋Œ€ํ•œ ๋งํฌ ๋ณต์‚ฌ & ๊ณต์œ 
โœ… ์บก์ฒ˜ ๊ธฐ๋Šฅ ํ˜„์žฌ ๋ทฐ๋ฅผ ์ด๋ฏธ์ง€๋กœ ์ €์žฅ (canvas to image)
โœ… ๋ชจ๋ฐ”์ผ ๋Œ€์‘ ๋ฐ˜์‘ํ˜• ๋””์ž์ธ + TouchControls

๐Ÿ”„ 6. ์ •๋ฆฌ ๋ฐ ๋งˆ๋ฌด๋ฆฌ

์ด ์‹œ๋ฆฌ์ฆˆ์—์„œ๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์€ ํ๋ฆ„์œผ๋กœ Three.js ๊ธฐ๋ฐ˜ 3D ๋ทฐ์–ด ์›น์‚ฌ์ดํŠธ๋ฅผ ์ง์ ‘ ๊ฐœ๋ฐœํ–ˆ์Šต๋‹ˆ๋‹ค:

  1. ํ”„๋กœ์ ํŠธ ๊ฐœ์š” ๋ฐ ํ™œ์šฉ ์‚ฌ๋ก€ ์†Œ๊ฐœ
  2. ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์ถ• (React + Vite + Three.js)
  3. GLTF ๋ชจ๋ธ ๋ถˆ๋Ÿฌ์˜ค๊ธฐ
  4. ์• ๋‹ˆ๋ฉ”์ด์…˜, ์กฐ๋ช…, ๊ทธ๋ฆผ์ž ์ ์šฉ
  5. ์„ฑ๋Šฅ ์ตœ์ ํ™”
  6. ์ตœ์ข… ๋ฐฐํฌ ๋ฐ ์‹ค์ „ ํ™œ์šฉ

์ด์ œ ์—ฌ๋Ÿฌ๋ถ„๋งŒ์˜ 3D ๋ทฐ์–ด๋ฅผ ๋งŒ๋“ค๊ณ , ์‹ค์ œ ์„œ๋น„์Šค์— ์ ์šฉํ•  ์ค€๋น„๊ฐ€ ๋๋‚ฌ์Šต๋‹ˆ๋‹ค.
๐Ÿ‘‰ ๋ชจ๋ธ๋งŒ ๋ฐ”๊พธ๋ฉด ๋‹ค์–‘ํ•œ ์ฝ˜ํ…์ธ ๋กœ ํ™•์žฅํ•  ์ˆ˜ ์žˆ์œผ๋‹ˆ ๊ผญ ํฌํŠธํด๋ฆฌ์˜ค์— ํ™œ์šฉํ•ด๋ณด์„ธ์š”!


โœ… ์‹œ๋ฆฌ์ฆˆ ๋งˆ๋ฌด๋ฆฌ ํ•œ๋งˆ๋””

3D ์›น์€ ๋” ์ด์ƒ ํŠน๋ณ„ํ•œ ๊ธฐ์ˆ ์ด ์•„๋‹™๋‹ˆ๋‹ค.
๋ˆ„๊ตฌ๋‚˜ Three.js๋ฅผ ํ†ตํ•ด ์ž์‹ ์˜ ์ฝ˜ํ…์ธ ๋ฅผ ์ž…์ฒด์ ์œผ๋กœ ๋ณด์—ฌ์ค„ ์ˆ˜ ์žˆ์–ด์š”.
์—ฌ๋Ÿฌ๋ถ„์˜ ํ”„๋กœ์ ํŠธ์— 3D ์ธํ„ฐ๋ž™์…˜์„ ๋”ํ•ด๋ณด์„ธ์š”. ์ด ์‹œ๋ฆฌ์ฆˆ๊ฐ€ ๊ทธ ์‹œ์ž‘์ด ๋˜๊ธฐ๋ฅผ ๋ฐ”๋ž๋‹ˆ๋‹ค ๐Ÿ™Œ