




全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
关于ogre的地形学习笔记OGRE地形听说是很好弄,弄好了也不是很好用,其他的我也不是很懂,冒然前行碰了一鼻子灰,碰了两天,在前辈们的基础之上明白了一点,写给初级的!ogre地形的建设主要几步搞定就行。当然,如果你看不见是因为摄像机忘记放置了,那么这篇不适合你。其他不说,咱们单说地形。(唉,公司都年会去了,我还这地形呢)())擦干眼泪开始,谁叫咱连个实习生都不算呢。第一步,说一个类 TerrainGlobalOptions 字面意思:地形全局属性让我来说说我对ogre地形的组建方法:其实就是一个小方块*一个小方块,所以一个大的地形有n*n个小的地形组成。那么在建立时我们就关心小的就行了,但是,有很多属性小方块们是一样的,所以,如果还要在建立他们时加上,就有点浪费资源了,所以,用一个TerrainGlobalOptions类来管理,地形的统一属性不失为一个好方法。所以,这就是TerrainGlobalOptions 的作用。mTerrainGlobals=OGRE_NEW TerrainGlobalOptions();关于对象的属性设置,稍后再说。第二步,再说一个类 TerrainGroup 地形分块属性 顾名思义,用来设置分块的属性的mTerrainGroup=OGRE_NEW TerrainGroup(mSceneMgr,Terrain:ALIGN_X_Z,513,12000); /第三个属性是用来设置模糊变化的最小块的 mTerrainGroup-setFilenameConvention(Ogre:String(MyTerrain),Ogre:String(dat); mTerrainGroup-setOrigin(Vector3:ZERO);OGRE_NEW =new第二句:设置这块地形的名字 叫“MyTerrain.dat”他是给保存并且后面函数用的。第三句:设置原点,以后的分组都以这个点为相对点。第三步:配置地形块属性 configTerrainDefaults(light);这里我们新建了一个函数 并将我们的方向光作为参数传进去。在这个函数里面完成对地形的配置,包括全局的,和分组的。mTerrainGlobals-setMaxPixelError(8);mTerrainGlobals-setCompositeMapDistance(3000);mTerrainGlobals-setLightMapDirection(light-getDirection();mTerrainGlobals-setCompositeMapAmbient(mSceneMgr-getAmbientLight();mTerrainGlobals-setCompositeMapDiffuse(light-getDiffuseColour();全局函数配置 英文解释:MaxPixelErrordecides how precise(精确) our terrain is going to be. A lower number will mean a more accurate(精确) terrain, at the cost of performance (because of more vertices(顶点))指定当决定哪个细节层次被使用时的最大允许误差。设置过高会导致地形撕裂,过低则会影响性能。.第二行 :到底多远才用composite map,不是靠LOD决定的,而是靠这个参数mTerrainGlobals-setCompositeMapDistance(3000);三四五行:分别是指地形环境光,方向光之类的属性(用到了传进来的环境光)Terrain:ImportData &defaultimp=mTerrainGroup-getDefaultImportSettings();defaultimp.terrainSize=513;defaultimp.worldSize=12000;defaultimp.inputScale=300;defaultimp.minBatchSize=33;defaultimp.maxBatchSize=65;设置属性第二条,分组属性设置 分块的属性 例如inputScale 的大小 就是设置对于灰度图的拉伸比例。(注:这里讲一下我对这的理解,因为地形的高低是由生成它的灰度图的样子决定的,但是,灰度图的是8位的,所以只能表示相对值 28=256 表示的高度范围太小,如果采用十六位的话那就是 216=64k 珠穆朗玛峰高度8848m 已经足够了,但是为啥不用一个字节的要用一个字的呢,占用内存少啊!所以八位居多啊,这样,就需要伸缩比例了(inputScale)!知道了吧)defaultimp.layerList.resize(3); / /重新塑造list大小申请空间来放置要贴图defaultimp.layerList0.worldSize=100;defaultimp.layerList0.textureNames.push_back(xiaost_DIFFUSE.jpg);defaultimp.layerList0.textureNames.push_back(xiaost_NORMAL.jpg);defaultimp.layerList1.worldSize=30;defaultimp.layerList1.textureNames.push_back(xiaost_DIFFUSE.jpg);defaultimp.layerList1.textureNames.push_back(xiaost_NORMAL.jpg);defaultimp.layerList2.worldSize=200;defaultimp.layerList2.textureNames.push_back(shitou_DIFFUSE.jpg);defaultimp.layerList2.textureNames.push_back(shitou_NORMAL.jpg);以上添加了三层纹理用来构建地形的地表。其中worldSize是用来表示,你想用多大的一张图来贴花!呵呵第四步:创建地形分块下面就开始了defineTerrain(0,0,false);第五步:混合纹理实现的效果(别人做的图片):所以,为了实现混合区域的效果,做以下几个步骤;Ogre:TerrainLayerBlendMap * blendMap0=terrain-getLayerBlendMap(1);/以下四个常量是用来计算出随着地形的高低混合的因子的大小的Real minHeight0=100;Real fadeDist0=40;Real minHeight1=100;Real fadeDist1=20;float * pBlend1=blendMap0-getBlendPointer();/这个是获取纹理地图的起始位置for (Ogre:uint16 y=0;ygetLayerBlendMapSize();+y)for (Ogre:uint16 x=0;xgetLayerBlendMapSize();+x)Ogre:Real tx,ty;blendMap0-convertImageToTerrainSpace(x,y,&tx,&ty); /将纹理坐标转化为地形坐标blendMap1-convertImageToTerrainSpace(x, y, &tx, &ty)来得到混合图像空间上(x,y)的那个像素对应的地形实例空间上的坐标。Ogre:Real height=terrain-getHeightAtTerrainPosition(tx,ty);/取得在想(x,y)坐标的地形高度Ogre:Real val=(height-minHeight0)/fadeDist0;val=Ogre:Math:Clamp(val,(Ogre:Real)0,(Ogre:Real)1);*pBlend1+=val;/设置混合因/*/*/* 经常会遇到内存读取错误在这总结一下:原因一:内存过界原因二:对象未初始化解决办法调试,加断点看看对象是否有值*/*/ /val=(height-minHeight1)/fad
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2030中国卡通壁灯行业市场占有率及有效策略与实施路径评估报告
- 2025至2030中国医疗保健中的LBS行业市场深度研究与战略咨询分析报告
- 2025至2030中国冷藏集装箱行业产业运行态势及投资规划深度研究报告
- 2025至2030中国农业种植施肥机械行业产业运行态势及投资规划深度研究报告
- 整车工装管理办法
- 最近固贷管理办法
- 徐州公厕管理办法
- 招标拍卖管理办法
- 架料租赁管理办法
- 投资资格管理办法
- 2025年教育法律法规与政策考试试题及答案
- 2025四川成都新都投资集团有限公司招聘23人笔试历年参考题库附带答案详解
- 广东省广州市番禺区实验中学2025届物理高一下期末监测试题含解析
- 2025年10月高等教育自学考试马克思主义基本原理概论试卷及答案(一)
- 过程管理支持管理办法
- 2025小麦的购销合同范文
- 项目人员调整管理办法
- 2025年全国保密教育线上培训考试试题库附答案(完整版)含答案详解
- DB15T 1700.1-2019“蒙字标”认证通用要求 农业生产加工领域
- 项目投标安全经理答辩
- 旅游学概论旅游学概述课件
评论
0/150
提交评论