--- id: wiki-2026-0508-buffergeometry title: BufferGeometry category: 10_Wiki/Topics status: needs_review canonical_id: self aliases: [P-Reinforce-AUTO-2887C6] 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 - BufferGeometry" inferred_by: Claude Opus 4.7 (auto-normalize 2026-05-08) tech_stack: language: unspecified framework: unspecified --- # [[BufferGeometry|BufferGeometry]] ## ๐Ÿ“Œ ํ•œ ์ค„ ํ†ต์ฐฐ (The Karpathy Summary) > BufferGeometry๋Š” Three.js์˜ ํ•ต์‹ฌ 3D ๊ธฐํ•˜ํ•™ ๊ตฌ์กฐ๋ฅผ ์ •์˜ํ•˜๋Š” ๊ฐ์ฒด์ด๋‹ค [1]. [[InstancedMesh|InstancedMesh]] ๊ธฐ์ˆ ์—์„œ ์ˆ˜๋งŽ์€ ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ณตํ†ต์œผ๋กœ ๊ณต์œ ํ•˜๋Š” ๊ธฐํ•˜ํ•™์  ๋ฐ์ดํ„ฐ๋กœ ์‚ฌ์šฉ๋œ๋‹ค [2, 3]. ๋˜ํ•œ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ๋ฅผ ๋‹จ์ผ BufferGeometry๋กœ ๋ณ‘ํ•ฉํ•˜์—ฌ ๋ Œ๋”๋ง ๊ณผ์ •์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋“œ๋กœ์šฐ ์ฝœ([[Draw Call|Draw Call]])์„ ์ตœ์†Œํ™”ํ•˜๋Š” ์„ฑ๋Šฅ ์ตœ์ ํ™”์˜ ํ•ต์‹ฌ ๋‹จ์œ„๋กœ๋„ ํ™œ์šฉ๋œ๋‹ค [4, 5]. ## ๐Ÿ“– ๊ตฌ์กฐํ™”๋œ ์ง€์‹ (Synthesized Content) * **InstancedMesh์˜ ๊ธฐ๋ณธ ๋ฐ์ดํ„ฐ ๋ ˆ์ด์–ด:** InstancedMesh ๊ตฌ์กฐ์—์„œ BufferGeometry๋Š” ๋ชจ๋“  ๊ฐœ๋ณ„ ์ธ์Šคํ„ด์Šค๊ฐ€ ๊ณตํ†ต์œผ๋กœ ๊ณต์œ ํ•˜๋Š” ๊ธฐํ•˜ํ•™์  ์ •์˜๋ฅผ ๋‹ด๋‹นํ•˜๋Š” ์ฃผ์š” ๋ฐ์ดํ„ฐ ๋ ˆ์ด์–ด์ด๋‹ค [2]. ๋‹ค๋งŒ, ํ•˜๋‚˜์˜ InstancedMesh ์ธ์Šคํ„ด์Šค๋Š” ์˜ค์ง ํ•˜๋‚˜์˜ BufferGeometry๋งŒ์„ ์ฐธ์กฐํ•  ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ธฐํ•˜ํ•™์  ๋‹จ์ผ์„ฑ์˜ ์ œ์•ฝ์ด ์กด์žฌํ•œ๋‹ค [6]. * **์ง€์˜ค๋ฉ”ํŠธ๋ฆฌ ๋ณ‘ํ•ฉ(Merging)์„ ํ†ตํ•œ ์ตœ์ ํ™”:** ์ •์ ์ธ ํ™˜๊ฒฝ์ด๋‚˜ ์—ฌ๋Ÿฌ ๊ฐœ์˜ ๊ฐ์ฒด๋“ค์„ ๋ Œ๋”๋งํ•  ๋•Œ, `BufferGeometryUtils.mergeBufferGeometries()` ๋ฉ”์„œ๋“œ๋ฅผ ์‚ฌ์šฉํ•˜์—ฌ ์„œ๋กœ ๋‹ค๋ฅธ ๊ธฐํ•˜ํ•™์  ๋ฐ์ดํ„ฐ๋ฅผ ๋‹จ์ผ BufferGeometry๋กœ ๋ณ‘ํ•ฉํ•  ์ˆ˜ ์žˆ๋‹ค [5, 7, 8]. ์ด๋ฅผ ํ†ตํ•ด ์—ฌ๋Ÿฌ ๊ฐ์ฒด๋ฅผ ๋‹จ ํ•œ ๋ฒˆ์˜ ๋“œ๋กœ์šฐ ์ฝœ๋กœ ๋ Œ๋”๋งํ•จ์œผ๋กœ์จ CPU ์˜ค๋ฒ„ํ—ค๋“œ๋ฅผ ํš๊ธฐ์ ์œผ๋กœ ๋‚ฎ์ถœ ์ˆ˜ ์žˆ๋‹ค [4]. * **๋ฉ”๋ชจ๋ฆฌ ์ง‘์•ฝ์„ฑ ๋ฐ ์ปฌ๋ง(Culling) ํšจ์œจ์˜ ํ•œ๊ณ„:** ์—ฌ๋Ÿฌ ๊ฐ์ฒด๋ฅผ ํ•˜๋‚˜์˜ BufferGeometry๋กœ ๋ฌถ๋Š” ๋ฐฉ์‹์€ ๋“œ๋กœ์šฐ ์ฝœ์„ ์ค„์—ฌ์ฃผ์ง€๋งŒ, ๊ฐ์ฒด๋ฅผ ๋ณต์ œํ•  ๋•Œ๋งˆ๋‹ค RAM ์‚ฌ์šฉ๋Ÿ‰์ด ์ •๋น„๋ก€๋กœ ์ฆ๊ฐ€ํ•˜๋Š” ๋ฉ”๋ชจ๋ฆฌ ์ง‘์•ฝ์ ์ธ ํŠน์„ฑ์„ ๋ค๋‹ค [4]. ๋”์šฑ์ด ๋ณ‘ํ•ฉ๋œ ๋ฉ”์‰ฌ ์ „์ฒด๊ฐ€ ํ•˜๋‚˜์˜ ๋‹จ์ผ ๋ฐ”์šด๋”ฉ ๋ณผ๋ฅจ(Bounding Volume)์œผ๋กœ ์ทจ๊ธ‰๋˜๊ธฐ ๋•Œ๋ฌธ์—, ํ™”๋ฉด ๋ฐ–์˜ ๊ฐ์ฒด๋ฅผ ์ œ์™ธํ•˜๋Š” ์‹œ์•ผ ์ ˆ๋‘์ฒด ์ปฌ๋ง([[Frustum Culling|Frustum Culling]])์˜ ์ •๋ฐ€๋„๊ฐ€ ๋–จ์–ด์ง€๋Š” ํ•œ๊ณ„๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค [5]. * **๊ฐœ๋ณ„ ํ•ญ๋ชฉ์˜ ์‹๋ณ„ ๋ฐ ์ ‘๊ทผ:** ์—ฌ๋Ÿฌ ๊ฐ์ฒด๋ฅผ ๊ฑฐ๋Œ€ํ•œ BufferGeometry ํ•˜๋‚˜๋กœ ๋ณ‘ํ•ฉํ•œ ํ›„ ํŠน์ • ๊ฐœ๋ณ„ ์š”์†Œ๋ฅผ ์„ ํƒํ•˜๊ฑฐ๋‚˜ ์ˆ˜์ •ํ•˜๋Š” ๊ฒƒ์€ ๊นŒ๋‹ค๋กญ์ง€๋งŒ, ๋ฒ„ํผ ๋‚ด ๊ฐ ๊ฐ์ฒด์˜ ์œ„์น˜(Position) ๋ฐ์ดํ„ฐ๋ฅผ ์ €์žฅํ•˜๋Š” ๋งคํ•‘(Map) ๊ตฌ์กฐ๋ฅผ ๊ตฌ์ถ•ํ•˜์—ฌ ๊ฐœ๋ณ„ ํ•ญ๋ชฉ์„ ํšจ์œจ์ ์œผ๋กœ ์กฐํšŒํ•˜๊ณ  ์ œ์–ดํ•  ์ˆ˜ ์žˆ๋‹ค [4]. ## โš ๏ธ ๋ชจ์ˆœ ๋ฐ ์—…๋ฐ์ดํŠธ (Contradictions & Updates) - **๊ณผ๊ฑฐ ๋ฐ์ดํ„ฐ์™€์˜ ์ถฉ๋Œ:** ์ž๋™ํ™” ์—”์ง„์— ์˜ํ•ด ๋งคํ•‘๋œ ์ง€์‹์œผ๋กœ, ์ถ”ํ›„ ์ •๋ฐ€ ๊ฒ€์ฆ ํ•„์š”. - **์ •์ฑ… ๋ณ€ํ™”:** Graphics & Performance ๋ถ„์•ผ์˜ ์ž๋™ ์ž์‚ฐํ™” ์ˆ˜ํ–‰. ## ๐Ÿ”— ์ง€์‹ ์—ฐ๊ฒฐ (Graph) - **Related Topics:** [[InstancedMesh|InstancedMesh]], [[Draw Call|Draw Call]], BufferGeometryUtils - **Projects/Contexts:** Three.js, IFC.js Fragment - **Contradictions/Notes:** ์†Œ์Šค ๋ฌธํ—Œ๋“ค์€ ์„ฑ๋Šฅ ๊ฐœ์„ ์„ ์œ„ํ•ด ๊ฐ์ฒด๋“ค์„ ๋‹จ์ผ BufferGeometry๋กœ ๋ณ‘ํ•ฉํ•  ๊ฒƒ์„ ๊ถŒ์žฅํ•˜๋ฉด์„œ๋„, ์ด ๋ฐฉ์‹์ด ๋“œ๋กœ์šฐ ์ฝœ์„ ์ตœ์†Œํ™”ํ•˜๋Š” ๋Œ€์‹  RAM ์†Œ๋ชจ๋Ÿ‰์„ ๋†’์ด๊ณ  ์‹œ์•ผ ์ ˆ๋‘์ฒด ์ปฌ๋ง์˜ ํšจ์œจ์„ ์ €ํ•˜์‹œํ‚ค๋Š” ํŠธ๋ ˆ์ด๋“œ์˜คํ”„(Trade-off)๋ฅผ ์œ ๋ฐœํ•œ๋‹ค๊ณ  ๊ฒฝ๊ณ ํ•œ๋‹ค [4, 5]. --- *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: ๋ฌด์—‡์„ ํ•˜๋ฉด ์•ˆ ๋˜๋Š”๊ฐ€ + ์ด์œ  + ๋Œ€์‹  ๋ฌด์—‡์„)*