注册 登录  
 加关注
查看详情
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

hhfighting的博客

以责人之心责己,以恕己之心恕人

 
 
 

日志

 
 
 
 

学习3D开发的一些相关知识总结  

2012-04-06 15:44:00|  分类: 专业知识 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

1、渲染器

     渲染器是3D引擎的核心部分,它完成将3D物体绘制到屏幕上的任务。根据3D硬件使用方法的不同,分为两种渲染器:Opengl和DirectX。

2. 什么是剔除(culling)系统和LOD系统?
    剔除系统可以只绘制出游戏场景中未被墙及其他物体遮挡的部分。一般的剔除系统是基于BSP树或者入口(Portal)的。BSP树系统是最快和最有效的场景组织结构,特别是对于室内场景来说,但是BSP树必须在场景编辑器中预计算。渲染器不支持使用八叉树(Octree)来组织场景的剔除。多数商业化3D引擎使用基于BSP树的剔除系统。如果使用BSP树的剔除系统的话,室内渲染速度和场景大小、对象数目无关,甚至在老的PC上都可以使游戏以正常的帧率运行。
       LOD系统可以增加室外场景的帧率。如果摄像机离物体比较远的话,它可以自动将物体转换为“简单”形体,这样就减少了每帧要绘制的多边形数目。

3. 什么是阴影贴图(Shadow Mapping)?
       阴影贴图也叫做光照贴图(Light Mapping)——这是一种可以在不减少帧率的情况下达到真实感光照和阴影效果的方法。阴影贴图编辑器允许在场景中放置任意数目的静态光源,它会为每个面预计算光流量(light flow)和静态阴影。现代商业3D游戏中多数都会使用到阴影贴图。如下图所示,平滑的光照和阴影极大地提升了游戏的氛围。

4. 什么是粒子系统
       粒子系统是一种特效发生器,它可以制造大量的小粒子来达到某种特殊的效果,比如烟雾、火焰或者爆炸。好的粒子效果甚至比渲染好的动画都出色,正因为如此,当前几乎所有的游戏中都使用了粒子系统。为了制造真实的粒子效果,粒子发生器必须在不影响帧率的情况下控制成千上万的粒子运动。简单的粒子系统只允许设置粒子的一些属性,比如生存时间、重力或者颜色;复杂的粒子系统允许为每个粒子的运动函数编写代码。一些粒子系统也包含了光线生成器来创建光线或者轨迹。

5. 什么是着色器(shader)?
着色器为图形渲染增加了新的方案,它允许顶点和像素级别的变换(transform)、光照(lighting),以及在运行时间渲染方式的修改。一个着色器是一段小脚本,运行在图形硬件上,为渲染到屏幕上的每个顶点或像素提供渲染方式。这就为用户提供了一种新的灵活的像素渲染的方法。顶点和像素着色器可以用来生成真实感水波、卡通风格、为模型覆盖毛发或者控制火山的熔岩等。很多新的游戏引擎都支持着色器。

6. 什么是骨骼动画(bones animation)
       当前有两种模型动画的方式:顶点动画和骨骼动画。顶点动画中,每帧动画其实就是模型特定姿态的一个“快照”。通过在帧之间插值的方法,引擎可以得到平滑的动画效果。在骨骼动画中,模型具有互相连接的“骨骼”组成的骨架结构,通过改变骨骼的朝向和位置来为模型生成动画。
       骨骼动画比顶点动画要求更高的处理器性能,但同时它也具有更多的有点,骨骼动画可以更容易、更快捷地创建。不同的骨骼动画可以被结合到一起——比如,模型可以转动头部、射击并且同时也在走路。一些引擎可以实时操纵单个骨骼,这样就可以和环境更加准确地进行交互——模型可以俯身并向某个方向观察或射击,或者从地上的某个地方捡起一个东西。多数引擎支持顶点动画,但不是所有的引擎都支持骨骼动画。
       一些引擎包含面部动画系统,这种系统使用通过音位(phoneme)和情绪修改面部骨骼集合来表达面部表情和嘴部动作。


7、布告牌/公告板技术(Billboard)

公告板(Billboard)是一种始终朝着观察者的一个物体。通常它是一个多边形。室外场景中通常有一些物体,比如说树木,柱子一类的物体,要么是细节非常的多以至无法用模型来表示,要么是从任何一个方向都一样(如柱子)。我们就简单的把这些物体用一个多边形加纹理映射来近似的表示。

用Billboard来表示树木非常的有效,著名的模拟驾驶游戏Need for Speed 5中的树木就是用这种技术实现的。我们所看到的树木其实只是一个矩形,如图所示,矩形可以绕着一根轴旋转,使矩形始终对着观察者。因此无论你从哪一个角度去看,你都只能看到矩形的正面,而不会看到扁的一面。

 (Billboard模拟树木的示意图)

除此之外,Billboard通常还用在粒子系统之中,因为3D场景中的粒子要始终正对着观察者。这种应用的典型例子就是Quake III和Unreal中绚丽的子弹光焰。

Billboard的实现关键在两个地方,其一是纹理贴图的模式,对于像绘制树木这一类形状不规则的物体,通常是采用透明贴图的模式,在OpenGL/Direct3D里我们可以采用Alpha test的功能。对于想粒子系统则一般采用Alpha Blending的功能。第二个关键的地方就是如何让多边形的一个面始终朝着观察者,如图所示。

Billboard旋转角度的计算,其中红的箭头为摄影机的朝向,蓝色的箭头为Billboard原来的朝向,z为转动的中心轴

我们只要把多边形旋转一个角度r就可以了。角度r的大小可以用如下的公式去计算:  。转动的中心轴则可以通过如下公式计算:




 

  评论这张
 
阅读(205)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2018