自制C#版3DS文件的解析器并用SharpGL显示3DS模型

+BIT祝威+悄悄在此留下版了个权的信息说:

据说*.3ds格式的3D模型文件是很古老和过时的格式。本文参考了(http://www.spacesimulator.net/wiki/index.php?title=Tutorials:3ds_Loader)和(http://www.cnblogs.com/lookof/archive/2009/03/27/1423695.html),在此表示感谢。本文讲解如何从零开始用C#写一个3ds文件的解析器,然后用SharpGL(C#对opengl的封装)来显示3ds模型。有图有真相。

自制C#版3DS文件的解析器并用SharpGL显示3DS模型

自制C#版3DS文件的解析器并用SharpGL显示3DS模型 

上图使用的3ds模型文件和贴图文件在此。(spaceship.zip)(spaceshiptexture.bmp

 

+BIT祝威+悄悄在此留下版了个权的信息说:

3ds文件是二进制的。3ds格式的基本单元叫块(chunk)。我们就是读这样一块一块的信息。目录树如下,缩进风格体现了块的父子关系。可见3ds模型文件和XML文件类似,都是只有1个根结点的树状结构

 1 MAIN CHUNK 0x4D4D
 2    3D EDITOR CHUNK 0x3D3D
 3       OBJECT BLOCK 0x4000
 4          TRIANGULAR MESH 0x4100
 5             VERTICES LIST 0x4110
 6             FACES DESCRIPTION 0x4120
 7                FACES MATERIAL 0x4130
 8             MAPPING COORDINATES LIST 0x4140
 9                SMOOTHING GROUP LIST 0x4150
10             LOCAL COORDINATES SYSTEM 0x4160
11          LIGHT 0x4600
12             SPOTLIGHT 0x4610
13          CAMERA 0x4700
14       MATERIAL BLOCK 0xAFFF
15          MATERIAL NAME 0xA000
16          AMBIENT COLOR 0xA010
17          DIFFUSE COLOR 0xA020
18          SPECULAR COLOR 0xA030
19          TEXTURE MAP 1 0xA200
20          BUMP MAP 0xA230
21          REFLECTION MAP 0xA220
22          [SUB CHUNKS FOR EACH MAP]
23             MAPPING FILENAME 0xA300
24             MAPPING PARAMETERS 0xA351
25       KEYFRAMER CHUNK 0xB000
26          MESH INFORMATION BLOCK 0xB002
27          SPOT LIGHT INFORMATION BLOCK 0xB007
28          FRAMES (START AND END) 0xB008
29             OBJECT NAME 0xB010
30             OBJECT PIVOT POINT 0xB013
31             POSITION TRACK 0xB020
32             ROTATION TRACK 0xB021
33             SCALE TRACK 0xB022
34             HIERARCHY POSITION 0xB030
3DS块结构

相关文章:

  • 2021-10-02
  • 2022-12-23
  • 2022-12-23
  • 2021-12-03
  • 2022-12-23
  • 2021-12-27
  • 2022-12-23
猜你喜欢
  • 2021-08-21
  • 2022-01-22
  • 2022-12-23
  • 2021-06-29
  • 2021-10-12
  • 2022-12-23
  • 2021-09-05
相关资源
相似解决方案