--- id: wiki-2026-0508-20k-skinned-instances-demo title: 20k skinned instances demo category: 10_Wiki/Topics status: needs_review canonical_id: self aliases: [P-Reinforce-AUTO-EB3F3C] duplicate_of: none source_trust_level: A confidence_score: 0.9 tags: [auto-reinforced] raw_sources: [] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - 20k skinned instances demo" inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08) tech_stack: language: unspecified framework: unspecified --- # [[20k skinned instances demo|20k skinned instances demo]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > '20k skinned instances demo'λŠ” Three.js 기반의 μ˜€ν”ˆ μ†ŒμŠ€ 라이브러리인 [[InstancedMesh2|InstancedMesh2]]λ₯Ό ν™œμš©ν•˜μ—¬ 20,000개의 κ°œλ³„μ μΈ μŠ€ν‚¨λ“œ μΈμŠ€ν„΄μŠ€(Skinned instances)λ₯Ό λ™μ‹œμ— λ Œλ”λ§ν•˜λŠ” μ„±λŠ₯ μ΅œμ ν™” 데λͺ¨μž…λ‹ˆλ‹€ [1, 2]. 이 데λͺ¨λŠ” λͺ¨λ°”일 κΈ°κΈ°μ—μ„œλ„ 3,000개의 μΈμŠ€ν„΄μŠ€λ₯Ό μ›ν™œν•˜κ²Œ ꡬ동할 수 μžˆλ„λ‘ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€ [2]. ν”„λŸ¬μŠ€ν…€ 컬링, 거리 기반 μ• λ‹ˆλ©”μ΄μ…˜ ν”„λ ˆμž„ 쑰절, 닀쀑 LOD(Level of Detail) 생성 λ“± λ‹€μ–‘ν•œ μ΅œμ ν™” 기법을 μ μš©ν•˜μ—¬ 단 5번의 λ“œλ‘œμš° 콜만으둜 λ Œλ”λ§μ„ μ²˜λ¦¬ν•˜λŠ” 것이 νŠΉμ§•μž…λ‹ˆλ‹€ [2, 3]. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) 이 데λͺ¨λŠ” μ œμž‘μž(agargaro)κ°€ κ°œλ°œν•œ `[[InstancedMesh|InstancedMesh]]2` 라이브러리λ₯Ό 기반으둜 ν•˜λ©°, λŒ€κ·œλͺ¨ μŠ€ν‚¨λ“œ 메쉬λ₯Ό λ Œλ”λ§ν•˜κΈ° μœ„ν•΄ λ‹€μŒκ³Ό 같은 μ„ΈλΆ€ μ΅œμ ν™” κΈ°μˆ λ“€μ„ μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€ [2]. * **ν”„λŸ¬μŠ€ν…€ 컬링 및 μ‹œμ•Ό 기반 μ—…λ°μ΄νŠΈ ([[Frustum Culling|Frustum Culling]] & View-based Updates):** 기본적인 ν”„λŸ¬μŠ€ν…€ 컬링을 μ μš©ν•˜μ—¬ 카메라 μ‹œμ•Ό(Frustum) 내에 μ‘΄μž¬ν•˜λŠ” μΈμŠ€ν„΄μŠ€λ“€μ— λŒ€ν•΄μ„œλ§Œ λΌˆλŒ€(Bones) 연산을 μ—…λ°μ΄νŠΈν•©λ‹ˆλ‹€ [2]. * **동적 μ• λ‹ˆλ©”μ΄μ…˜ ν”„λ ˆμž„ μ œμ–΄:** 카메라와 각 μΈμŠ€ν„΄μŠ€ κ°„μ˜ 거리λ₯Ό κ³„μ‚°ν•˜μ—¬ μ• λ‹ˆλ©”μ΄μ…˜ FPSλ₯Ό 0μ—μ„œ 60 μ‚¬μ΄λ‘œ κ°œλ³„ μ„€μ •ν•¨μœΌλ‘œμ¨ λΆˆν•„μš”ν•œ 연산을 μ€„μž…λ‹ˆλ‹€ [2]. * **LOD(Level of Detail)의 적극적 ν™œμš©:** `meshoptimizer`λ₯Ό ν™œμš©ν•΄ 5λ‹¨κ³„μ˜ κΈ°ν•˜ν•™μ  LODλ₯Ό μƒμ„±ν–ˆμŠ΅λ‹ˆλ‹€ [2]. 거리가 λ¨Ό μΈμŠ€ν„΄μŠ€μ— λŒ€ν•΄μ„œλŠ” 일뢀 λΌˆλŒ€ 계산을 μƒλž΅ν•˜λ©°, 각 LODλ§ˆλ‹€ 1개의 λ“œλ‘œμš° 콜([[Draw Call|Draw Call]])만 λ°œμƒμ‹œμΌœ 총 5개의 λ“œλ‘œμš° 콜만으둜 λ Œλ”λ§μ„ μ™„λ£Œν•©λ‹ˆλ‹€ [2, 3]. λ˜ν•œ, 그림자(Shadows) λ Œλ”λ§ μ‹œμ—λ„ LODλ₯Ό 관리할 수 μžˆλ„λ‘ κ΅¬μ„±λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€ [4]. * **κ°œλ³„ μ• λ‹ˆλ©”μ΄μ…˜ 지원:** 단일 μΈμŠ€ν„΄μŠ€λ“€μ˜ λ³΅μ œλ³Έλ“€μ΄ λͺ¨λ‘ λ™μΌν•œ μ• λ‹ˆλ©”μ΄μ…˜κ³Ό 포즈λ₯Ό κ³΅μœ ν•˜λŠ” 것이 μ•„λ‹ˆλΌ, 각 μΈμŠ€ν„΄μŠ€λ§ˆλ‹€ μ„œλ‘œ λ‹€λ₯Έ μ• λ‹ˆλ©”μ΄μ…˜μ„ κ°€μ§‘λ‹ˆλ‹€ [5, 6]. 이 데λͺ¨μ—μ„œλŠ” ν•˜λ‚˜μ˜ μ• λ‹ˆλ©”μ΄μ…˜ λ―Ήμ„œ(Mixer)λ₯Ό μ‚¬μš©ν–ˆμ§€λ§Œ, ν•„μš”μ— 따라 μΈμŠ€ν„΄μŠ€λ³„λ‘œ λ―Ήμ„œλ₯Ό 생성할 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€ [6]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & Updates) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** AI λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** [[InstancedMesh2|InstancedMesh2]], [[Frustum Culling|Frustum Culling]], [[Level of Detail (LOD)|Level of Detail (LOD)]], Skinned Mesh, [[Draw Call|Draw Call]] - **Projects/Contexts:** three.js - **Contradictions/Notes:** λ³Έ ν…μŠ€μ²˜(Bone texture)의 λΆ€λΆ„ μ—…λ°μ΄νŠΈ(Partial texture updates) κΈ°λŠ₯은 PC ν™˜κ²½μ—μ„œ 60FPSλ₯Ό λ‹¬μ„±ν•˜λŠ” 데 도움이 될 수 μžˆλŠ” μ΅œμ ν™” κΈ°λ²•μ΄μ§€λ§Œ, λͺ¨λ°”일 기기와 νŒŒμ΄μ–΄ν­μŠ€(Mozilla Firefox) λΈŒλΌμš°μ €μ—μ„œλŠ” 이쀑 버퍼링(Double buffering) λΆ€μž¬λ‘œ 인해 였히렀 속도가 λŠλ €μ§€λŠ” λ¬Έμ œκ°€ μžˆμ–΄ λ³Έ 데λͺ¨μ—μ„œλŠ” λΉ„ν™œμ„±ν™”λœ μƒνƒœλ‘œ μ œκ³΅λ˜μ—ˆμŠ΅λ‹ˆλ‹€ [2, 7]. --- *Last updated: 2026-04-19* --- ## πŸ€– LLM ν™œμš© 힌트 (How to Use This Knowledge) **μ–Έμ œ 이 지식을 μ“°λŠ”κ°€:** - *(TODO)* **μ–Έμ œ μ“°λ©΄ μ•ˆ λ˜λŠ”κ°€:** - *(TODO)* ## πŸ§ͺ 검증 μƒνƒœ (Validation) - **정보 μƒνƒœ:** needs_review - **좜처 신뒰도:** A - **κ²€ν†  이유:** *(P-Reinforce Phase 1 μžλ™ μ •κ·œν™”. λ³Έλ¬Έ 검증 ν•„μš”.)* ## 🧬 쀑볡 검사 (Duplicate Check) - **κΈ°μ‘΄ μœ μ‚¬ λ¬Έμ„œ:** *(TODO: μΈλ±μ„œ ν΄λŸ¬μŠ€ν„° 리포트 μ°Έμ‘°)* - **처리 방식:** UPDATE (μžλ™ μ •κ·œν™”) - **처리 이유:** Phase 1 μ •κ·œν™” β€” μ˜› ν…œν”Œλ¦Ώ/λˆ„λ½ ν•„λ“œ 보강. ## πŸ•“ λ³€κ²½ 이λ ₯ (Changelog) | λ‚ μ§œ | λ³€κ²½ λ‚΄μš© | 처리 방식 | 신뒰도 | |------|-----------|-----------|--------| | 2026-05-08 | P-Reinforce Phase 1 μ •κ·œν™” (frontmatter + 헀더 ν‘œμ€€ν™”) | UPDATE | A | ## πŸ’» μ½”λ“œ νŒ¨ν„΄ (Code Patterns) **νŒ¨ν„΄ 1:** *(TODO: 이 ν”„λ‘œμ νŠΈ μ»¨λ²€μ…˜ λ°˜μ˜ν•œ ꡬ쑰 μŠ€μΌˆλ ˆν†€)* ```text # TODO ``` ## πŸ€” μ˜μ‚¬κ²°μ • κΈ°μ€€ (Decision Criteria) **선택 Aλ₯Ό 써야 ν•  λ•Œ:** - *(TODO)* **선택 Bλ₯Ό 써야 ν•  λ•Œ:** - *(TODO)* **κΈ°λ³Έκ°’:** > *(TODO)* ## ❌ μ•ˆν‹°νŒ¨ν„΄ (Anti-Patterns) - **[μ•ˆν‹°νŒ¨ν„΄]:** *(TODO: 무엇을 ν•˜λ©΄ μ•ˆ λ˜λŠ”κ°€ + 이유 + λŒ€μ‹  무엇을)*