3D 그래픽 표현에 대한 표준 사양이 있습니까?


12

컴퓨터 그래픽에 관한 책을 읽고 있는데 어느 시점에서 .dat 파일로 만든 3D 모델을 보여줍니다.

다음은 .dat 파일 작성 규칙입니다.

  • 정점 위치 /면 목록으로 구성
  • 시계 반대 방향으로 작성
  • 면은 점 (.)으로 끝납니다.
  • 분수도 허용됩니다

이것이 표준인지 아닌지, 3D 객체를 정의하는 표준 방법이 무엇인지 알고 싶습니다.

또한 사양이있는 경우 누가 그것을 정의하고 어디서 찾을 수 있습니까?

답변:


8

파일 형식에 대해 이야기 할 때 3D 모델 / 형상과 관련된 일부 데이터를 유지하는 것에 대해 이야기합니다. 3D 지오메트리를 유지하기위한 파일 형식에는 보편적 인 표준이 없습니다. 다른 것보다 우세한 형식은 몇 가지뿐입니다.

이미지 파일 형식과 마찬가지로 PNG와 JPEG도 오늘날 가장 일반적인 형식이지만 응용 프로그램 간에는 하나 또는 다른 것을 사용하는 데 보편적 인 동의가 없습니다. 각 앱은 용도에 가장 잘 맞습니다.

3D 데이터를 저장하는 파일 형식에서도 마찬가지입니다. 각 3D 모델링 소프트웨어는 일반적으로 선호하는 형식 중 하나 또는 세트를 갖습니다. 대부분은 특정 버전의 도구에서만 작동하는 사용자 정의 형식을 정의합니다. 응용 프로그램의 내부 작업을 단순화하거나 파일을 빠르게로드하는 것에서부터 사용자를 특정 도구에 의도적으로 바인딩하는 것까지 여러 가지 이유로 발생할 수 있습니다.

.dat설명하는 이 형식은 책의 저자가 만든 사용자 지정 형식으로, 단순성을 염두에두고 설계되었을 것입니다. Wavefront OBJ 형식 과 비슷한 텍스트 파일 인 것 같습니다.이 형식은 정적 지오메트리를 저장하는 데 널리 사용되는 형식이지만, 지금은 조금 구식입니다. .OBJ형식은 .BMP3D 모델 형식 이라고 말할 수 있습니다.

다른 인기있는 3D 모델 형식은 다음과 같습니다.

그리고 많은 다른 사람들. 여기에 더 일반적인 설명이 있습니다 .

또한 처음에는 오프라인 저장소에서 3D 모델 또는 형상을 저장 / 지속하기위한 형식이라고 말했습니다. 그것들을 사용하는 응용 프로그램이 파일과 동일한 레이아웃을 사용하여 내부적으로 데이터를 메모리에 저장한다는 것을 의미하지는 않습니다. 일반적으로 이러한 종류의 데이터는 예를 들어 화면에 표시 될 때까지 파일에서로드 된 후 많은 처리를받습니다.


1
"일반적으로 이러한 종류의 데이터는 예를 들어 화면에 표시 될 때까지 파일에서로드 된 후 많은 처리를받습니다." 이미지는 원래 형식에 관계없이 화면에 표시되기 전에 픽셀 배열로 변환됩니다 . (하드웨어 압축에도 불구하고)
래칫 괴물

@ratchetfreak이지만 3D 형식의 모든 사용이 화면에 표시되는 것은 아닙니다.
joojaa

이진 형식 인 BMP는 OBJ에 적합하지 않습니다. XPM 은 텍스트 와 일치하는 것이 좋습니다 .
Ruslan

5

3D 모델에는 표준 형식이 없습니다. 일반적인 것들이 glampert의 답변에 나열되어 있으며이 SE 답변에서 더 많이 찾을 수 있습니다 .

자신의 목적을 위해 자신의 형식을 디자인하는 경우 (실제로는 매우 일반적인 일임) 모델 데이터 사용 방법을 살펴 보는 것이 좋습니다. 예를 들어, 렌더링에 중점을 둔 경우 그래픽 라이브러리가 기대하는 형식을 사용할 수 있습니다. 소프트웨어의로드 시간을 가능한 한 줄이려면 구문 분석 및 처리량을 줄이는 것이 도움이 될 수 있습니다. 엔진이 예상하는 형식으로 파일을 출력 할 수있는 간단한 유틸리티는 파일을 메모리에 매핑 한 다음 포인터를 그래픽 라이브러리에 전달할 수 있음을 의미합니다.

반면에 렌더링이 주요 관심사가 아니며 편집이 더 중요한 경우 날개 달린 가장자리 와 같은 편집에 더 적합한 형식을 고려할 수 있습니다 . 범용 모델 형식을 사용하면 프로젝트를 시작할 때 목적에 적합 할 수 있지만 궁극적으로 3D 모델로 수행 할 수있는 많은 작업이 있으며 각 형식에는 고유 한 이점과 단점이 있으므로 가장 적합한 형식을 선택할 수 있습니다 .


4

3D 모델의 스토리지를 정의하는 단일 표준은 없습니다. 그래픽스 API는 삼각형에만 관심이 있으며, 정점과 삼각형으로 구성되는 정점을 나타내는 인덱스로 정의됩니다.

많은 회사들이 다양한 기능과 목표를 가진 자체 모델 형식을 만들었습니다. 가장 간단한 방법 중 하나는 .obj (Wavefront Object) 형식입니다. 여기에는 정점 위치, 법선 및 텍스처 좌표 목록과 삼각형을 구성하는 인덱스 목록이 포함됩니다. 또한 질감, 확산 및 반사 색상과 같은 몇 가지 기본 속성을 가진 재질도 포함합니다.

Autodesk에서 사용하는 .fbx (FilmBox)와 같은 고급 모델 형식에는 모델링 소프트웨어에 필요한 추가 정보가 포함되어 있습니다. 여기에는 스키닝 등에 사용되는 뼈, 계층 구조 및 더 많은 정점 속성이 포함될 수 있습니다. 따라서 "표준"이 있지만 모든 프로그램에 다른 정보가 필요할 수 있으므로 실제로 통일되지는 않습니다. 그러나 많은 모델링 응용 프로그램으로 내보낼 수 있고 수입자를 작성 (찾기)하기 쉽기 때문에 wavefront는 매우 적합합니다.


3

다른 답변에서 언급했듯이 3D 데이터를 저장하기위한 여러 가지 경쟁 형식이 있습니다.

그러나이 질문이 제기 된 이후 하나의 특정 형식이 나타 났으며, 이는 "표준"에서 기대할 수있는 많은 특성을 가진 glTF 형식 입니다.


glTF는 Khronos Group (OpenGL 및 Vulkan의 조직)에서 발행 한 3D 표준으로서 Collada의 결함을 보완하는 것을 목표로합니다.

주요 장점은 다음과 같습니다.

  • JSON 기반이므로 네트워크를 통해 구문 분석, 직렬화, 읽기 및 보내기가 매우 쉽습니다.

  • 표준에는 모호함이나 중복성이 거의 없습니다 (일부 있음 *). 단위, 손잡이, 텍스처 좌표 표시 등이 모두 표준화되었습니다. 모든 것은 항상 인덱스 기반이므로 데이터 중복성이 없습니다. 이것은 수입자를 작성하는 것을 정말로 쉽게 만듭니다.

  • 문서는 매우 깨끗하고 철저합니다.

  • 데이터 레이아웃은 OpenGL / WebGL 워크 플로우를 기반으로합니다. 즉, 가져온 모델을 배관이 거의없는 엔진 내 데이터로 사용할 수 있습니다.

  • 표준은 오픈 소스이며 사양은 Github에서 호스팅됩니다. 즉, 표준을 항상 사용할 수 있고 무료로 사용할 수 있으며 개발 프로세스는 누구나 볼 수 있습니다. 이에 반해 비공개 소스 표준의 미래는 본질적으로 위험한 사적인 이익에 의해 결정됩니다.

  • glTF는 Khronos (Adobe, Google, Microsoft, Mozilla, Unity)를 통해 많은 업계 거인에 의해 지원됩니다. 블렌더로 내보낼 수 있고 (Maya에서 내보내기는 공식적으로 지원되지 않음) 언리얼, 유니티, Godot에서 가져올 수 있습니다.

또한보십시오:

* 가변 핸드 탄젠트가 무의미하다고 확신합니다.


2

다른 답변에 추가하기 위해 실제로는 중간 및 런타임의 두 가지 형식이 있습니다. 중간 형식 (예 : COLLADA)은 더 장황하고 느리며 도구간에 궁극적으로 특정 응용 프로그램 / 하드웨어에 최적화 된 사용자 지정 런타임 형식으로 변환됩니다. 성능에 관심이없는 간단한 응용 프로그램은 중간 형식을 직접 사용할 수 있습니다.

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