"PowerPointμ μ¬μ©μ±μ 3Dλ‘ νμ₯νλ€"
2D μ¬λΌμ΄λμ 3D μ€λΈμ νΈλ₯Ό κ²°ν©νμ¬ λꡬλ μ½κ² μ 체μ μΈ λ°ν μλ£λ₯Ό μ μν μ μλ μΉ κΈ°λ° μλν°μ λλ€.
| Category | Technologies |
|---|---|
| Frontend | |
| Graphics | |
| State | |
| Communication | |
| AI Tools |
- ν μ€νΈ, μ΄λ―Έμ§ λ± 2D κ°μ²΄μ μΈλΆ **3D λͺ¨λΈ(GLTF λ±)**μ ν νλ©΄μμ μμ λ‘κ² λ°°μΉ λ° μ‘°μν μ μμ΅λλ€.
- μ§κ΄μ μΈ λλκ·Έ μ€ λλ‘ μΈν°νμ΄μ€λ₯Ό μ 곡ν©λλ€.
- Meshy AI μ°λ: ν둬ννΈ μ λ ₯λ§μΌλ‘ λ°νμ© 3D μ€λΈμ νΈλ₯Ό μ¦μ μμ± λ° μ½μ ν©λλ€.
- 볡μ‘ν λͺ¨λΈλ§ ν΄ μμ΄λ κ³ νλ¦¬ν° 3D μμ μ ν보ν μ μμ΅λλ€.
- WebSocket κΈ°λ°: ν λ¨μλ‘ νλ‘μ νΈλ₯Ό 곡μ νκ³ νΈμ§ μ¬νμ μ€μκ°μΌλ‘ λκΈ°νν©λλ€.
- λ€λ₯Έ μ¬μ©μμ λ§μ°μ€ 컀μ μμΉμ μμ λ΄μμ μκ°μ μΌλ‘ 곡μ ν©λλ€.
3D 곡κ°μ μ 체κ°κ³Ό 2D κ·Έλν½μ μΈλ°ν νΈμ§ κΈ°λ₯μ λμμ μΆ©μ‘±νκΈ° μν΄ λ λΌμ΄λΈλ¬λ¦¬λ₯Ό λ μ΄μ΄ ννλ‘ κ²°ν©νμ΅λλ€.
μλν° λ΄ μλ§μ κ°μ²΄μ μνλ₯Ό ν¨μ¨μ μΌλ‘ κ΄λ¦¬νκ³ , νμν μ»΄ν¬λνΈλ§ κ΅μμ μΌλ‘ 리λ λλ§νκΈ° μν΄ μ ννμ΅λλ€.
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 κ°μ νμ©.
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/ # πΌοΈ μ μ 리μμ€- WebSocket νλ‘ν μ½ μ€κ³: μ€μκ° μλν° κ΅¬νμ ν΅ν΄ λ¨μ μ±ν μ λμ΄μ 'μν λκΈ°ν'λ₯Ό μν μ΄λ²€νΈ μ€κ³ κ²½ν.
- 3D μΉ κΈ°μ μ΅λ: Three.jsμ μΉ΄λ©λΌ, μ‘°λͺ , μ§μ€λ©νΈλ¦¬ κ°λ μ μ΅νκ³ React μλͺ μ£ΌκΈ°μ μ‘°νμν€λ λ Ένμ° μ΅λ.