Foundations of 3D Computer Graphics_Chapter11_Depth

11.1 Visibility

      In then physical world,if object A is in the front of object B,then the light  from object B will be blocked by object A before reaching the camera.and it will not appear in the image(for example, the blue hexagon of figure 10.2).In the computer graphics,we need to model this computationally.


     在物理世界,A在B的前面,来自B的光在到达相机之前会被会被B遮挡。

B不会出现图像上,在计算机图形学中,我们需要模拟这个计算过程。




  有很多中方法可以确保对相机可见的物体出现在图像中。一种思想是根据三角形面片的深度进行排序,然后按照从后往前的方式进行绘制。这个方法的思想是在最前面的面片会遮挡后边的面片,从而产生正确的渲染结果。但是,这种所谓的画家方法同样也有一些难点,例如,一个唱场景中可能包含交叉的面片。也可能包含非交叉的面片。



      另外一个非常常用的方法是光线投射,我们会计算场景的每个点,与投射光线最近的交点的点会被进行到下一级的渲染,这个方法会在20章进行讨论。

      在基于光栅化的渲染引擎中,比如Opengl, 我们使用某种称作Z-buffer的机制进行可见性计算。在这个方法中,

三角形可以以任何顺序进行绘制。在帧缓存中,每个像素不仅存储着颜色信息,同时也存储着深度信息。当一个像素将要进行绘制时,首先与帧缓存的已经存在的深度进行比较,如果更小,则更新颜色及深度缓存,否则,放弃。

该方法能够较好的解决交叉三角形情况




         其它的一些可见性计算,例如阴影贴图,光线追踪。

          可见性计算时非常重要的,可以提前删除一些不可见的物体或者面片,减少绘制的计算量。

     11.2 Basic Mathematical Model

       这一部分主要完成投影矩阵的第三行的计算,其实在正常的投影矩阵计算是,应该包含该部分。



   在OpenGL 中我们是使用z-buffer进行可见性计算,为了使用z-buffer,我们需要一个深度值,为了得到,

对于每一个在视空间的点,我们定义一个()在裁剪空间的的坐标。我们打算把Zn与深度缓存中的值做比较。



     

            

首先可以确认,Zn的值确实可以用作深度对比,

同时,我们来考虑把视坐标点通过投影矩阵转换到NDC的过程。通常情况下,这种变换既不是线性变换也不是仿射变换,我称之为3D投影变换,

下边的几段内容到11.3 不知道在讲什么


11.3 部分主要在将如何求解投影矩阵的两个参数,可是没看到推导过程,感觉是作者直接给你的结论,

    




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值