--- id: P-REINFORCE-AUTO-659684 category: "10_Wiki/πŸ’‘ Topics/Programming & Language" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - IFCjs" --- # [[IFCjs|IFCjs]] ## πŸ“Œ ν•œ 쀄 톡찰 (The Karpathy Summary) > IFC.jsλŠ” λŒ€κ·œλͺ¨ κΈ°ν•˜ν•™μ  ν™˜κ²½μ΄λ‚˜ 건물 λͺ¨λΈμ„ 효율적으둜 μ‹œκ°ν™”ν•˜κΈ° μœ„ν•΄ 개발되고 μžˆλŠ” ν”„λ‘œμ νŠΈμž…λ‹ˆλ‹€ [1]. λ©”λͺ¨λ¦¬ μ†ŒλΉ„λ₯Ό 쀄이고 λ Œλ”λ§ 속도(FPS)λ₯Ό λ†’μ΄λ©΄μ„œλ„ μˆ˜λ§Žμ€ 객체 쀑 κ°œλ³„ 객체λ₯Ό λΉ λ₯΄κ²Œ κ²€μƒ‰ν•˜κ³  ꡬ성할 수 μžˆλŠ” λ Œλ”λ§ μ΅œμ ν™”λ₯Ό λͺ©ν‘œλ‘œ ν•©λ‹ˆλ‹€ [2]. 졜근 μ΅œμ ν™” μ•„ν‚€ν…μ²˜λ₯Ό 톡해 100MB μ΄μƒμ˜ λŒ€ν˜• λͺ¨λΈμ„ λͺ¨λ°”μΌμ—μ„œλ„ μ›ν™œν•˜κ²Œ λ‘œλ“œν•˜λŠ” μ„±λŠ₯을 λ‹¬μ„±ν–ˆμŠ΅λ‹ˆλ‹€ [3]. ## πŸ“– κ΅¬μ‘°ν™”λœ 지식 (Synthesized Content) - **λŒ€κ·œλͺ¨ λ Œλ”λ§ μ΅œμ ν™”μ˜ 과제:** λŒ€κ·œλͺ¨ 건물 λͺ¨λΈ μ‹œκ°ν™”μ—λŠ” μˆ˜μ²œμ—μ„œ 수백만 개의 객체가 ν¬ν•¨λ˜κΈ° λ•Œλ¬Έμ— λ©”λͺ¨λ¦¬μ™€ 속도(Draw call)의 μ΅œμ ν™”κ°€ ν•„μˆ˜μ μž…λ‹ˆλ‹€ [2]. - **κΈ°μ‘΄ λ°©μ‹μ˜ ν•œκ³„:** - λͺ¨λ“  객체λ₯Ό `BufferGeometry`둜 λ³‘ν•©ν•˜λŠ” 방식은 λ“œλ‘œμš° μ½œμ„ μ΅œμ†Œν™”ν•˜μ§€λ§Œ, 의자 2개λ₯Ό λ Œλ”λ§ν•  λ•Œ 의자 1κ°œλ³΄λ‹€ 두 배의 RAM을 μ°¨μ§€ν•  만큼 λ©”λͺ¨λ¦¬ μ†Œλͺ¨κ°€ μ‹¬ν•˜λ‹€λŠ” λ¬Έμ œκ°€ μžˆμŠ΅λ‹ˆλ‹€ [2, 4]. - λ°˜λŒ€λ‘œ `InstancedMesh`λ₯Ό μ‚¬μš©ν•˜λŠ” 방식은 λ©”λͺ¨λ¦¬λ₯Ό 적게 μ“°μ§€λ§Œ, 고유 객체와 재질의 수만큼 λ“œλ‘œμš° 콜이 κΈ‰μ¦ν•˜μ—¬ λŒ€ν˜• 건물 λͺ¨λΈμ— μ μš©ν•˜κΈ° μ–΄λ ΅μŠ΅λ‹ˆλ‹€ [4, 5]. - **ν•˜μ΄λΈŒλ¦¬λ“œ μ‹œμŠ€ν…œ 'Fragment' λ„μž…:** μ΄λŸ¬ν•œ ν•œκ³„λ₯Ό κ·Ήλ³΅ν•˜κΈ° μœ„ν•΄ IFC.js κ°œλ°œμ§„μ€ 두 κ°€μ§€ λ°©μ‹μ˜ μž₯점을 λ™μΌν•œ μΈν„°νŽ˜μ΄μŠ€ 뒀에 κ²°ν•©ν•œ 'Fragment'λΌλŠ” μ‹œμŠ€ν…œμ„ μ„€κ³„ν–ˆμŠ΅λ‹ˆλ‹€ [5]. - **객체별 λ Œλ”λ§ μ „λž΅:** λ²½μ΄λ‚˜ λ°”λ‹₯κ³Ό 같이 κ³ μœ ν•˜λ©΄μ„œλ„ 폴리곀 μˆ˜κ°€ 적은(Low-poly) 객체듀은 `BufferGeometry`둜 λ³‘ν•©ν•˜μ—¬ μ²˜λ¦¬ν•˜κ³ , κ°€κ΅¬λ‚˜ λ¬Έ, μ°½λ¬Έκ³Ό 같이 폴리곀 μˆ˜κ°€ 많고(High-poly) λ°˜λ³΅λ˜λŠ” 객체듀은 `InstancedMesh`λ₯Ό μƒμ„±ν•˜μ—¬ μ²˜λ¦¬ν•©λ‹ˆλ‹€ [6]. - **κ²°κ³Ό 및 μ„±κ³Ό:** 이 μ‹œμŠ€ν…œμ€ λͺ¨λ“  파편(Fragment)이 λΉ„μŠ·ν•œ 수의 정점과 λ“œλ‘œμš° μ½œμ„ 가지도둝 κ· ν˜•μ„ 맞좰 νš¨μœ¨μ„±μ„ κ·ΉλŒ€ν™”ν•˜λ©°, Autodesk Forge의 λ‘œλ”© 속도에 κ·Όμ ‘ν•˜λŠ” μˆ˜μ€€μ˜ μ„±λŠ₯을 μž…μ¦ν–ˆμŠ΅λ‹ˆλ‹€ [3, 6]. ## ⚠️ λͺ¨μˆœ 및 μ—…λ°μ΄νŠΈ (Contradictions & RL Update) - **κ³Όκ±° λ°μ΄ν„°μ™€μ˜ 좩돌:** μžλ™ν™” 엔진에 μ˜ν•΄ λ§€ν•‘λœ μ§€μ‹μœΌλ‘œ, μΆ”ν›„ μ •λ°€ 검증 ν•„μš”. - **μ •μ±… λ³€ν™”:** Programming & Language λΆ„μ•Όμ˜ μžλ™ μžμ‚°ν™” μˆ˜ν–‰. ## πŸ”— 지식 μ—°κ²° (Graph) - **Related Topics:** [[BufferGeometry|BufferGeometry]], [[InstancedMesh|InstancedMesh]], Fragment, [[Draw Call|Draw call]] - **Projects/Contexts:** λŒ€κ·œλͺ¨ κΈ°ν•˜ν•™μ  ν™˜κ²½ μ‹œκ°ν™”, Autodesk Forge - **Contradictions/Notes:** μ†ŒμŠ€μ— λͺ…μ‹œμ μΈ λͺ¨μˆœμ€ μ—†μœΌλ‚˜, λͺ¨λΈ λ Œλ”λ§μ— μžˆμ–΄ `BufferGeometry` 병합 방식(λ©”λͺ¨λ¦¬ μ†Œλͺ¨ 큼)κ³Ό `InstancedMesh` 방식(λ“œλ‘œμš° 콜 증가) κ°„μ˜ 근본적인 νŠΈλ ˆμ΄λ“œμ˜€ν”„(Trade-off)κ°€ μ‘΄μž¬ν•˜λ©°, IFC.jsλŠ” 이λ₯Ό ν•΄κ²°ν•˜κΈ° μœ„ν•΄ 두 방식을 ν˜Όν•©ν•œ ν•˜μ΄λΈŒλ¦¬λ“œ μ†”λ£¨μ…˜μ„ μ œμ•ˆν•©λ‹ˆλ‹€ [2, 4, 5]. --- *Last updated: 2026-04-19* - Raw Source: 00_Raw/2026-04-20/IFC.js.md ---