.3ds

위키백과, 우리 모두의 백과사전.

3DS오토데스크 3ds 맥스의 3D 모델링, 애니메이션, 렌더링 소프트웨어에서 사용되는 파일 포맷이다.

도스 시절이던 오토데스크 3D 스튜디오 도스의 자체 파일 포맷으로, 1990년 3D 스튜디오 도스 버전1 출시 당시부터 1996년 4월 3D 스튜디오 맥스 1.0로 이름을 바꾸고 새로 출시하기까지 널리 쓰이던 확장자였다. 프로그램이 처음 출시될 때부터 한동안은 다른 3D 프로그램으로 모델을 옮기거나 3D 리소스 목록에 모델을 저장할 때[1] 사실상 업계 표준일 정도로 흔히 사용하였다.[2]

3DS 확장자는 삽입/내보내기 포맷을 제공하고 핵심적인 지오메트리, 텍스처, 조명데이터 등만 유지하는 것에만 초점을 맞췄다고 한다면, 여타 MAX 확장자 (지금의 PRJ 확장자)는 3ds 맥스에 관한 추가 정보도 담아두기 때문에 하나의 씬을 온전히 저장했다가 불러올 수 있다는 점이 차이점이다.

구조[편집]

3DS는 이진 파일 포맷 구조로 되어 있다. 덩어리 (chunk)를 기반으로 하고 있으며, 데이터의 각 섹션을 하나의 블록에 삽입할 때 거기에는 그 데이터 자체는 물론 덩어리 식별코드와 데이터 길이 (다음 메인블록의 위치를 제공하려는 목적에서 쓰임)까지 담고 있다. 이를 통해 파서가 식별하지 못하는 덩어리는 넘어가도록 해주고, 포맷을 확장시킬 수 있게 만든다.

3DS의 덩어리는 위계적 구조로 되어 있으며, XML의 DOM과 비슷하다. 각 덩어리의 처음 두 바이트는 덩어리의 ID다. 이 값에서부터 파서는 덩어리를 식별하고 그것을 파싱할지 아니면 넘어갈지를 선택할 수 있게 해준다. 그 다음 네 바이트에는 적은 값의 엔디언 정수가 들어가는데 이는 곧 덩어리의 길이로, 데이터 자체와 블록 뒷부분, 헤더 6바이트가 모두 들어간 값이다. 이 다음 바이트부터는 덩어리의 데이터에 해당되며, 각각의 서브덩어리가 이어지며 여러 단계의 깊이까지 뻗어나갈 수 있다.

아래는 위계질서에 따라 나열한 가장 흔히 쓰이는 ID 목록으로, 의존 관계를 기술하고 있다.[3][4]

0x4D4D // Main Chunk
├─ 0x0002 // M3D Version
├─ 0x3D3D // 3D Editor Chunk
  ├─ 0x4000 // Object Block
    ├─ 0x4100 // Triangular Mesh
      ├─ 0x4110 // Vertices List
      ├─ 0x4120 // Faces Description
        ├─ 0x4130 // Faces Material
        └─ 0x4150 // Smoothing Group List
      ├─ 0x4140 // Mapping Coordinates List
      └─ 0x4160 // Local Coordinates System
    ├─ 0x4600 // Light
      └─ 0x4610 // Spotlight
    └─ 0x4700 // Camera
  └─ 0xAFFF // Material Block
     ├─ 0xA000 // Material Name
     ├─ 0xA010 // Ambient Color
     ├─ 0xA020 // Diffuse Color
     ├─ 0xA030 // Specular Color
     ├─ 0xA200 // Texture Map 1
     ├─ 0xA230 // Bump Map
     └─ 0xA220 // Reflection Map
          /* Sub Chunks For Each Map */
        ├─ 0xA300 // Mapping Filename
        └─ 0xA351 // Mapping Parameters
└─ 0xB000 // Keyframer Chunk
   ├─ 0xB002 // Mesh Information Block
   ├─ 0xB007 // Spot Light Information Block
   └─ 0xB008 // Frames (Start and End)
      ├─ 0xB010 // Object Name
      ├─ 0xB013 // Object Pivot Point
      ├─ 0xB020 // Position Track
      ├─ 0xB021 // Rotation Track
      ├─ 0xB022 // Scale Track
      └─ 0xB030 // Hierarchy Position

각주[편집]

  1. 이 경우에는 모델 아카이빙 파일 포맷으로 '.obj'가 더 많이 쓰이기는 했다.
  2. 3D Studio .3ds Geometry Export Converter
  3. Spacesimulator.net - 3ds format file reader, loader, by Damiano Vitulli
  4. The Labs: 3DS Specifics

외부 링크[편집]