Skip to content

play3step/MoreView

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

πŸš€ MoreView: 3D/2D ν•˜μ΄λΈŒλ¦¬λ“œ ν”„λ ˆμ  ν…Œμ΄μ…˜ ν”Œλž«νΌ

"PowerPoint의 μ‚¬μš©μ„±μ„ 3D둜 ν™•μž₯ν•˜λ‹€"

2D μŠ¬λΌμ΄λ“œμ™€ 3D 였브젝트λ₯Ό κ²°ν•©ν•˜μ—¬ λˆ„κ΅¬λ‚˜ μ‰½κ²Œ μž…μ²΄μ μΈ λ°œν‘œ 자료λ₯Ό μ œμž‘ν•  수 μžˆλŠ” μ›Ή 기반 μ—λ””ν„°μž…λ‹ˆλ‹€.


πŸ›  Tech Stack

Category Technologies
Frontend React Styled Components Framer Motion
Graphics Three.js React Three Fiber Konva
State Recoil
Communication WebSocket SSE
AI Tools Meshy AI

✨ Key Features

🎨 2DΒ·3D 톡합 μ—λ””νŒ…

  • ν…μŠ€νŠΈ, 이미지 λ“± 2D 객체와 μ™ΈλΆ€ **3D λͺ¨λΈ(GLTF λ“±)**을 ν•œ ν™”λ©΄μ—μ„œ 자유둭게 배치 및 μ‘°μž‘ν•  수 μžˆμŠ΅λ‹ˆλ‹€.
  • 직관적인 λ“œλž˜κ·Έ μ•€ λ“œλ‘­ μΈν„°νŽ˜μ΄μŠ€λ₯Ό μ œκ³΅ν•©λ‹ˆλ‹€.

πŸ€– AI 기반 3D 에셋 생성

  • Meshy AI 연동: ν”„λ‘¬ν”„νŠΈ μž…λ ₯만으둜 λ°œν‘œμš© 3D 였브젝트λ₯Ό μ¦‰μ‹œ 생성 및 μ‚½μž…ν•©λ‹ˆλ‹€.
  • λ³΅μž‘ν•œ λͺ¨λΈλ§ 툴 없이도 고퀄리티 3D 에셋을 확보할 수 μžˆμŠ΅λ‹ˆλ‹€.

πŸ‘₯ μ‹€μ‹œκ°„ ν˜‘μ—… μ‹œμŠ€ν…œ

  • WebSocket 기반: νŒ€ λ‹¨μœ„λ‘œ ν”„λ‘œμ νŠΈλ₯Ό κ³΅μœ ν•˜κ³  νŽΈμ§‘ 사항을 μ‹€μ‹œκ°„μœΌλ‘œ λ™κΈ°ν™”ν•©λ‹ˆλ‹€.
  • λ‹€λ₯Έ μ‚¬μš©μžμ˜ 마우슀 μ»€μ„œ μœ„μΉ˜μ™€ μž‘μ—… 내역을 μ‹œκ°μ μœΌλ‘œ κ³΅μœ ν•©λ‹ˆλ‹€.

πŸ’‘ Technical Decision Making

[Three.js & Konva μ‘°ν•©]

3D κ³΅κ°„μ˜ μž…μ²΄κ°κ³Ό 2D κ·Έλž˜ν”½μ˜ μ„Έλ°€ν•œ νŽΈμ§‘ κΈ°λŠ₯을 λ™μ‹œμ— μΆ©μ‘±ν•˜κΈ° μœ„ν•΄ 두 라이브러리λ₯Ό λ ˆμ΄μ–΄ ν˜•νƒœλ‘œ κ²°ν•©ν–ˆμŠ΅λ‹ˆλ‹€.

[Recoil μƒνƒœ 관리]

에디터 λ‚΄ μˆ˜λ§Žμ€ 객체의 μƒνƒœλ₯Ό 효율적으둜 κ΄€λ¦¬ν•˜κ³ , ν•„μš”ν•œ μ»΄ν¬λ„ŒνŠΈλ§Œ κ΅­μ†Œμ μœΌλ‘œ λ¦¬λ Œλ”λ§ν•˜κΈ° μœ„ν•΄ μ„ νƒν–ˆμŠ΅λ‹ˆλ‹€.


⚑ Trouble Shooting & Optimization

1. Undo/Redo νžˆμŠ€ν† λ¦¬ 관리 및 λ©”λͺ¨λ¦¬ λˆ„μˆ˜ ν•΄κ²°
  • 🚨 Problem

    • μ΄ˆκΈ°μ—λŠ” JSON.stringifyλ₯Ό μ΄μš©ν•΄ 전체 μƒνƒœ 객체λ₯Ό λΉ„κ΅ν•˜μ—¬ νžˆμŠ€ν† λ¦¬μ— μ €μž₯.
    • 객체 비ꡐ 정확도 μ €ν•˜ 및 λ°°μ—΄ λ¬΄μ œν•œ μ¦κ°€λ‘œ μΈν•œ λΈŒλΌμš°μ € λ©”λͺ¨λ¦¬ λˆ„μˆ˜ λ°œμƒ.
  • βœ… Solution

    • lodash의 isEqual λ„μž…: Deep Equality 체크둜 정확도 ν–₯상.
    • νžˆμŠ€ν† λ¦¬ λ°°μ—΄ μ΅œλŒ€ 개수 50개 μ œν•œ: λΆˆν•„μš”ν•œ λ©”λͺ¨λ¦¬ 점유 λ°©μ§€.
  • πŸ“ˆ Result

    • λ©”λͺ¨λ¦¬ μ‚¬μš©λŸ‰ μ•ˆμ •ν™” 및 λŠκΉ€ μ—†λŠ” μ‹€ν–‰ μ·¨μ†Œ/λ‹€μ‹œ μ‹€ν–‰ κ²½ν—˜ 제곡.
2. SSE(Server-Sent Events)λ₯Ό ν™œμš©ν•œ AI 생성 UX κ°œμ„ 
  • 🚨 Problem

    • AI 3D λͺ¨λΈ 생성 μ‹œ μ΅œλŒ€ 5λΆ„ 이상 μ†Œμš”.
    • λ‹¨μˆœ HTTP μš”μ²­ νƒ€μž„μ•„μ›ƒ μœ„ν—˜ 및 λ‘œλ”© 쀑 UX μ €ν•˜.
  • βœ… Solution

    • ν΄λΌμ΄μ–ΈνŠΈκ°€ μ„œλ²„ μƒνƒœλ₯Ό μ‹€μ‹œκ°„ μˆ˜μ‹ ν•˜λ„λ‘ SSE ꡬ쑰 λ„μž….
  • πŸ“ˆ Result

    • λͺ¨λΈ 생성 쀑에도 μ—λ””ν„°μ˜ λ‹€λ₯Έ κΈ°λŠ₯ μ‚¬μš© κ°€λŠ₯.
    • 쀑볡 μš”μ²­ λ°©μ§€λ‘œ μ„œλ²„ λΆ€ν•˜ κ°μ†Œ.
3. 3D 카메라 컨트둀 μ΅œμ ν™” 및 이벀트 핸듀링
  • 🚨 Problem

    • Edit3d μ»΄ν¬λ„ŒνŠΈ 카메라 νšŒμ „ μ‹œ, React State μ—…λ°μ΄νŠΈλ‘œ μΈν•œ κ³Όλ„ν•œ λ¦¬λ Œλ”λ§ 및 ν™”λ©΄ λŠκΉ€.
  • βœ… Solution

    • window.addEventListener둜 이벀트 직접 μˆ˜μ‹ .
    • 마우슀 μ΄λ™λŸ‰μ„ 계산해 camera.quaternion 직접 μ‘°μž‘.
  • πŸ“ˆ Result

    • λ¦¬λ Œλ”λ§ μ—†λŠ” λΆ€λ“œλŸ¬μš΄ 카메라 νšŒμ „ 및 GPU 가속 ν™œμš©.

πŸ— Project Structure

Standard React Folder Structureλ₯Ό 기반으둜 κΈ°λŠ₯ λ‹¨μœ„λ‘œ λͺ…ν™•ν•˜κ²Œ λΆ„λ¦¬λœ κ΅¬μ‘°μž…λ‹ˆλ‹€.

src/
 β”œβ”€β”€ components/       # 🧩 UI 및 에디터 핡심 λͺ¨λ“ˆ (EditPage/, Edit3d/ λ“±)
 β”œβ”€β”€ pages/            # πŸ“„ λΌμš°νŒ… νŽ˜μ΄μ§€ (EditPage.jsx, ItemPage.jsx λ“±)
 β”œβ”€β”€ hooks/            # 🎣 λΉ„μ¦ˆλ‹ˆμŠ€ 둜직 뢄리 (useShapeHandlers, useItemValue λ“±)
 β”œβ”€β”€ store/            # πŸ’Ύ μ „μ—­ μƒνƒœ 관리 (recoil.js, toolState.js)
 β”œβ”€β”€ apis/             # 🌐 μ™ΈλΆ€ API 톡신
 └── assets/           # πŸ–ΌοΈ 정적 λ¦¬μ†ŒμŠ€

πŸ† Achievements & Lessons Learned

  • WebSocket ν”„λ‘œν† μ½œ 섀계: μ‹€μ‹œκ°„ 에디터 κ΅¬ν˜„μ„ 톡해 λ‹¨μˆœ μ±„νŒ…μ„ λ„˜μ–΄μ„  'μƒνƒœ 동기화'λ₯Ό μœ„ν•œ 이벀트 섀계 κ²½ν—˜.
  • 3D μ›Ή 기술 μŠ΅λ“: Three.js의 카메라, μ‘°λͺ…, μ§€μ˜€λ©”νŠΈλ¦¬ κ°œλ…μ„ 읡히고 React 생λͺ…주기와 μ‘°ν™”μ‹œν‚€λŠ” λ…Έν•˜μš° μŠ΅λ“.

About

πŸ”§ 3D ν”„λ ˆμ  ν…Œμ΄μ…˜ MoreView μž…λ‹ˆλ‹€.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Contributors 2

  •  
  •  

Languages