当前位置: 首页 > news >正文

第23章,景深:技术综述

一,定义:
中景:物体聚焦的范围(即清晰成像的范围)。
景深:在中景之外,都会成像模糊,即景深。景深通常用来指示对场景的注意范围,并提供场景深度的感觉。
背景:比中景远的区域。
近景:比近景近的区域。
焦平面:光穿过摄像机透镜(或人眼睛的晶体),会聚焦到胶片(或人的视网膜)上的一个点。此时,光源与透镜的距离,即为焦平面。
模糊圈Coc:如果光源没在焦平面上,则投影到胶片上的区域不再是一个点,而是一个模糊圈。即,模糊圈。CoC的直径与透镜尺寸和偏离焦平面的距离成正比。
由于Coc的直径与透视尺寸成正比,那么,如果透镜尺寸为0的时候,Coc的直径也是0,即针孔照相机没有景深。

二,模糊圈的计算
在这里插入图片描述

在世界空间中,摄像机到物体的距离产生的模糊圈可以用摄像机参数来计算。
CoC = abs(aperture * (focallength*(objectdistance - planeinfocus)) / (objectdistance * (planeinfocus - focallength)))
物距能通过z缓冲区的z值计算:
objectdistance = -zfar * znear / (z * (zfar - znear)- zfar)
模糊圈也能通过z缓冲值,以及综合摄像机参数的缩放项和偏置项来计算
CoC = abs(z * CocScale + CocBias)
用摄像机参数计算缩放和偏置项
CocScale = (aperture * focallength * planeinfocus * (zfar - znear)) / (planeinfocus - focallength 0 * znear * zfar)
CocBias = (aperture * focallength * (znear - planeinfocus) ) / ((planeinfocus * focallength ) * znear)
三、主要技术
Z缓冲区技术上更适用于在目前的图形硬件上实时渲染。
1,穿过(非针孔)透明表面的分布式光线跟踪(Cook等,1984年)
对穿过透镜的光线进行恰当的统计分布,能够得到最正确的景深。因为这样真实地模拟了光线在摄像机和场景中的传输(正确着色而无须实时处理时)
2,累积缓冲区技术
累计缓冲区是高精度彩色缓冲区,在实时渲染中通常用它来累加多个图像。
摄像机从不同的位置到穿过透镜来多次渲染场景,然后使用累计缓冲区混合结果。所混合的渲染遍越多,看起来就越好,与“真实”景深越接近。但是如果遍数太多的遍数,丧失实时操作的可能。所需要的遍数与模糊圈的面积成正比。

3,多层次的渲染
理想情况下,把场景中各个物体分层排序,而层的深度互不重叠,那么就能够基于各层所代表的深度对每层进行模糊。然后把这些层组成最终的图像,给出景深的印象。
缺点是:
1,同层中的所有像素都均匀地进行模糊。当物体的深度跨度太大时,它的景深就显示不出来
2,物体跨越的深度范围大时,不能很好分割场景。
所以一般不用。
4,向前映射的Z缓冲景深。
适用于任意场景,可以给渲染好的图像和影片加上景深。
1,把像素的彩色值和深度值存储到缓冲区,
2,深度缓冲值为那个像素确定Coc。
3,把一个圆圈混合到帧缓冲区内,圆圈的颜色就是像素的颜色,圆圈的直径等于Coc,而圆圈的面积与alpha值成反比。
4,为了避免模糊像素影响它前面的清晰像素,只允许那个像素与离摄像机更远的相邻像素混合。
5,最后对该像素的alpha值重规范化。
6,渲染数以百万计的精灵(固定的彩色圆),不能很好的对应于硬件实时渲染。
5,反向映射的z缓冲区技术
1,存储一个颜色和深度的图像
2,逐个改变像素的深度值,去模糊被渲染的场景。取z值和焦平面z值较大的值作为模糊级别。
3,对于有mipmaps的场景纹理,以模糊圈作为导数执行纹理查询,决定从哪个mipmap级别读取。
4,可能会有几种失真: 。
(1)由于深度的不连续性产生失真(最严重,焦平面不能在场景的远处)
(2)双线内插的失真
(3)由于像素扩散产生的失真

http://www.lryc.cn/news/619207.html

相关文章:

  • 【Python办公】Mermaid代码转图片工具 - Tkinter GUI版本
  • Apache虚拟主机三种配置实战
  • 运维学习Day22——Anisible自动化与基本使用
  • JavaEE 初阶第十八期:叩开网络世界的大门
  • 随身WIFI每个月需要交钱吗?流量卡还是随身WIFI哪个更好用?正规随身WIFI品牌有哪些?谁才是真性价比之王?
  • 当“超级高速“遇见“智能大脑“:5G-A×AI如何重塑万物智联时代
  • Linux文件系统:从虚拟接口到物理实现的架构解析
  • 存储过程作为系统逻辑核心的架构思考 —— 以 SaaS 系统为例
  • 【ROS2】ROS2 基础学习教程 以lerobot-so100为例
  • 【前端:Html】--3.进阶:图形
  • 基于RAII的智能指针原理和模拟实现智能指针
  • Python函数篇:从零到精通
  • 能刷java题的网站
  • C语言—数组和指针练习题合集(二)
  • [激光原理与应用-256]:理论 - 几何光学 - CMOS与CCD传感器成像原理比较
  • 安卓主题定制实践:17.45MB轻量级主题引擎技术解析
  • python --- 基础语法(1)
  • 为什么我换了项目管理软件?
  • 简单的双向循环链表实现与使用指南
  • Visual Studio中VC++目录、C/C++和链接器配置的区别与最佳实践
  • 无人机智能返航模块技术分析
  • 【前端Vue】如何在log-viewer组件中添加搜索定位功能
  • C语言中关于普通变量和指针变量、结构体包含子结构体或包含结构体指针的一些思考
  • 调整UOS在VMware中的分辨率
  • 广东省省考备考(第七十四天8.12)——资料分析、数量关系(40%-70%正确率的题目)
  • MySQL 数据库表操作与查询实战案例
  • 猫头虎AI分享|智谱直播开源其最新视觉模型:GLM-4.5V,多模态,支持图像、视频输入
  • 一个删掉360安全卫士的方法——Win+R
  • 【代码随想录day 17】 力扣 98.验证二叉搜索树
  • 计算机视觉(6)-自动驾驶感知方案对比