3D 게임 세계의 배율을 어떻게 선택합니까?


9

물리 시뮬레이션으로 3D 탱크 게임 프로토 타입을 만들고 있는데 C ++을 사용하고 있습니다. 내가 내려야 할 결정 중 하나는 현실과 관련한 게임 세계의 규모입니다. 예를 들어 게임 내 측정 단위 1 개를 실제로 1 미터에 해당하는 것으로 간주 할 수 있습니다. 직관적 인 느낌이지만 뭔가 빠진 것 같습니다.

다음을 잠재적 인 문제로 생각할 수 있습니다.

  1. 3D 모델링 프로그램 호환성. (?)
  2. 수치 정확도. (이 문제가 있습니까?) 특히 대규모에서 Battlefield와 같은 게임에 거대한 맵이있는 방법 : 부동 소수점 표현이 더 큰 정밀도를 잃는 경향이 있기 때문에 실제 규모로 1 : 1 매핑을 사용하는 경우 수치 정확도를 잃지 않는 방법 숫자 (예 : 레이 캐스팅, 물리 시뮬레이션)?
  3. 게임 플레이. 나는 -9.8 m/s^2중력 과 같은 거의 실제 값을 사용하면서 유닛의 움직임이 느리거나 빠르게 느껴지는 것을 원하지 않습니다 . (이것은 주관적 일 수 있습니다.)
  4. 수입 자산의 규모를 확대 / 축소해도됩니까, 아니면 원래 규모의 세계에 가장 적합합니까?
  5. 렌더링 성능. 정점이 같은 큰 메쉬는 렌더링 속도가 느립니까?

이 질문을 여러 질문으로 나눌 지 궁금합니다.

답변:


3

일반적으로 모든 작업을 수행해야합니다.

  1. 실제 물체가 있기 때문에 규모와 일치하는 것이 합리적입니다 (3D 모델링 앱에는 일반적으로 측정 단위 설정, 미터, 발 등이 있습니다). 일단 탱크에서 나무와 다른 풍경 물체로 이동하면 아마도 필요할 것입니다. 게임 스타일에 맞게 사용자 정의 크기를 조정하십시오 (따라서 트리를 모델링하고 게임 편집기에서 크기를 조정하여 멋지게 보이도록 할 수 있습니다. 여러 번 동일한 트리를 사용하지만 다른 스케일로 다양성을 추가합니다).

  2. 카메라를 월드 원점에서 멀리 떨어 뜨리지 말고 월드 원점 근처에있는 카메라 주위로 월드를 이동하십시오 . 이렇게하면 GPU / 물리가 정밀도가 좋지 않은 값을 정확하게 비교해야 할 때 발생하는 많은 정밀 문제를 피할 수 있습니다. 탱크와 카메라를 원점에서 10km 이동하면 정밀도는 float32를 사용하는 밀리미터 단위이며 변환 된 모델 간의 Z- 파이팅과 유사한 효과를 유발할 수 있습니다.

  3. 게임을 기분 좋게 만들려면 전역 상수를 조정해야합니다. 지루한 부분을 건너 뛰고 더 흥미로운 것들을 실제 세계에서 서로 멀리 떨어진 작은 4x4km 지역 (도시, 강, 산 등)에 포장하도록 세계 상대 규모를 변경하는 것과 같은 방법입니다.

  4. 크기가 더 좋아 보이면 크기를 조정하십시오. 그들이 그대로 맞는다면-유지하십시오. 게임과 영화는 실명 복사 현실보다는 예술에 가깝습니다. 따라서 높이 2m로 모델링 된 멋진 나무를 발견했습니다. 물론 크기를 조정하고 다른 방법 (팔레트 조정, 텍스처 디테일 등)으로 게임을 조정할 수 있습니다.

  5. 화면에 같은 양의 픽셀을 표시하는 한 차이가 없는지 의심합니다.


8

여기 간다.

  1. 3D 모델링 프로그램에서는 단위 스케일을 선택할 수 있습니다. 영국식 또는 미터법으로 제한 될 수 있지만 숫자 일뿐입니다. 숫자를 쉽게 변환 / 크기 조정 / 조정할 수 있습니다. 정말 당신이 아니라 당신이 그 사용으로, 무엇을 사용 단위 시스템 중요하지 않습니다 하나 . 1 미터가 1 피트가되지 않도록 일관성을 유지하십시오.

    편집 : 책 : 게임 코딩 완료, 3 차 추가, 15 장, 페이지. 525, "미터, 피트, 큐빗 또는 켈리 캠?"

  2. 버텍스가 큰 게임은 몇 가지 일을 할 수 있습니다. 하나는 작은 청크로 분할 한 다음 해당 청크를 참조하는 데이터가 오프셋을 지정할 수 있습니다. Octrees를 사용하는 것과 비슷하지만, 보이지 않는 정점의 많은 부분을 렌더링하지 않도록 렌더링 최적화입니다. 또는 double은 1.79769e + 308을 저장할 수 있으며 이는 상당히 크지 만 자세한 숫자입니다. 플로트는 3.40282e + 038을 저장할 수 있으며 초라한 것도 아닙니다.

    편집 : 게임 코딩 완료, 3 차 추가, 13 장, 페이지. 410, "좌표 및 좌표계"(표 하단에 기둥 추가)

  3. 그런 다음 미터법을 사용하거나 자신의 단위 시스템으로 변환하려고 할 것입니다. 주목할 가치는, 아마도 그 가치를 약간 조정할 것입니다. 물론, 조정 된 가치는 물리적으로 정확하지 않습니다. 그러나 더 정확 하다고 느낄 수 있습니다 -9.3 m/s^2.

  4. 어느 쪽이든 있습니다 . 자산의 규모를 조정한다고 말하지만. 세계를 확장하면 중력, 속도 계산 및 기타 모든 것들을 살펴보고 변경해야합니다. 애셋을 Unity3D로 임포트 할 때는 일반적으로 임포트 설정에서 모델 스케일을 조정해야하므로 Unity 스케일링으로 가정합니다. 그 라인을 따라 더 많은 것을 원한다면.

  5. 크거나 작은 다각형 / 메시의 크기는 다각형의 수만큼 중요하지 않습니다. 모델이 차지하는 픽셀 수에 따라 약간의 성능 변화가있을 수 있다고 생각합니다. 그 외에도 10 또는 100의 숫자는 컴퓨터의 끝 부분을 변경하지 않습니다. 여전히 처리 할 비트 수는 동일하지만 다른 비트는 0입니다.

편집 : 다음 표는 32 비트 IEEE 부동 소수점 숫자를 가정합니다.

Game Coding Complete, Third Addition, Table 13.2, pg. 411
Smallest unit         Smallest Representable object  Upper Range    Description of
                      (As a textured polygon)                       largest area

100m                  A group of redwood trees       1.67x10^9      Earth/Moon System
1m                    A Human Being                  1.67x10^7      North and South America
1cm                   A coin                         1.67x10^6      California
1mm                   A flea                         1.67x10^5      San Francisco Bay Area
100 micrometer        A grain of pollen              1.67x10^4      Downtown San Francisco

Game-Coding Complete의이 모든 정보 등. Mike McShaffry에 의해 작성되었습니다. Black Jack에서 Thief : Deadly Shadows에 이르는 게임 관련 업계 전문가.


이 답변은 원래 질문에 실제로 많은 것을 추가하지 않으며 구체적인 예를 제공하지 않기 때문에이 답변에 만족하지 않습니다. 포인트 2와 관련하여 실제로 가시성 결정 또는 기하학 페이징이나 최대 부동 소수점 수에 대해 묻지 않았습니다. 그러나 실제로 의미하는 것은 부동 소수점이 큰 숫자에서 정확도를 잃기 때문에 큰 기하학으로 수치 부정확성을 처리하는 방법입니다. 매우 큰 숫자이지만 정밀도가 떨어집니다.
concept3d

그 편집 내용이 당신의 취향에 더 잘 맞습니까?
Wolfgang Skyler

글쎄, 그래도 특히이 물리 시뮬레이션 에서이 stackoverflow.com/questions/872544/precision-of-floating-point 에 대해 묻고 있었지만 별도의 질문이 필요하다고 생각합니다.
concept3d
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.