비디오 게임에서 3D 모델은 어떻게 생성됩니까?


15

게임에서 3D 모델은 어떻게 설계되고 표시됩니까? 모든 코드입니까? 종이에 그린 다음 3D 그래픽 소프트웨어에 그린 다음에 ... 무엇?

물론, 게임 프로그래머 는 코드 (Direct3D 또는 OpenGL 등)로 그려지 고자하는 모든 모양 (/ 객체)의 모든 정점을 정의하지는 않습니다. 따라서 게임 디자이너 는 Maya 또는 독점적 인 3D 그래픽 소프트웨어와 같은 것; 그들은 소프트웨어에서 모델을 "그리기"하고 어떤 형식 으로든 내 보낸 다음 프로그래머가 코드를 통해 모델을 파싱하고 객체 / 모델의 디코딩 / 파싱 된 원시 정점을 자동으로 입력합니까?

Google에 많은 정보를 얻었지만 전문적인 비디오 게임의 이러한 측면이 어떻게 작동하는지 설명 할 수있는 확실한 자료를 찾을 수 없었습니다.


2
예술 과정에 대한 매우 현실적인 문서는 다음과 같습니다. salvationprophecy.com/forum/viewtopic.php?f=4&t=413
Blue Wizard

흠 ... 이것은 대답하기에 너무 광범위하거나 건설적이지 않은 것으로 간주 될 수 있습니다. 그러나 동시에 gamedev에 접근하지 않고 학습을 시작하려는 사람을 요구하는 것이 합리적으로 들리므로 좋은 답변을 얻을 수 있습니다. 따라서 이것이 닫혀 야하는지 확실하지 않습니다.
Laurent Couvidou 2016 년

1
보통 모델을하는 사람들이라고 예술가 가 아닌 디자이너 : 캐릭터 아티스트, 환경 아티스트, 애니메이터 ... 게임 디자이너 더 많은 설계에 대한 실제 등 게임의 규칙
로랑 Couvidou

답변:


16

내가 작업 한 모든 게임에서 자산 생성 파이프 라인은 다음과 같습니다.

  1. 컨셉 아티스트 (레벨 / 배경 / 레벨 모델의 경우) 또는 캐릭터 아티스트 (모델의 경우)는 캐릭터 / 레벨 등의 스케치를 생성합니다. 일반적으로 크리에이티브 디렉터 / 리드 아트에는 여러 가지 옵션이 제공되어 어느 것이 더 좋을지 결정합니다.
  2. 승인 된 컨셉 / 캐릭터 아트는 모델러에게 참고 용으로 제공됩니다. 때로는 예술가가 추가 프로파일 / 프론트를 수행하여 모델링 프로세스에 대한 깔끔한 프레임 또는 참조를 제공합니다. 컨셉 아트가 3d max / maya / etc 내에 직접적인 참조로 붙어있는 많은 모델러를 보았습니다.
  3. 모델러는 일반적으로 런타임에 올바른 쉐이더 재질을 사용하여 모델의 기본 텍스처를 생성합니다. 셰이더는 게임에서 모델을 렌더링하는 데 사용되며 모델러 또는 지정된 텍스처 아티스트가 제공해야하는 특정 텍스처 / uv / etc 요구 사항이있을 수 있습니다.
  4. 레벨 자체가 "빌드"하기 위해 자산을 함께 모으는 것이 레벨 디자이너의 임무가 될 것입니다.

    전체 레벨이 단일 지오메트리 조각으로 구축되는 경우는 드 unusual니다. 대부분의 레벨은 조각 또는 섹션으로 구성됩니다. (예 : 육각형 세트 사용 악명 높은 "타일" http://www.gamasutra.com/php-bin/news_index.php?story=118581 와 스카이 림 (및 많은 다른 사람) 조각 함께 수준에 레고 스타일의 방법을 사용하는 HTTP : //www.gamasutra.com/blogs/JoelBurgess/20130501/191514/ )

    많은 게임들이 이전에 생성 된 자산을 인스턴스화하기 위해 "레벨 에디터"로 3D 모델러를 사용했지만, 일반적으로이 프로세스와 관련된 일부 레벨의 레벨 에디터가 있습니다.

  5. 이 모든 작업이 완료되면 자산은 일반적으로 툴체인에 의해 처리되어 3D Modeler 친화적 파일을 게임 준비 데이터로 변환하여 런타임에 직접로드 할 수 있습니다.

    툴체인 (원시 자산을 가져 와서 게임 준비 데이터로 변환하는 비트)은 종종 게임 개발에서 가장 복잡한 엔지니어링 중 일부입니다. 다양한 응용 프로그램과 대화하고 다양한 파일 형식을 이해하고 데이터를보다 효율적이고 즉시 사용 가능한 형식으로 변환하는 방법을 이해해야합니다. 툴체인은 일반적으로 조명 프리 패스, 정점 용접, LOD 생성 등을 수행합니다. 대규모 AAA 게임에 대한 전체 데이터 세트를 구축하는 데 종종 오랜 시간이 걸리며, 완전한 재 구축에는 종종 8 시간 이상이 소요됩니다. 따라서 툴체인에는 일반적으로 전체 스튜디오의 모든 PC에로드를 분산시키는 분산 처리가 포함됩니다.

    런타임은 게임 자체이다. PC 또는 콘솔에서 실행되는 실행 파일 런타임에는 Resource Manager라는 시스템이 있습니다. 게임 내 다른 시스템이 요청한 자산을로드하는 것은 리소스 관리자의 작업입니다.

    예 : 게임로드를 레벨에 알리면 레벨의 메타 데이터는 레벨을 표시하기 위해로드해야하는 자산 목록을 리소스 관리자에 제공합니다. 마찬가지로 각 자산에는로드해야하는 텍스처, 재질 또는 하위 자산의 목록이 포함됩니다.

  6. 모든 것이 실제로 메모리에로드되면 게임은 렌더러에 보이는 것을 전송 한 다음 실제로 화면에 물건을 그리는 데 사용되는 API와 상호 작용합니다.

프로그래머는 직접 정점 정보를 생성 할 수 있습니다. 이를 일반적으로 "즉시 모드 렌더링"이라고합니다. 매우 효율적이지 않으며 사전 생성 된 또는 셰이더 조작 된 정점 데이터를 사용할 수없는 상황에서만 사용됩니다. 예 : UI 렌더링, 전체 화면 쿼드.

일반적으로 화면에있는 객체의 99 %는 셰이더가 필요한 조작을 수행하여 "보존"모드로 렌더링 된 사전 생성 된 정점 정보입니다. 예 : 스킨 애니메이션


7

간단한 대답은 다음과 같습니다. Maya 또는 3DS Max와 같은 3D 그래픽 응용 프로그램에서 모두 수행합니다. 먼저 그들은 개념 예술 (종이에)을 만들고, 그들에 따르면 모델, 텍스처 (Photoshop 등)를 만듭니다. 간단한 애니메이션은 소프트웨어 전체에서 수행되며보다 복잡한 애니메이션은 모션 캡처를 통해 수행 된 다음 모델에 매핑됩니다. 애니메이션의 경우 일반적으로 스켈레톤 애니메이션을 사용합니다.

이 모든 데이터는 파일로 저장됩니다.

게임이 시작되면 이러한 모든 파일을 구문 분석하고 모델, 텍스처, 애니메이션을로드합니다. 그리고 필요할 때 표시합니다.


1
나는 어떤 프로그램이 당신이 이상한 보이지 않는 점프의 중간에 샷을 얻을 때 다음 그래서에 유동적으로 한 애니메이션 모프 할 필요가 있다고 생각
토마스

3
@Thomas, 블렌드 트리. 내 생각 엔 그러나 이는 게임 엔진의 확장으로 구축 된 "트위닝"시스템과 같습니다. 3D 모델 내에 반드시 생성 될 필요는 없습니다. 기본적으로 애니메이션 데이터를 가로 채고 마법의 힘으로 데이터를 보간합니다.
Sidar

네. 확실한. 모델을로드, 파싱 및 표현해야합니다. 또한 어떻게 든 화면에 그립니다. 따라서 확실히-애니메이션을 혼합해야합니다. 일반적으로 역 운동학도 사용하지만 더 구체적인 문제입니다.
zacharmarz 2016 년

2
블렌드 트리와 애니메이션 모핑 만 "트위닝"처럼 단순했다면. 이 특정 문제 영역을 처리하기 위해 여러 가지 고가의 고가의 미들웨어 솔루션이 있습니다.
Sean Middleditch 2016 년

4

프로그래머는 원하는 경우 각 정점을 개별적으로 정의 할 수 있습니다 . 물론 기본적인 큐브 데모를 만들지 않는 한 결코 그렇지 않습니다. 일반적으로 모델 파일에 저장된 내용은 프로그래머가 손쉽게 모델 드로잉 코드에 쉽게 연결할 수있는 정점 목록의 행을 따라 저장되는 것입니다. 그것보다 분명히 더 많은 것이 있지만, 기본적으로 모델 형식은 특정 모델을 그리는 방법에 대한 간접적 인 "지시"를 제공합니다.

많은 경우와 많은 모델 파일 형식의 경우 코딩 측면이 수행되었습니다. 도면 코드와 함께 텍스트 기반 모델 형식도 있으므로, 성숙 코더가 모델이 코드로 변환되는 방식을 쉽게 따라갈 수 있습니다.

나는 실제로이 코드를 작성 한 사람이 아니므로 내 설명에 대한 몇 가지 세부 정보가 꺼져있을 수 있습니다.


2

나는 함께 게임을하려고 노력하고 있습니다. 내가 사용하는 간단한 프로그램 목록을 제공 할 수 있습니다.

모델링 : 3D 코트, 모도

리깅 : 모도

텍스처 : 김프, 잉크 스케이프

게임 엔진 : 유니티

분명히 이것은 작은 응용 프로그램 목록이지만, 저에게는 응용 프로그램과 취미 개발자 및 개인 개발자에게 적당합니다.


2
-1 사용 된 응용 프로그램 목록을 제공한다고해서 프로세스가 설명되지는 않습니다. 이 질문은 그것이 관하여 특정 소프트웨어에 대한 아닙니다 어떻게 그들이 만든거야,하지 전적으로 무엇을 그들은로 만든 것입니다.
MichaelHouse
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.