用户操作
[留言]  [发消息]  [加为好友] 
订阅我的博客
XML聚合    FeedSky
订阅到鲜果
订阅到Google
订阅到抓虾
body100123的公告
这是一个研究Nebula3游戏引擎的博客,以此来主要探讨游戏引擎开发,游戏工具开发和实际游戏项目中需要使用到的技术,分享一些自己的心得,欢迎大家交流!
文章分类
存档

原创  Nebula2引擎的模型格式 收藏

Nebula2引擎的静态模型格式,一种是ASCII文本格式的,后缀名为n3d2;另外一种格式为二进制的,后缀名为nvx2;为了能手动制作些简单的模型或者了解模型的加载过程,都需要了解模型的格式,以下做一个简述:

以plane.n3d2文件为例:

type n3d2
numgroups 1
numvertices 4
vertexwidth 5
numtris 2
numedges 0
vertexcomps coord uv0
g 0 4 0 2 0 1
v -1.000000 1.000000 0.500000 0.000000 0.000000
v 1.000000 1.000000 0.500000 1.000000 0.000000
v 1.000000 -1.000000 0.500000 1.000000 1.000000
v -1.000000 -1.000000 0.500000 0.000000 1.000000
t 0 2 1
t 0 3 2

第一行说明是n3d2的文本格式,第二行,说明模型有多少组;第三行说明模型有几个顶点;第四行说明用几个数来说明一个顶点;

第五行说明有这些顶点构成几个三角形,第六行说明这些点构成多少边缘;第七行,数据说明顶点的格式;第八行,以g开头,意思是说

这行说明一组模型的详细信息;第九行说明顶点的详细信息;第十行以t开头,是对顶点的索引的详细说明,最后 应该有以e开头的一组数据

主要用来说明构成三角行后的边缘的具体信息;一般当渲染方式以Triangle Fans方式渲染时,才可能拥有这些信息;

其中第七行的数据,是用位信息来表示顶点的格式,如下:

Coord = (1<<0)
Normal = (1<<1)
Uv0 = (1<<2)
Uv1 = (1<<3)
Uv2 = (1<<4)
Uv3 = (1<<5)
Color = (1<<6)
Tangent = (1<<7)
Binormal = (1<<8)

而以g开头的组信息,依次代表以下意思

int vertexRangeFirst //这一组的第一个顶点
int vertexRangeNum//这一组有多少个顶点
int firstTriangle//这一组第一个三角形
int numTriangles//有多少个三角形
int firstEdge
int numEdges

对于文件的加载,对n3d2和nvx2都已经写好了加载器,我们可以试着自己去使用这些代码来加载模型数据;

发表于 @ 2007年07月17日 00:41:00 | 评论( loading... ) | 编辑| 举报| 收藏

旧一篇:系统分析师级考试大纲 | 新一篇:c++编写maya插件--(获得模型的顶点信息)

  • 发表评论
  • 评论内容:
  •  
Copyright © body100123
Powered by CSDN Blog