(转)Ogre 天龙八部 GridInfo文件格式说明(正确版)
来源:互联网 发布:数据库概念模型的定义 编辑:程序博客网 时间:2024/05/22 02:23
下面我先给出天龙八部GridInfo文件格式,然后再简要介绍一下实现方式。
[GridInfo file format]
DWORD nVersion 版本号
int nWidth 地表宽度(横向格子数)
int nHeight 地表高度(纵向格子数)
如果版本号大于0x00100002则后面跟一个bool型数据,否则不存在这个bool型数据
bool bLarge GridInfo是否为7字节类型
如果bLarge存在并且值为1,则其后跟的是7字节版本否则为5字节版本
[GridInfo 5字节版本]
BYTE nFirstLayer 该值即为pixelmap的索引(第几个pixelmap)
BYTE nFirstLayerOp 对nFirstLayer的操作,可能取值如下:
0 不变
1 水平翻转
2 垂直翻转
4 向左旋转90度
8 对角线镜像
注意:这些值之间是可以取和的,比如9=1+8说明图片需要水平翻转和对角线镜像
BYTE nSecondLayer 该值为pixelmap的索引
天龙八部的地表最多可以两层融合,说白了就是每个点里有两层UV,这里为第二层pixelmap的索引
BYTE nSecondLayerOp 对nSecondLayer的操作,取值同nFirstLayerOp
BYTE IndexOrder 对格子的三角形的操作,可能取值如下
0正常三角形索引
1不同于正常的三角形索引
如下图,该值主要用在水池啊一类的地方,如果三角形索引不变的话,水池四个角中的两个角就不对了。
[GridInfo 7字节版本]
short nFirstLayer
读取后需交换高8位与低8位的值,需做如下操作
nFirstLayer = (nFirstLayer<<8)|(nFirstLayer>>8)
BYTE nFirstLayerOp
short nSecondLayer
同nFirstLayer,需交换高8位与低8位的值
BYTE nSecondLayerOp
BYTE IndexOrder
实现方式:
想象一下如果你设好每个点的位置,UV,法线,材质,整个场景不就出来了嘛。
现在的问题是如何操作这些VertexData和IndexData,其实Ogre本身就有大量的类直接这两者,比如Mesh,StaticGeometry,ManualObject等等。不过前阵子突然发现有位朋友写了个魔兽3地形的例子,使用Ogre实现的,写得非常好,呵呵,我就借花献佛推荐大家看这个例子吧,相信你应该有点感觉:)
btw:据说《成吉思汗OL》是用Ogre做的,而且还是在《天龙八部OL》的基础上改的,场景方面做的更好。因为成吉思汗的制作人就是原来天龙八部的制作人,呵呵,国内游戏圈这么小,消息渠道我多少有一点。有兴趣的朋友研究下吧:)
- (转)Ogre 天龙八部 GridInfo文件格式说明(正确版)
- Ogre 天龙八部 GridInfo文件格式说明(正确版)
- Ogre 天龙八部 GridInfo文件格式说明(正确版)
- Ogre 武侠世界 GridInfo文件格式说明
- Ogre 天龙八部地形 Heightmap(高度图)+GridInfo(地表信息)初步结果
- Ogre 天龙八部地形 Heightmap(高度图)+GridInfo(地表信息)初步结果
- Ogre 天龙八部地形 Heightmap(高度图)+GridInfo(地表信息)初步结果
- 天龙八部GridInfo读取源码
- 天龙八部GridInfo读取源码
- 菜鸟学习OGRE和天龙八部之三: GridInfo和HeightMap文件的数据格式(已更正)
- 菜鸟学习OGRE和天龙八部之三: GridInfo和HeightMap文件的数据格式(已更正)
- 用Ogre实现《天龙八部》场景中水面(TerrainLiquid)详解
- 用Ogre实现《天龙八部》场景中水面(TerrainLiquid)详解
- 用Ogre实现《天龙八部》场景中水面(TerrainLiquid)详解
- 用Ogre实现《天龙八部》场景中水面(TerrainLiquid)详解
- 用Ogre实现《天龙八部》场景中水面(TerrainLiquid)详解
- 修改ETM,用Ogre实现《天龙八部》地形与部分场景详解(附源码)
- 修改ETM,用Ogre实现《天龙八部》地形与部分场景详解(附源码)
- MFC 改变字体
- Android编程9:蓝牙测试
- (转)网上流传的天龙源码框架分析之一 --- 客户端简单介绍
- xpath+中关于+xmlns+的问题
- hdu2040
- (转)Ogre 天龙八部 GridInfo文件格式说明(正确版)
- 西蒙iphone-OpenGL ES 教程 -06
- [Build+Android+Development+Environment+Step+1]Initializing+a+Build+Environment
- libcurl应用:如何把下载内容写入内存
- C数学函数,所在函数库为math.h、stdlib.h、string.h、float.h
- HTML iframe 用法总结收藏
- 西蒙iphone-OpenGL ES 教程 -07
- 穆迪-深圳
- fork文件描述符和文件指针的区别