当前位置: 首页 > 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.xdnf.cn/news/1288081.html

相关文章:

  • 下一代防火墙技术
  • 【KO】android 面试 算法
  • 数字气压传感器,筑牢汽车TPMS胎压监测系统的精准感知基石
  • 西门子S7-200与S7-1200通过PPI以太网模块通讯,赋能汽车制造行业发展
  • 如何在 Ubuntu 24.04 LTS Linux 中安装 JSON Server
  • WebAssembly的原理与使用
  • 前端最新Vue2+Vue3基础入门到实战项目全套教程,自学前端vue就选黑马程序员,一套全通关!笔记
  • Tauri Qt孰优孰劣
  • 计算机毕设不知道选什么题目?基于Spark的糖尿病数据分析系统【Hadoop+Spark+python】
  • 数据结构 二叉树(2)堆
  • 91、23种经典设计模式
  • AI大模型基础:BERT、GPT、Vision Transformer(ViT)的原理、实现与应用
  • 农业智慧大屏系统 - Flask + Vue实现
  • 飞算AI:企业智能化转型的新引擎
  • 嵌入式硬件——ARM
  • 【虚拟机】VMwareWorkstation17Pro安装步骤
  • 三维工厂设计软件 AutoCAD Plant 3D 安装图文教程
  • Nginx 启用 HTTPS:阿里云免费 SSL 证书详细图文教程(新手0.5小时可完成)
  • C# 基于halcon的视觉工作流-章29-边缘提取-亚像素
  • AI Agent——基于 LangGraph 的多智能体任务路由与执行系统实战
  • 蓝桥杯电子赛----嵌入式赛道备赛LED
  • lesson36:MySQL从入门到精通:全面掌握数据库操作与核心原理
  • Python初学者笔记第二十四期 -- (面向对象编程)
  • 计算机网络1-7:第一章 概述 章节小结
  • 用 Apache Iceberg 与 Apache Spark 在 Google Cloud 打造高性能、可扩展的数据湖仓
  • 【Java Web 快速入门】九、事务管理
  • 【论文阅读】RestorerID: Towards Tuning-Free Face Restoration with ID Preservation
  • 【游戏优化笔记】开发中如何减少建筑和树木等环境元素的资源消耗?
  • 【跨服务器的数据自动化下载--安装公钥,免密下载】
  • 【CSS3】录音中。。。