--- id: P-REINFORCE-AUTO-8A58BF category: "10_Wiki/๐Ÿ’ก Topics/Graphics & Performance" confidence_score: 0.90 tags: [auto-reinforced] last_reinforced: 2026-04-20 github_commit: "[P-Reinforce] Continuous Worker - IFCjs (Fragment)" --- # [[IFCjs (Fragment)|IFCjs (Fragment)]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > Fragment๋Š” ๋Œ€๊ทœ๋ชจ 3D ๊ธฐํ•˜ํ•™์  ํ™˜๊ฒฝ์„ ํšจ์œจ์ ์œผ๋กœ ๋ Œ๋”๋งํ•˜๊ธฐ ์œ„ํ•ด IFC.js ๊ฐœ๋ฐœ์ž๋“ค์ด ๊ณ ์•ˆํ•œ ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์ตœ์ ํ™” ์‹œ์Šคํ…œ์ด๋‹ค [1, 2]. ์ด ์‹œ์Šคํ…œ์€ ๋‹จ์ผ ์ธํ„ฐํŽ˜์ด์Šค ๋‚ด์—์„œ ๋กœ์šฐ ํด๋ฆฌ(low-poly) ๊ณ ์œ  ๊ฐ์ฒด๋ฅผ ์œ„ํ•œ ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ ๋ณ‘ํ•ฉ๊ณผ ํ•˜์ด ํด๋ฆฌ(high-poly) ๋ฐ˜๋ณต ๊ฐ์ฒด๋ฅผ ์œ„ํ•œ ์ธ์Šคํ„ด์‹ฑ์˜ ์žฅ์ ์„ ๊ฒฐํ•ฉํ•œ๋‹ค [2]. ์ด๋ฅผ ํ†ตํ•ด ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„์™€ ๋“œ๋กœ์šฐ ์ฝœ(Draw call) ํšŸ์ˆ˜ ๊ฐ„์˜ ์ตœ์ ์˜ ๊ท ํ˜•์„ ๋‹ฌ์„ฑํ•˜๋ฉด์„œ ๊ฐœ๋ณ„ ๊ฐ์ฒด์˜ ๋น ๋ฅธ ๊ฒ€์ƒ‰ ๋ฐ ์กฐ์ž‘ ๊ธฐ๋Šฅ์„ ์ œ๊ณตํ•˜๋Š” ๊ฒƒ์„ ๋ชฉํ‘œ๋กœ ํ•œ๋‹ค [1, 3]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) * **๊ฐœ๋ฐœ ๋ชฉ์  ๋ฐ ๋ฐฐ๊ฒฝ:** ๊ฑด๋ฌผ ๋ชจ๋ธ๊ณผ ๊ฐ™์ด ์ˆ˜์ฒœ ๊ฐœ์—์„œ ์ˆ˜๋ฐฑ๋งŒ ๊ฐœ์˜ ๊ฐ์ฒด๋กœ ๊ตฌ์„ฑ๋œ ๊ฑฐ๋Œ€ํ•œ ์”ฌ(scene)์„ ๋ Œ๋”๋งํ•  ๋•Œ, ๊ธฐ์กด์˜ ๋ชจ๋“  ๊ฐ์ฒด๋ฅผ `BufferGeometry`๋กœ ๋ณ‘ํ•ฉํ•˜๋Š” ๋ฐฉ์‹์€ ๋žจ(RAM) ๋ฉ”๋ชจ๋ฆฌ๋ฅผ ์ง€๋‚˜์น˜๊ฒŒ ๋งŽ์ด ์†Œ๋น„ํ•˜๋Š” ํ•œ๊ณ„๊ฐ€ ์žˆ์—ˆ๊ณ , `InstancedMesh`๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๋ฐฉ์‹์€ ์žฌ์งˆ(Material) ์ˆ˜๋งŒํผ ๋“œ๋กœ์šฐ ์ฝœ์ด ๋Š˜์–ด๋‚˜๋Š” ๋‹จ์ ์ด ์žˆ์—ˆ๋‹ค [4, 5]. Fragment๋Š” ์ด๋Ÿฌํ•œ ๋ฌธ์ œ๋ฅผ ํ•ด๊ฒฐํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ์™€ FPS ์ธก๋ฉด ๋ชจ๋‘์—์„œ ํšจ์œจ์„ฑ์„ ๋‹ฌ์„ฑํ•˜๊ณ , ๊ฐœ๋ณ„ ๊ฐ์ฒด๋ฅผ ๋น ๋ฅด๊ฒŒ ๊ฒ€์ƒ‰ํ•˜๊ณ  ํ•˜์ด๋ผ์ดํŠธํ•  ์ˆ˜ ์žˆ๋„๋ก ์„ค๊ณ„๋˜์—ˆ๋‹ค [1, 6]. * **ํ•˜์ด๋ธŒ๋ฆฌ๋“œ ์•„ํ‚คํ…์ฒ˜:** Fragment๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์ด ๊ฐ์ฒด์˜ ํŠน์„ฑ์— ๋”ฐ๋ผ ๋‘ ๊ฐ€์ง€ ์ตœ์ ํ™” ๋ฐฉ์‹์„ ํ˜ผํ•ฉํ•˜์—ฌ ์‚ฌ์šฉํ•œ๋‹ค. * **๋ณ‘ํ•ฉ (Merging):** ๋ฒฝ์ด๋‚˜ ๋ฐ”๋‹ฅ์ฒ˜๋Ÿผ ๊ณ ์œ ํ•˜๋ฉด์„œ ํด๋ฆฌ๊ณค ์ˆ˜๊ฐ€ ์ ์€(low-poly) ๊ฐ์ฒด๋“ค์€ ํ•˜๋‚˜ ๋˜๋Š” ์—ฌ๋Ÿฌ ๊ฐœ์˜ `BufferGeometry`๋กœ ๋ณ‘ํ•ฉํ•˜์—ฌ ๋“œ๋กœ์šฐ ์ฝœ์„ ์ตœ์†Œํ™”ํ•œ๋‹ค [2, 7]. * **์ธ์Šคํ„ด์‹ฑ (Instancing):** ๋ฌธ, ๊ฐ€๊ตฌ, ์ฐฝ๋ฌธ๊ณผ ๊ฐ™์ด ๋™์ผํ•œ ํ˜•ํƒœ๊ฐ€ ๋ฐ˜๋ณต๋˜๋ฉด์„œ ํด๋ฆฌ๊ณค ์ˆ˜๊ฐ€ ๋งŽ์€(high-poly) ๊ฐ์ฒด๋“ค์€ ๊ฐ๊ฐ `InstancedMesh`๋กœ ๊ตฌ์„ฑํ•˜์—ฌ ๋ฉ”๋ชจ๋ฆฌ ์†Œ๋น„๋ฅผ ๋Œ€ํญ ์ค„์ธ๋‹ค [2, 7]. * **๊ตฌ์กฐ์  ํŠน์ง• ๋ฐ ์ €์žฅ ๋ฐฉ์‹:** ๊ณตํ†ต๋œ Fragment ์ธํ„ฐํŽ˜์ด์Šค๋ฅผ ํ†ตํ•ด 1,000๊ฐœ์˜ ๋™์ผํ•œ ์˜์ž๊ฐ€ ํ•˜๋‚˜์˜ ์ธ์Šคํ„ด์Šคํ™”๋œ Fragment๊ฐ€ ๋  ์ˆ˜๋„ ์žˆ๊ณ , ํ”„๋กœ์ ํŠธ์˜ ๋ชจ๋“  ๋ฒฝ๋ฉด์ด ๋ณ‘ํ•ฉ๋œ ๋‹จ์ผ Fragment๊ฐ€ ๋  ์ˆ˜๋„ ์žˆ๋‹ค [6, 7]. ์˜์†์„ฑ(persistence) ์ˆ˜์ค€์—์„œ๋Š” ๊ฐ Fragment๋‹น ํ•˜๋‚˜์˜ GLB ํŒŒ์ผ์„ ์ €์žฅํ•˜๋Š” ๋ฐฉ์‹์„ ๊ณ ๋ คํ•˜์—ฌ ์„ค๊ณ„๋˜์—ˆ๋‹ค [7]. ๋ชจ๋“  Fragment๊ฐ€ ๋น„์Šทํ•œ ์ˆ˜์˜ ์ •์ (vertices)๊ณผ ๋“œ๋กœ์šฐ ์ฝœ์„ ๊ฐ€์ง€๋„๋ก ํ•˜์—ฌ ์‹œ์Šคํ…œ ๋ถ€ํ•˜์˜ ๊ท ํ˜•์„ ๋งž์ถ˜๋‹ค [3]. * **์„ฑ๋Šฅ ๋ฐ ๊ฒฐ๊ณผ:** ์ดˆ๊ธฐ ํ”„๋กœํ† ํƒ€์ž… ๊ตฌํ˜„ ๊ฒฐ๊ณผ, 1,000๊ฐœ์˜ ์˜์ž์™€ 4๊ฐœ์˜ ๋ฒฝ์œผ๋กœ ๊ตฌ์„ฑ๋œ ์”ฌ์„ ๋‹จ 3๋ฒˆ์˜ ๋“œ๋กœ์šฐ ์ฝœ(์„ ํƒ์šฉ ๋“œ๋กœ์šฐ ์ฝœ ์ œ์™ธ)๊ณผ 10MB ๋ฏธ๋งŒ์˜ ๋ฉ”๋ชจ๋ฆฌ๋งŒ์œผ๋กœ ๋ Œ๋”๋งํ•˜๋Š” ๋ฐ ์„ฑ๊ณตํ–ˆ๋‹ค [6]. ๋˜ํ•œ 100MB ์ด์ƒ์˜ ๋Œ€ํ˜• IFC ๋ชจ๋ธ์„ ๋ชจ๋ฐ”์ผ ๊ธฐ๊ธฐ์—์„œ๋„ Autodesk Forge์— ํ•„์ ํ•˜๋Š” ์†๋„๋กœ ๋น ๋ฅด๊ฒŒ ๋กœ๋“œํ•˜๋Š” ํ›Œ๋ฅญํ•œ ์„ฑ๋Šฅ์„ ๋ณด์—ฌ์ฃผ์—ˆ๋‹ค [8]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & RL Update) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Graphics & Performance ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[BufferGeometry|BufferGeometry]], [[InstancedMesh|InstancedMesh]], [[Draw Call|Draw Call]] - **Projects/Contexts:** [[IFC.js|IFC.js]], [[Three.js|Three.js]] - **Contradictions/Notes:** ์†Œ์Šค์— ๋”ฐ๋ฅด๋ฉด, Fragment์™€ ๊ฐ™์€ ์ž์ฒด์ ์ธ ์ตœ์ ํ™” ์‹œ์Šคํ…œ ๊ตฌ์ถ• ์™ธ์—๋„ ๋Œ€๊ทœ๋ชจ ํ™˜๊ฒฝ ์ตœ์ ํ™”๋ฅผ ์œ„ํ•ด ๋‹ค์ค‘ ๊ทธ๋ฆฌ๊ธฐ(Multidrawing), LOD(Level of Detail), ์˜คํด๋ฃจ์ „ ์ปฌ๋ง(Occlusion Culling) ๋“ฑ์˜ ์ถ”๊ฐ€์ ์ธ ๋ฐฉ๋ฒ•๋ก ๋„ ํ•จ๊ป˜ ๊ฒ€ํ† ๋˜์—ˆ๋‹ค [2]. --- *Last updated: 2026-04-19* - Raw Source: 00_Raw/2026-04-20/IFC.js (Fragment).md ---