3D 게임 맵을 저장하고 처리하는 방법


9

저는 프로그래머이지만 아직 게임을 개발하지 않았습니다.

나는 다양한 3D 게임을 해왔고 항상 필드의지도가 어떻게 저장되고 렌더링되는지 궁금했습니다.

일부 가속 카드가 필요한 하드웨어라는 것을 알고 있지만 화면에서 한 번의 깜박임없이 뷰가 정확히 어떻게 변경되는지 알고 있습니다.

이를 이해하는 데 도움이되는 온라인 자료가 있습니까?

감사

답변:


9

일반적으로 세계는 많은 삼각형으로 구성되며지도는 이러한 삼각형의 목록과 각 정점의 세계 내 위치입니다. 그것들을 그리는 과정은 다음과 같습니다.

  • '카메라'의 위치를 ​​설정하십시오-당신이 세계에 서 있다면, 이것이 당신이 세계 위치에있는 곳입니다
  • 삼각형 정점을 '카메라 공간'으로 변환
  • 삼각형을 '카메라 공간'에서 '스크린 공간'으로 변환하십시오.이 지점은 영향 효과가 발생하는 곳입니다 (먼 거리는 작습니다). 이 시점에서 삼각형은 2D가됩니다.
  • 숨겨진 화면에 2D 삼각형을 그립니다.
  • 모든 삼각형이 그려지면 화면을 플레이어에게 보여줍니다.

마지막 단계는 일반적으로 모니터의 프레임 속도에 연결되므로 숨겨진 화면을 표시하는 프로세스는 V- 공백 간격 동안 수행됩니다. 음극선 튜브 모니터에서 파생 된 개념으로 음극 빔을 오른쪽에서 위쪽으로 이동할 수 있습니다. 좌측에서, 이것은 광선 튜브의 후면에있는 편향 코일의 전압을 신속하게 변화시킬 필요가 있었지만 실제로는 아니었다.

이것은 정말 간단한 방법입니다. 고성능을 얻으려면 숨겨진 표면 제거, 오 컬션, 가시적 세트 결정 등과 같은 것을 추가해야합니다. 무엇을 그릴 지 결정하는 데 관련된 많은 알고리즘이 있습니다.

또한 세상은 삼각형으로 구성되어 있지만 디스크에는 이런 식으로 저장되어 있지 않을 수도 있습니다. 화면에 그려지는 삼각형은 종종 높이 맵, 스플라인, 테셀레이션, 기하학적 프리미티브 (예 : 구, 상자 등)와 같은 고차 프리미티브로부터 런타임에 정의됩니다.

전용 하드웨어가 필요하지 않습니다. 많은 초기 3D 게임에서 소프트웨어로 모든 작업을 수행했습니다 (FPU가없는 8 비트 CPU에서도). 더 빠르고 쉽게 할 수 있습니다.

그런 간단한 질문입니다. 쉬운 대답이 없습니다.


0

이중 버퍼링으로 인해 화면에서 깜박임없이 뷰가 변경되고 백 버퍼의 모든 데이터를 처리 한 다음 처리가 완료되면 전면 버퍼에서 스왑합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.