Ogre 光源的使用

上传人:ba****u 文档编号:158501581 上传时间:2022-10-05 格式:DOCX 页数:9 大小:19.79KB
收藏 版权申诉 举报 下载
Ogre 光源的使用_第1页
第1页 / 共9页
Ogre 光源的使用_第2页
第2页 / 共9页
Ogre 光源的使用_第3页
第3页 / 共9页
资源描述:

《Ogre 光源的使用》由会员分享,可在线阅读,更多相关《Ogre 光源的使用(9页珍藏版)》请在装配图网上搜索。

1、Ogre光,材质与材质脚本光材质与材质脚本基本概念Ogre 的材质(Material)为了优化渲染,必须把渲染状态的变化减少到最小。而最频繁的渲染状态改变是材料的变化 (大多是纹理的变化)。Ogre的Material类封装了物体的所有材料属性,类似于3D Studio中material的概念。平 时不被认为是属于材料的属性,像culling模式和深度缓存设置等,也被Material包含近来 了。因为这些属性同样影响了物体的外观,把它们放到Material类里可以集中设置所有影 响物体的属性。这和D3D中只保存颜色组件而没有纹理映射的Material有明显不同。Ogre 的Material可以被

2、认为是Shade的等同物。Material类包括如下几类属性:1、基本的表面材质属性,如对不同颜色的反射率、Shininess等等:2、组成Material的纹理层3、纹理之间的混合(Ble nd)方式4、深度缓冲设置5、Culling 模式6、纹理过滤方式(三线性过滤、双线性过滤)7、是否受光照影响& Shading 选项9、雾化其中第二条的纹理层可以有多个,Ogre在Material类的内部定义了 TextureLayer类。 纹理层(TextureLayer)一个纹理层可以是一幅静止的图像,也可以是一幅以某种方式运动的图像,还可以是由多幅 图像组成的动画。它可以实现多种纹理特效,如BUM

3、PMAP (凹凸贴图)、环境帖图、运 动的纹理。材质管理器(MaterialMa nager)MaterialManager类负责管理Material库。和材质相关的类图如下:MaterialManager 还负责分析 Material 脚本(Material Script),从而初始化 Material 的属 性。下面我们来分析一下Ogre提供的材质脚本语言。Ogre的材质脚本Ogre提供的材质脚本可以帮助开发者简单的设置又酷又眩的材质特效,而不用重新编译。 当然你也可以用Material和TextureLayer类提供的诸多成员函数来做到,但这就有点不太 实用了。Ogre材质脚本的默认扩展

4、名为.material,你也可以通过MaterialManager类的 parseAIISources方法来规定新的扩展名。系统初始化时会自动分析所有的材质脚本文件, 并设置材质的属性。注意,这里只设置材质的属性,并不会将材质的纹理调入内存,因为那 样会招致极大的内存消耗!示例一:环境帖图在场景中显示一个OGRE头,并设置其表面材质为环境帖图,该环境帖图的属性在Example.material中设置。我们先看一下createScene()函数的代码:void createSce ne(void)设置环境光mSce neMgr-setAmbie ntLight(ColourValue(0.5,

5、0.5, 0.5);创建一个实体(OGRE头)Entity *ent = mSceneMgr-createEntity(head, ogrehead.mesh);设置实体的材质en t-setMaterialName(Examples/E nvMappedRustyStee门;/将实体附属到场景根结点上mSce neMgr-getRootSce neNode()-createChild()-attachObject(e nt);在这里,Entity的成员函数setMaterialName是关键,字符串类型的参数对应材质脚本中的 材质名。Examples/EnvMappedRustySteel就

6、是材质名,它在 Example.material 文件中定 义了环境帖图,脚本代码如下:材质名Examples/E nvMappedRustySteel环境光ambie nt 1.0, 1.0, 1.0散射光diffuse 1.0, 1.0, 1.0shad ing phong纹理层0纹理图象文件texture RustySteel.jpg纹理层1纹理图象文件texture spheremap.p ng纹理层之间的颜色累加colour_op add指定环境帖图的方式en v_map spherical从这个例子中我们可以发现使用脚本来定义材质非常方便。首先,脚本采用类C+的语法, 以作为分隔符

7、,以作为注释符。每一个Material必须有一个名字,在这个例子中就是 Examples/EnvMappedRustySteel,它对应一个材质。脚本规定一个命令占一行,不可以串 行。Ogre为其材质脚本定义了许多关键字(命令),用来设置材质属性。如上例中的ambie nt” 与“diffuse”就是关健字,分别设置材质对环境光和散射光的反射率。在Material定义中嵌套 一个“”,就代表一个纹理层,你可以在大括号中定义纹理层的属性,上例中有两层纹理, 下层简单的显示了一幅名为“RustySteel.jpg”的图像,上层纹理采用了环境帖图并设定了两 层纹理的混合方式为颜色相加。材质脚本的关健

8、字有很多,具体请参考Ogre Tutorials的“Material Script一节。示例二:Example.material分析并尝试更改Ogre运行环境中的Example.material文件,并在Ogre提供的演示 TextureFx.exe中观察效果。下面列出的是TextureFx.exe中用到的三个材质的定义:/流动的水的特效Examples/TextureEffect3ambie nt 0.2 0.2 0.2/关闭硬件拣选与软件拣选,即双面渲染/硬件拣选,由硬件渲染器负责。基于画三角形的方式(顺时针,逆时针)。vclockwise|a nitclockwise| none/软件拣

9、选,在前几个信息改善到硬件器之前,进行拣选。基于三角形的前和后(由三角 形的向量决定)。cull_hardware nonecull_software none/水用了两层纹理/纹理层0texture Water01.jpgscroll_a nim -0.25 0.1/纹理层1texture Water01.jpgscroll_a nim -0.1 0.25/纹理层1与纹理层2之间的混合方式,add代表两层颜色相加。colour_op add/大小正弦波影响的特效Examples/TextureEffect1ambie nt 0.75 0.75 0.75/关闭硬件拣选与软件拣选,即双面渲染/硬

10、件拣选,由硬件渲染器负责。基于画三角形的方式(顺时针,逆时针)。/软件拣选,在前几何信息改善到硬件器之前,进行拣选。基于三角形的前和后(由三角 形的向量决定)。cull_hardware nonecull_software none/纹理层0/纹理图的文件名texture BumpyMetal.jpg/ wave_xform指定一个波形函数,来对指定的纹理层属性(scale或scroll或rotate)产生 影响/ wave_xform 纹理层的某个属性 频率 相位 振幅/下面这句可以解释成:纹理的宽度值 = 纹理的宽度值 大 正弦波当前时间的值(base+s ine)wave_xform s

11、cale_x sine 0 0.1 0 5/旋转速率=旋转速率+正弦波当前的值/ wave_xform rotate si ne 0.1 0.1 0 5/纹理流动的管道Examples/TextureEffect2sce ne_ble nd addtexture Water02.jpgscroll_a nim 0.5 0材质脚本关健字说明ambient设置材质的环境光反射属性格式:ambie nt vblue正确的参数在0.0和1.0之间取值。直接影响物体材质对环境光反射能力。默认值为白色(1.01.0 1.0)。diffuse设置材质的漫反射属性格式:diffuse vgree n vblu

12、e正确的参数在0.0和1.0之间取值。直接影响物体材质对漫射光的反射属性。默认值为白色(1.0 1.0 1.0)。specular设置材质的镜面反射属性格式:specular vred vgree n vblue vsh inin ess正确的颜色参数在0.0和1.0之间取值,shininess属性可以是任何正数。直接影响物体材 质的镜面反射属性。默认值为无镜面反射(0.0 0.0 0.0 0.0)。emissive设置材质本身的发光程度格式:emissive vred vgree n vblue正确的颜色参数在0.0和1.0之间取值。如果一个物体自发光,它将不需要外界的照明, 但是,值得注意

13、的是这不表明这个物体将会成为一个光源:它只会照亮自己。默认是黑色(0.00.0 0.0)。scene blend设置与场景的混合方式,有两种形式格式 1: sce ne_ble nd vadd|modulate|alpha_ble nd这个格式比较简单常用一些,参数意义如下:add渲染的结果将被以相加的方式加入场景之中,与scene_blend one one等价。 对爆炸,火焰,光照,幽灵等效果比较好。.渲染的结果与场景相乘。对烟、玻璃杯和单个的透明物效果较好。与scene_blendModulate,.,.src_colour one_minus_src_colour 等价。.x渲染结果中

14、的Alpha成员将被用作遮罩。与scene_blend src_alpha alpha_blend.,.one minus src alpha 等价。格式 2: seene_blend vsrc_factor vdest_factor这个格式比较麻烦,但是比较完善。结果的计算公式为(texture * sourceFactor) +(scene pixel * destFactor)其中 sourceFactor 和 destFactor 女口下:OneZerodest_coloursrc_colour常数1.0常数0.0当前点的颜色纹理对应点的颜色on e_m inu s_dest_colo

15、ur1 - (dest_colour) on e_mi nu s_src_colour 1 - (src_colour) dest_alpha当前点的Alpha值src_alpha纹理对应点的Alpha值on e_mi nus_dest_alpha 1 - (dest_alpha) on e m in us src alpha 1 - (src alpha)默认值:see ne_ble nd one zero (不透明)depth_check是否开深度测试格式:depth_check von|off默认打开深度缓存。有助于判断两个点的遮挡关系和前后关系,体现三维立体感。depth_write是

16、否允许对已经存在的深度缓存进行写操作格式:depth_write von|off默认允许,关掉的话,则被关的Material会一直浮动在所有物体前面。depth_func当深度缓存打开的时候,挑选一个比较函数 格式:depth_f unc vfuncalways_fail从不比较always_pass总是用新的换掉旧的less新的比旧的小就换掉Less_equal新的小于等于旧的就换掉equal等于就换掉no t_equal不等于就换掉greater_equal新的大于等于旧的就换掉greater新的比旧的大就换掉默认为:小于等于就换掉depth_func less_equalcull_har

17、dware设置硬件Cull模式格式:cull_hardware vclockwise|a nitclockwise| none默认顺时针Cull。这与OpenGL的默认是一样的,但和D3D的默认相反。(因为Ogre用的是OpenGL米用的右手坐标系)cull_software设置软件Cull模式格式:cull_software vback|fr ont|none默认背面。相当于硬件Cull模式的顺时针。lighting 光照设置动态光照是否为此材质打开。如果关掉,将使材质本身的所有的ambient, diffuse,specular, emissive和shading属性无效,仅仅与外界的光照

18、有关。格式:lighting von|off默认:light ing onshading阴影模式格式:shadi ng vflat|gouraud|ph ongFlat每个表面仅仅用一个颜色填充gouraud线性过渡表面颜色pho ng并非所有的硬件都支持,这种模式测定每一个顶点的颜色。默认:shadi ng gouraudfiltering设置纹理过滤方式格式:filtering vnone|bilinear|trilinear默认是双线性(bili near)Texture Layer专用属性texture设置纹理要使用的图名 格式:texture vtexture name 无默认值,必须指定一个纹理名。ani m_texture动画纹理设置动画纹理使用的图片文件名。格式 1 (短的):ani m_texture vbase_ namevnu m_frames vdurati on指定一个图片名称,以这个名称后缀_1、_2 一直到_num (由num_frames指定),duration 指定间隔时间。格式 2 (长的):an im_texture vframe1 vframe2 . vdurati on一个一个指定图片名称,duration指定间隔时间。无默认值

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!