LOD (Level of Detail)는 서로 다른 디스플레이 스케일로 객체를 관리하는 것을 의미하며, 두 부분으로 나눌 수 있습니다. 그러나 그중 하나를 사용할 수 있으며 대부분의 경우 충분합니다.
크기 (표시 배율)에 따라 레이어 (동일한 유형의 객체 그룹)를 표시하거나 숨 깁니다.
일반화 (다각형을 단순화하는 알고리즘)라고하는 대수 지오 메리 기반 방법. 다음 그림을보십시오
다각형 메쉬를 일반화 (간체 화)하는 가장 유명하고 효율적인 방법은 Descartes-Euler polyhedron theorem (수식 4.5 책을 참조하면 유감 입니다)으로 알려져 있으며 대부분의 공간 데이터베이스에서 사용됩니다 예를 들어 PostgreSQL의 PostGIS 모듈. 단순히 다각형의 작은면을 제거하고 매우 둥근면을 만듭니다. (사진 위)
게임에서 LOD를 구현하려면 확대 / 축소 작업 중에 맵의 규모 (장면)를 저장하고 관리해야합니다. 스케일은 0에서 무한대로 변경되며이를 다음과 같이 특정 수의 범위로 나눠야합니다.
- 1 / zero = 무한대 1/50
- 1/50에서 1/100
- 1/100에서 1/1000
- 1/1000 ~ 1 / 무한대 = 0
그런 다음 위의 각 범위에서 어떤 유형의 객체 (레이어)가 보이거나 보이지 않아야하는지 정의해야합니다. 예를 들어, 사용자가 네 번째 범위에있을 때 소화전 밸브와 같은 작은 유형의 물체는 그 규모로 매우 작고 식별 할 수 없으므로 표시하지 않아야합니다. 화면.
따라서 사용자가 확대 및 축소를 사용하여 확대율을 변경하면 위의 한계를 한 범위에서 다른 범위로 이동하고 게임은 이러한 표시 배율을 사용하여 장면에 객체를 표시하거나 숨겨서 세부 수준을 관리합니다. 이렇게하면 축소 작업 중에 객체가 갑자기 사라지는 별도의 솔루션을 만들 수 있지만 디스플레이 스케일과 확대 범위를 신중하게 정의하면 사용자는 아무 느낌도 느끼지 않습니다.
위의 4 가지 범위 그룹은 예일 뿐이며 시행 착오를 통해 자신의 사례에 가장 적합한 것을 찾아야합니다. 이에 대한 규칙은 없습니다.
때때로 게임은 즉시 자신의 LOD 방법 인 지하철 서퍼를 사용하여 멀리 떨어진 건물을 보여주기 위해 텍스처 사각형이없는 작은 것을 보여줍니다. 갑자기 가까워지면 텍스처가 생겨 게이머가 느끼게됩니다. 매우 중요한 프로젝션 시스템에 대해 이야기하지 않았으며 어떤 종류의 게임을 만들고 있는지에 대해서도 이야기하지 않았습니다.
그러나 openGl을 사용하여 전체 3D 게임을 구현하고 있으며 메쉬를 그래픽 하드웨어로 전송하기 전에 일부 메쉬를 필터링한다고 가정하면 버퍼 객체 및 정점 배열 (VBO, VAO)의 바인딩 / 바인딩 작업을 줄이는 데 도움이됩니다. OpenGl 다루기.
레이어 관리 만 사용하거나 Euler의 일반화 구현
대부분의 경우 일반화 알고리즘을 구현할 필요가 없으며 객체 필터링이 작동하기 만하면 필요한 효율성 (갱신 률)을 얻을 수 있지만 경우에 따라 완전히 달라집니다. 다각형의 작은 면만 제거하는 쉬운 알고리즘이지만 크기와 상수의 곱인 임계 값을 정의해야하므로 더 큰면이 훨씬 더 넓은 관점에서 필터링됩니다.
레이어 조작을 잊고 Eulers 일반화 알고리즘 만 구현하면 미리 정의 된 임계 값에 대해 각면과 선을 확인하고 화면에서 식별하기에 충분히 큰 경우에만 표시하는 매우 깔끔하고 연속적인 방법을 제공합니다.
추신 : 배율은 1 / 스케일과 같은 부동 소수점 수> 0이며 스케일은 일반적으로 <1이므로 게임에서 실제 길이를 갖기 때문에 <1입니다.