![]() |
Alchemy3D - Flash 3D Engine |
Index | Contact Us | GuestBook | Search | Tags | Rss |
| 专注基于web 3D engine的开发和研究 |
![]() |
相信大部分引擎开发者也碰到这样一个大问题——使用了alpha混合后出现某些面片的混合颜色不正确,请先让我解释一下问题的原因。
当绘制一个3D场景时, 对图形进行深度排序是非常重要的, 这样离镜头近才画在远处物体的前面. 我们不会希望看到远处的山把近在眼前的建筑给挡住了!
如今有如下排序方法得到了广泛的应用:
深度缓冲 (也叫做 z-buffering)
画家算法
不幸的是, 每种都有其局限性. 为了达到好的结果, 大多数引擎是把三种方法结合起来使用的.而这里只讨论本引擎使用的深度缓冲.
为什么有透视。因为眼球是个透镜。假如地球生物进化的都靠超声波探测空间,那也许眼睛就不会有变成球,而是其他形状...
为什么有人玩3D头晕?其中一个重要的作用是,眼球不完全是个透镜。所以当视野大于60度,屏幕四周投影的变形就比眼球投影视网膜利害多。而且人脑习惯了矫正眼球投影的信息。突然有个屏幕上粗糙的模拟眼球成像,大脑还真一时适应不了。
Z BUFFER数值计算,以及PERSPECTIVE PROJECTION MATRIX设置,使用D3D或者OPENGL,可以直接让显卡完成这些工作。但是弄清Z BUFFER如何计算,以及PROJECT MATRIX的原理。对于进行各种高级图像处理,非常有用。例如shadowmap的应用。目前为了得到好的shadowmap,很多人在如何加大shadowmap精度做了很多努力(改变生成shadowmap时的perspective project matrix来生成精度更合理的shadowmap) 。比如透视空间的perspective shadow map,light空间的Light-space perspective shadow,perspective shadowmap变种Trapezoidal shadow maps,改正交投影为对数参数投影的 Logarithmic Shadow Maps。另外,Doom3中shadow volume采用的无限远平面透视矩阵绘制stencil shadow volume。都需要对perspective projection有透彻了解。
... 查看全文 | 发表评论