그렇게하기 쉽습니다. Octtree를 사용하면 필요한 세부 수준에 도달 할 때까지 단순히 세상을 점차 작은 조각으로 나눕니다. 예를 들어 이것은 모래 알갱이의 크기 일 수 있습니다. 마인 크래프트가 극단으로 올라 갔다고 생각하십시오.
그러면 무엇을 렌더링합니까? 디테일이 충분히 작 으면 옥트 트리의 리프 노드 인 렌더링 블록을 고려할 수 있습니다. 다른 옵션으로는 구 또는 기하 기본형이 있습니다. 각 노드에 색상과 법선을 저장할 수 있으며 LOD를 줄이려면 합성 정보를 더 높은 수준의 트리에 저장할 수 있습니다.
많은 양의 데이터를 어떻게 관리 할 수 있습니까? 트리가 실제 데이터 구조 인 경우 텍스처 재사용과 같이 여러 개의 포인터가 동일한 하위 트리를 참조하도록 할 수 있지만 지오메트리도 포함됩니다. 비결은 모든 수준에서 가능한 한 많은 재사용을 얻는 것입니다. 예를 들어, 사면체 배열의 4 개의 옥탄트를 모든 레벨에서 동일한 자식 노드에 모두 연결하면 메모리를 거의 사용하지 않고 매우 큰 3D sierpinsky 프랙탈을 만들 수 있습니다. 실제 장면은 물론 훨씬 더 클 것입니다.
문제는 실제 애니메이션은 매 프레임마다 모든 데이터를 조작해야하기 때문에 정적 지오메트리에서만 작동한다는 것입니다. 그러나 특히 가변 LOD를 사용한 렌더링은 문제가되지 않습니다.
그런 것을 어떻게 렌더링합니까? 저는 레이트 레이싱 팬이며 GPU를 사용하거나 사용하지 않고 이러한 유형의 작업을 처리합니다.
이 모든 것은 물론 추측입니다. 당신이 말하는 사건에 대한 구체적인 정보가 없습니다. 그리고 지금 관련이 있지만 다른 것이 있습니다.
엄청난 양의 데이터 렌더링
편집 여기에 내가 한 것이 있지만, 상자를 더 분명하게 보이도록 의도적으로 법선을 변경했습니다.
복셀에있는 스탠포드 토끼
이 프레임 속도는 단일 코어 IIRC에있었습니다. 트리의 깊이를 두 배로 늘리면 일반적으로 프레임 속도가 절반으로 줄어드는 반면 여러 코어를 사용하면 확장 성이 좋습니다. 일반적으로 나는 옥트 트리에 프리미티브 (삼각형 등)를 유지하지만,이 경우에는 트리 자체의 리프 노드를 렌더링하기로 결정했습니다. 특정 방법을 중심으로 최적화하면 더 나은 성능을 얻을 수 있습니다.
ompf의 어딘가에는 정사각형을 제외하고는 정말 환상적인 복셀 차량이 있습니다. 지금 찾을 수없는 것 같습니다 ...