怎样分析解读以2进制存储的某种格式的文件,比如3D Max的3ds文件?

bulk 2004-01-17 03:42:03
怎样分析解读以2进制存储的某种格式的文件,比如3D Max的3ds文件?
...全文
89 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
MarsZhangLing 2004-01-19
  • 打赏
  • 举报
回复
3DS的格式好象很复杂.不过有的可以跳过.用多少写多少了.
hell190109 2004-01-19
  • 打赏
  • 举报
回复
directx sdk 里不是有吗
sevencat 2004-01-17
  • 打赏
  • 举报
回复
这个是标识头。
MAIN3DS = 0x4D4D,

EDIT3DS = 0x3D3D,

EDIT_MESHVER = 0x3D3E,
EDIT_OBJECT = 0x4000,

OBJ_TRIMESH = 0x4100,

TRI_VERTEXL = 0x4110,
TRI_FACEL1 = 0x4120,
TRI_MATERIAL = 0x4130,
TRI_MAPPINGCOORDS = 0x4140,
TRI_SMOOTHGROUP = 0x4150,
TRI_MATRIX = 0x4160,

EDIT_MATERIALENTRY = 0xAFFF,

MAT_NAME = 0xA000,
MAT_AMBIENT = 0xA010,
MAT_DIFFUSE = 0xA020,
MAT_SPECULAR = 0xA030,
MAT_SHININESS = 0xA040,
MAT_SHIN2PCT = 0xA041,
MAT_TRANSPARENCY = 0xA050,
MAT_XPFALL = 0xA052,
MAT_REFBLUR = 0xA053,
MAT_SELF_ILPCT = 0xA084,
MAT_WIRESIZE = 0xA087,
MAT_XPFALLIN = 0xA08A,
MAT_SHADING = 0xA100,
MAT_TEXMAP = 0xA200,
MAT_MAPNAME = 0xA300,
MAT_MAPTILING = 0xA351,
MAT_MAPTEXBLUR = 0xA353,

KEYF3DS = 0xB000,

KEYF_OBJECTNODETAG = 0xB002,

NODE_HEADER = 0xB010,
NODE_PIVOT = 0xB013,
NODE_POSTRACKTAG = 0xB020,
NODE_ROTTRACKTAG = 0xB021,
NODE_SCLTRACKTAG = 0xB022,
NODE_ID = 0xB030,

KEYF_SEGMENT = 0xB008,
KEYF_CURTIME = 0xB009,
KEYF_HEADER = 0xB00A,

M3D_VERSION = 0x0002,
COLOR_24 = 0x0011,
INT_PERCENTAGE = 0x0030,
MASTER_SCALE = 0x0100

每个块的一开始是这样的:
unsigned short uschunk=0;
unsigned int uichunksize=0;
第一个uschunk就是上面的那堆东东,第二个是这个块的长度(包括上面这两个数)
具体的你再看一下其他的代码吧。
gnefuil 2004-01-17
  • 打赏
  • 举报
回复
首先要知道该类文件的存储格式,比如哪几个bit是存储什么信息,哪些部分是控制信息,哪些部分是数据信息等等
然后直接用二进制方式打开该文件,把相应位置的二进制编码读出来就可以了

33,029

社区成员

发帖
与我相关
我的任务
社区描述
数据结构与算法相关内容讨论专区
社区管理员
  • 数据结构与算法社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧