2.延迟着色
延迟着色是一种针对3D场景进行后期照明的技术。利用这种技术打破了以往渲染系统支持多重动态光源时,效率和各种性能急剧下降的限制,从而使得在一个3D场景能够支持上百上千动态光源的效果。它的实现方法主要是将3D场景的几何光照信息渲染到render targe上,把它们从三维世界空间转变成屏幕的颜色空间,作为光照计算时的输入,然后对每一个光源,使用这些信息输入逐一进行计算生成一帧,然后把这样的一帧合成到结果的帧缓存上,当遍历完所有的光源后,计算就完毕了,帧缓存上的图像就是最后的渲染结果。
Unity3d引擎着色框架是基于DX10架构的,64bit颜色抗锯齿G-Buffer,提供更精确的颜色计算,并支持大量的实时光源,能提供逼真的建筑内外光照效果。
3.真实的自然天光
一个真实的天空效果对渲染气氛是十分重要的,渲染引擎基于地球任一点任意时间的大气光学厚度对于不同波长光波的Rayleign和Mie散射的数学建模,可以提供真实的天光和光照效果,如图1所示。
4.动态软阴影
获得动态树阴影效果,Unity3D引擎采用先进的多级PSSM ShadowMap投影方式和VSM的过滤算法,可以产生动态的精细的柔和阴影效果,并可以支持半透明的物体投影。
Shadow Mapping(阴影映射)是一种图像空间的技术,它是在以光源位置作为视点的情况下渲染整个场景的深度信息,然后再使用这些深度信息去决定场景的哪一部分是处于阴影之中。它有锯齿并且依赖缓冲技术。由于可以在保持帧率的情况下达到真实感光照和阴影效果,编辑器允许在场景中放置任意数目的静态光源,它会为每个面预计算光流量和静态阴影。
5.体积光
体积光是指大气中漂浮的尘埃在光照情况引起的散射效果,比如像在暗屋子中从窗缝投进的光柱效果,它给人一种莫名的厚重感和时间感,也是构成真实画面效果的不可或缺的一部分,如图2所示。
6.景深
无论是人眼还是照相机这种光学系统,都有在聚焦平面处清晰,在远离聚焦平面越来越模糊的现象。所以景深是重要的一种镜头表达方式,系统使用屏幕空间的基于逐像素的多次高斯卷积滤波,可以模拟出人眼的这种效果,增加用户身临其境的感觉。同时主画面以外的部分被虚化后,面数大大降低,可减少系统对资源的占用,有助于实现高画质的流畅运行。如图3所示,近景场景清晰而远景场景模糊。
7.实时环境遮挡
假设在一个太阳光没有直接照射到的一个桌面放上一个茶壶,那么虽然这里没有直接光照但是在茶壶底部仍然能形成一圈暗影,这便是间接光照的影子,就是说茶壶减少了其他物体如墙面对于桌面的关系反射,这种间接阴影是构成真实的全局光照的重要的一部分,没有这种效果桌上的茶壶就会有漂浮感。采用改进的基于DX9.0c的实时环境遮挡技术HDSSAO,可以带来逼真的间接阴影效果。
8.次表面反射
不大幅增加模型数据量而实现模型的高度真实感,除前面提到的法线贴图技术比较典型,也比较受关注的是玻璃反光,甚至往往是观察的重点。运用基于双向次表面散射反射分布函数BSSRDF,对玻璃和其他不同的材质建模表现出和逼真的表面效果。
9.移动控制
第一人称浏览时,可以控制的动作。就是通过“wasd”或者上下左右键来控制移动。首先新建一个JavaScript文件,这里命名为InputDetect吧,输入下面的代码:
#pragma strict
var Player : GameObject;
function Start () {}
function Update () {
Player = GameObject.Find("PlayerCube");
if(Input.GetKey(KeyCode.W)){
Debug.Log("Hit w");
Player.transform.Translate(Vector3.forward * 2);
}else if(Input.GetKey(KeyCode.S)){
Debug.Log("Hit s");
Player.transform.Translate(Vector3.back * 2);
}else if(Input.GetKey(KeyCode.A)){
Debug.Log("Hit a");
Player.transform.Translate(Vector3.left * 2);
}else if(Input.GetKey(KeyCode.D)){
Debug.Log("Hit d");
Player.transform.Translate(Vector3.right * 2);
}
}
这时,运行这个系统,就可以通过“WASD”来控制移动了。
系统的发布
最终系统是网上应用的,考虑到用户硬件的配置差异,提供从高到低四个版本,最低可支持集成显卡,并在主页面上制作对应按钮,清晰标注每个版本对应的配置需求,方便选择浏览,并在演示页面设置操作图示。
为了能够更真实地展现虚拟现实场景,充分地利用Unity3D系统的插件,通过延迟着色、真实的自然天光、动态软阴影技术、实时环境遮挡技术、HDR动态亮度适应、景深技术等展现一个真实的、柔和的场景,为访问者提供了良好用户体验度。通过脚本编程,实现移动控制,增加用户体验度。
大连理工大学三维虚拟校园系统每个版本文件25M左右,运行时占内存400M;页面打开迅速、运行流畅;界面友好,操作便捷。画面精美自然,给人以身临其境的感觉。
(作者单位为大连理工大学网络与信息化中心)
特别声明:本站注明稿件来源为其他媒体的文/图等稿件均为转载稿,本站转载出于非商业性的教育和科研之目的,并不意味着赞同其观点或证实其内容的真实性。如转载稿涉及版权等问题,请作者在两周内速来电或来函联系。