34 lines
3.7 KiB
Markdown
34 lines
3.7 KiB
Markdown
---
|
|
id: P-REINFORCE-AUTO-979529
|
|
category: "10_Wiki/💡 Topics/Graphics & Performance"
|
|
confidence_score: 0.90
|
|
tags: [auto-reinforced]
|
|
last_reinforced: 2026-04-20
|
|
github_commit: "[P-Reinforce] Continuous Worker - React Three Fiber (R3F)"
|
|
---
|
|
|
|
# [[React Three Fiber (R3F)|React Three Fiber (R3F)]]
|
|
|
|
## 📌 한 줄 통찰 (The Karpathy Summary)
|
|
> React Three Fiber(R3F)는 Three.js에 React의 렌더링 패러다임과 멘탈 모델을 더해주는 라이브러리입니다 [1]. WebGPU와 같은 최신 렌더링 기술을 지원하며 비동기 `gl` prop 팩토리를 통해 원활하게 통합할 수 있어 건축 대시보드와 같은 환경에서 유용하게 사용됩니다 [2]. 하지만 React 특유의 상태 기반 렌더링 방식으로 인해 고유한 성능 문제(pitfalls)가 발생할 수 있으므로 렌더링과 메모리 관리에 세심한 주의가 필요합니다 [1].
|
|
|
|
## 📖 구조화된 지식 (Synthesized Content)
|
|
- **상태 관리 및 애니메이션 루프:** R3F에서 성능을 최적화하기 위한 핵심 규칙은 Three.js의 변이(mutation)를 React의 상태 변경(`setState`)이 아닌 `useFrame` 내부에서 처리하는 것입니다 [1]. 프레임 속도에 독립적인 움직임을 구현하려면 `delta` 값을 사용해야 하며, 가비지 컬렉션(GC)을 유발하는 객체 생성 작업은 절대 `useFrame` 내부에서 수행해서는 안 됩니다 [1, 3].
|
|
- **렌더링 횟수 제어:** 애니메이션이 없는 정적인 씬에서는 `frameloop="demand"` 옵션을 사용하여 매 프레임 렌더링되는 것을 방지함으로써 리소스(모바일의 경우 배터리)를 절약할 수 있습니다 [1]. 필요한 경우에만 렌더링을 갱신하려면 수동으로 `invalidate()` 함수를 호출해야 합니다 [1].
|
|
- **컴포넌트 최적화 및 자원 관리:** 불필요한 리렌더링을 방지하기 위해 비용이 많이 드는 컴포넌트는 `React.memo`로 감싸는 것이 좋습니다 [3]. 또한, 컴포넌트를 완전히 언마운트했다가 다시 마운트하면 버퍼가 재생성되고 셰이더가 다시 컴파일되는 비용이 발생하므로, 대신 가시성(visibility)을 토글하는 방식이 권장됩니다 [3]. React 컴포넌트가 언마운트될 때는 클린업(cleanup) 함수를 사용하여 메모리에 남은 GPU 자원을 폐기해야 합니다 [4].
|
|
- **에셋 로딩 및 생태계 활용:** R3F는 React Suspense와 원활하게 통합되어 렌더링 지연을 관리할 수 있으며 [5], `useGLTF.preload`를 통해 모델이 필요하기 전에 미리 로드할 수 있습니다 [3]. 복잡한 구현 없이 LOD(Level of Detail)를 적용하려면 Drei 라이브러리의 `<Detailed />` 컴포넌트를 사용하고 [3, 6], 드롭인(drop-in) 성능 모니터링을 위해서는 `r3f-perf`를 활용할 수 있습니다 [3]. 정적 씬의 런타임 라이트맵 베이킹에는 `@react-three/lightmap`을 사용할 수 있습니다 [7].
|
|
|
|
## ⚠️ 모순 및 업데이트 (Contradictions & RL Update)
|
|
- **과거 데이터와의 충돌:** 자동화 엔진에 의해 매핑된 지식으로, 추후 정밀 검증 필요.
|
|
- **정책 변화:** Graphics & Performance 분야의 자동 자산화 수행.
|
|
|
|
## 🔗 지식 연결 (Graph)
|
|
- **Related Topics:** [[Three.js|Three.js]], [[WebGPU|WebGPU]], Drei
|
|
- **Projects/Contexts:** React-based construction dashboards
|
|
- **Contradictions/Notes:** 소스 내에서 상충되는 주장은 없으나, R3F가 React 기반임에도 불구하고 렌더링 루프 최적화를 위해 React의 핵심 패턴 중 하나인 상태 변경(`setState`)을 `useFrame` 안에서 피하라고 경고하는 등 [1] 패러다임 간의 조율이 필요하다는 점을 강조합니다.
|
|
|
|
---
|
|
*Last updated: 2026-04-19*
|
|
- Raw Source: 00_Raw/2026-04-20/React Three Fiber (R3F).md
|
|
---
|