




已阅读5页,还剩24页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
天空盒,李巍,天空的种类,目前描述“天空”的技术主要包括三种类型: 平板型天空(Sky Plane),仅用一个平板放到头顶。 天空穹(Sky Dome),放到头顶的是一个曲面。 天空盒(Sky Box),放到场景的是一个立方体。,天空的种类,天空盒经常是由六个面组成的立方体,并经常会随着视点的移动而移动。 天空盒将刻画极远处人无法达到的位置的景物。,天空盒的实现,与D3D实现的普通立方体不同的一点是,大部分情况下我们视点都包容在天空盒内部,因此,天空盒的顶点顺序应当是正好与普通立方体的顶点顺序相反。,天空盒的实现,最简单的天空盒,只需要填写好六个面的24个顶点,最后为每个面贴上纹理即可。 CODE 请注意渲染的时候的一些细节:纹理状态的重设、渲染状态的重设。,天空盒的一些杂论,天空盒对于程序员并不是困难的事情,但是真正要在程序中使得天空“好看”,那么,还需要美工的共同参与。 天空穹相对而言表现力更好一些。魔兽世界就是采用了这种方法。,天空盒的一些杂论,对于并不太注意远景的场景,用天空板也不失为一种办法。在这种情况下,纯色的雾将覆盖整个远景,使得远处充满神秘。,天空盒的一些杂论,在高级一些的应用中,天空盒的纹理可能同时会用来生成Cube Map,并用之来做水面倒影、云影、反光等很眩的特效。,天空盒的一些杂论,云影,重新思考纹理,在目前的情况下,我们使用的都是D3D自己的IDirect3DTexture9纹理接口。 但是,目前的使用中,我们发现这些接口需要在各个使用纹理的类中去处理其释放,如果以后这些类中有更多的纹理,我们就会很郁闷。,CTexture:设计,我们计划将D3D的Texture封装到一个名为CTexture的类中。 毫无疑问,CTexture首先应具备一个类型为LPDIRECT3DTEXTURE9的成员。 那么,针对这个成员,我们就应该起码有创建、销毁这两个函数。 而在析构函数中,我们只需要调用一次销毁,就可以使得使用Texture的类少一些精力为它们做扫尾的工作。,CTexture:编码 以及对原有程序的改造,CODE 既然是使用了自己的CTexture,那么就必须同样为Device添加设置纹理的功能,这一点应该明确。 这种加入一个类就需要改变另一个类的情况,叫做“相关”。,总结,目前用来实现天空的技术有三种:天空板,天空穹和天空盒,天空盒最常用。 天空盒总是从内部看,所以其顶点方向正好和普通立方体的顶点方向相反。 出于对纹理使用方便的考虑,我们封装一个纹理类。在之后的实践中,我们还将继续扩展此纹理类,以使它实现更多的功能。,作业,在上星期五代码的基础上。 请添加“摄像机” 功能,最好以类实现。(可参考上次给大家的代码) 请自己编码实现一个纹理类。 附加题:请使用您自己的纹理类来做一个天空盒。 本次作业请在本周五0:00之前交。 上次摄像机与公告板的作业请在本周四0:00之前交。,水面和纹理动画,比起Real Time Rendering,本书更加深刻一些,也更加专注于BSP室内场景引擎的构建。,水面的实现方法,最早人们考虑水面,往往将其考虑为一堆三角形组成的网格,网格的规则抖动便构成了波纹。但是,这种方法可以让场景比蜗牛还慢,因此只用作研究。,水面的实现方法,早期水面的实现方法基本上都是纹理动画,这种方法直到今天为止还在使用。纹理动画最简单最基础,对美工的要求比较高,对程序要求相当低。,水面的实现方法,Bump Env技术出现后,水面的实现方法便开始多样起来,这些水面为场景的真实性做出了不朽的贡献。,水面的实现方法,Shader改变了水面实现的方式,它使得人们创建动感的水成为了可能。 用Shader实现的水面可以完美地显示出波动和其他特殊的效果。,纹理动画原理,类如电影胶片,纹理动画将循环播放一组纹理,并用这组纹理来描述动画。 纹理动画的用途相当广泛,水面只是这些应用中比较出彩的一种。 纹理的例子,纹理动画实现,平均每s毫秒顺序播放一个纹理,播放完毕后重头开始播放,以此便可实现纹理动画。 Void Update( float fElapsed ) m_fElapsed += fElapsed; / 更新时间 if( m_fElapsed = s ) / 如果到了需要切换纹理的时间 +Texture_Index; / 切换纹理标号 if (Texture_Index = MAX_TEX_INDEX) / 如果已经播放完毕 Texture_Index = 0; / 重头开始播放 m_fElapsed = 0.0f; / 重新计时 ,纹理动画的实现,Void Render() / 根据当前的纹理标号进行渲染 SetTexture( m_TexturesTexture_Index ); DrawPrimitive(); ,水面的实现,纹理动画所实现的水面一般由大量平板组成。 演示,水面的VB和IB,纹理动画实现的水面很少有需要动态变化的,因此创建静态的VB和IB以提高渲染速度成为了一个优化的手段。,实现纹理动画的水面,CODE,魔兽水面纹理算法,魔兽水面经过打光处理,所以我们必须添加一个光源,和一个材质。 同时,为了将光的影响和水本身的纹理因素添加到一起,由于水本身的纹理较暗,我们使用ADD算法,使得光对水面的影响更加明显。,魔兽水面纹理的算法,最后,水纹理在Alpha通道中存的高光信息,我们将通过MODULATEALPHA_ADDCOLOR算法使之影响到场景中。 MODULATEALPHA_ADDCOLOR: Arg1的RGB + Arg2的RGB*Arg1的Alpha。 我们这里只需要为Arg1和Arg2都取Current就可以了。Enjoy!,总结,水面的实现技术包括网格化水面、纹理动画、硬件BumpEnv和各种不同的水面Shader算法。 用纹理动画实现水面,必须依照纹理的特性而选择不同的纹理算法。 对于魔兽的水面,除了打光外,我们开启了两条纹理通道,分别使用了A
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年眼科图像识别与疾病诊断模拟考试答案及解析
- 风险研判知识培训课件
- 2025年老年医学失智症评估与护理考试答案及解析
- 2025年吊车租赁合同
- 风铃课件律动
- 中级袋鼠竞赛试题及答案
- 雅思英语二卷真题及答案
- 外包人员安全培训论文课件
- 2025年神经外科手术操作技能评估模拟考试答案及解析
- 2025年肿瘤科细胞病理学解读能力评估答案及解析
- 认识中国特色社会主义文化
- 森林防火林区道路建设基本要求
- 供电所所长讲安全课
- 《钢铁行业智能制造标准体系建设指南(2023版)》
- 餐饮外卖智能调度与配送优化方案
- 设计材料与工艺课程 课件 第1章 产品设计材料与工艺概述
- 《SDH学习知识总结》课件
- 创面封闭负压引流管护理技术
- 2024年20kV及以下配电网工程劳务定额计价清单
- 2024年WPS计算机二级考试题库350题(含答案)
- 骨关节课件教学课件
评论
0/150
提交评论