--- id: P-REINFORCE-AUTO-EB3F3C category: "10_Wiki/πŸ’‘ Topics/AI" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - 20k skinned instances demo" --- # [[20k skinned instances demo|20k skinned instances demo]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > '20k skinned instances demo'λŠ” Three.js 기반의 μ˜€ν”ˆ μ†ŒμŠ€ 라이브러리인 InstancedMesh2λ₯Ό ν™œμš©ν•˜μ—¬ 20,000개의 κ°œλ³„μ μΈ μŠ€ν‚¨λ“œ μΈμŠ€ν„΄μŠ€(Skinned instances)λ₯Ό λ™μ‹œμ— λ Œλ”λ§ν•˜λŠ” μ„±λŠ₯ μ΅œμ ν™” 데λͺ¨μž…λ‹ˆλ‹€ [1, 2]. 이 데λͺ¨λŠ” λͺ¨λ°”일 κΈ°κΈ°μ—μ„œλ„ 3,000개의 μΈμŠ€ν„΄μŠ€λ₯Ό μ›ν™œν•˜κ²Œ ꡬ동할 수 μžˆλ„λ‘ μ„€κ³„λ˜μ—ˆμŠ΅λ‹ˆλ‹€ [2]. ν”„λŸ¬μŠ€ν…€ 컬링, 거리 기반 μ• λ‹ˆλ©”μ΄μ…˜ ν”„λ ˆμž„ 쑰절, 닀쀑 LOD(Level of Detail) 생성 λ“± λ‹€μ–‘ν•œ μ΅œμ ν™” 기법을 μ μš©ν•˜μ—¬ 단 5번의 λ“œλ‘œμš° 콜만으둜 λ Œλ”λ§μ„ μ²˜λ¦¬ν•˜λŠ” 것이 νŠΉμ§•μž…λ‹ˆλ‹€ [2, 3]. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) 이 데λͺ¨λŠ” μ œμž‘μž(agargaro)κ°€ κ°œλ°œν•œ `instancedMesh2` 라이브러리λ₯Ό 기반으둜 ν•˜λ©°, λŒ€κ·œλͺ¨ μŠ€ν‚¨λ“œ 메쉬λ₯Ό λ Œλ”λ§ν•˜κΈ° μœ„ν•΄ λ‹€μŒκ³Ό 같은 μ„ΈλΆ€ μ΅œμ ν™” κΈ°μˆ λ“€μ„ μ‚¬μš©ν–ˆμŠ΅λ‹ˆλ‹€ [2]. * **ν”„λŸ¬μŠ€ν…€ 컬링 및 μ‹œμ•Ό 기반 μ—…λ°μ΄νŠΈ (Frustum Culling & View-based Updates):** 기본적인 ν”„λŸ¬μŠ€ν…€ 컬링을 μ μš©ν•˜μ—¬ 카메라 μ‹œμ•Ό(Frustum) 내에 μ‘΄μž¬ν•˜λŠ” μΈμŠ€ν„΄μŠ€λ“€μ— λŒ€ν•΄μ„œλ§Œ λΌˆλŒ€(Bones) 연산을 μ—…λ°μ΄νŠΈν•©λ‹ˆλ‹€ [2]. * **동적 μ• λ‹ˆλ©”μ΄μ…˜ ν”„λ ˆμž„ μ œμ–΄:** 카메라와 각 μΈμŠ€ν„΄μŠ€ κ°„μ˜ 거리λ₯Ό κ³„μ‚°ν•˜μ—¬ μ• λ‹ˆλ©”μ΄μ…˜ FPSλ₯Ό 0μ—μ„œ 60 μ‚¬μ΄λ‘œ κ°œλ³„ μ„€μ •ν•¨μœΌλ‘œμ¨ λΆˆν•„μš”ν•œ 연산을 μ€„μž…λ‹ˆλ‹€ [2]. * **LOD(Level of Detail)의 적극적 ν™œμš©:** `meshoptimizer`λ₯Ό ν™œμš©ν•΄ 5λ‹¨κ³„μ˜ κΈ°ν•˜ν•™μ  LODλ₯Ό μƒμ„±ν–ˆμŠ΅λ‹ˆλ‹€ [2]. 거리가 λ¨Ό μΈμŠ€ν„΄μŠ€μ— λŒ€ν•΄μ„œλŠ” 일뢀 λΌˆλŒ€ 계산을 μƒλž΅ν•˜λ©°, 각 LODλ§ˆλ‹€ 1개의 λ“œλ‘œμš° 콜(Draw Call)만 λ°œμƒμ‹œμΌœ 총 5개의 λ“œλ‘œμš° 콜만으둜 λ Œλ”λ§μ„ μ™„λ£Œν•©λ‹ˆλ‹€ [2, 3]. λ˜ν•œ, 그림자(Shadows) λ Œλ”λ§ μ‹œμ—λ„ LODλ₯Ό 관리할 수 μžˆλ„λ‘ κ΅¬μ„±λ˜μ–΄ μžˆμŠ΅λ‹ˆλ‹€ [4]. * **κ°œλ³„ μ• λ‹ˆλ©”μ΄μ…˜ 지원:** 단일 μΈμŠ€ν„΄μŠ€λ“€μ˜ λ³΅μ œλ³Έλ“€μ΄ λͺ¨λ‘ λ™μΌν•œ μ• λ‹ˆλ©”μ΄μ…˜κ³Ό 포즈λ₯Ό κ³΅μœ ν•˜λŠ” 것이 μ•„λ‹ˆλΌ, 각 μΈμŠ€ν„΄μŠ€λ§ˆλ‹€ μ„œλ‘œ λ‹€λ₯Έ μ• λ‹ˆλ©”μ΄μ…˜μ„ κ°€μ§‘λ‹ˆλ‹€ [5, 6]. 이 데λͺ¨μ—μ„œλŠ” ν•˜λ‚˜μ˜ μ• λ‹ˆλ©”μ΄μ…˜ λ―Ήμ„œ(Mixer)λ₯Ό μ‚¬μš©ν–ˆμ§€λ§Œ, ν•„μš”μ— 따라 μΈμŠ€ν„΄μŠ€λ³„λ‘œ λ―Ήμ„œλ₯Ό 생성할 μˆ˜λ„ μžˆμŠ΅λ‹ˆλ‹€ [6]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** AI λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** [[InstancedMesh2|InstancedMesh2]], [[Frustum Culling|Frustum Culling]], [[Level of Detail (LOD)|Level of Detail (LOD)]], [[SkinnedMesh|Skinned Mesh]], [[Draw Call|Draw Call]] - **Projects/Contexts:** [[Threejs ᄉα…₯α†Όα„‚α…³α†Ό α„Žα…¬α„Œα…₯ᆨᄒα…ͺ|three.js]] - **Contradictions/Notes:** λ³Έ ν…μŠ€μ²˜(Bone texture)의 λΆ€λΆ„ μ—…λ°μ΄νŠΈ(Partial texture updates) κΈ°λŠ₯은 PC ν™˜κ²½μ—μ„œ 60FPSλ₯Ό λ‹¬μ„±ν•˜λŠ” 데 도움이 될 수 μžˆλŠ” μ΅œμ ν™” κΈ°λ²•μ΄μ§€λ§Œ, λͺ¨λ°”일 기기와 νŒŒμ΄μ–΄ν­μŠ€(Mozilla Firefox) λΈŒλΌμš°μ €μ—μ„œλŠ” 이쀑 버퍼링(Double buffering) λΆ€μž¬λ‘œ 인해 였히렀 속도가 λŠλ €μ§€λŠ” λ¬Έμ œκ°€ μžˆμ–΄ λ³Έ 데λͺ¨μ—μ„œλŠ” λΉ„ν™œμ„±ν™”λœ μƒνƒœλ‘œ μ œκ³΅λ˜μ—ˆμŠ΅λ‹ˆλ‹€ [2, 7]. --- *Last updated: 2026-04-19* - Raw Source: 00_Raw/2026-04-20/20k skinned instances demo.md ---