图形学离线渲染中常用的透视摄像机模型时根据小孔成像的原理建立的,其实现通常是从eye向成像平面上发射ray,并把trace这条ray的结果作为成像平面上对应交点的采样结果。即:
现实中的镜头拍摄的图像有景深(Depth of field)的效果,譬如:
显然,上图中的耳机被放在摄像机的焦平面附近,成像很清晰;背景中的景物则离焦平面较远,呈现出模糊的效果。对离线渲染而言,这一效果有利于加强渲染结果的真实性和层次感。但之前提到的摄像机模型过于简单,要得到景深,需要更精确的摄像机模型。
上图是网络上给出的关于景深的一张示意图,看起来复杂骇人。但稍微分析就能知道,使得不在焦平面上的景物显得模糊的最根本原因恰恰是焦平面的概念本身,如下图——
可以看到,假如在原来的透视摄像机模型中加入一个凸透镜,那么成像过程将不再是“一根”光线穿过小孔到达成像平面上的一点,而是许多光线透过凸透镜汇聚到成像平面上的一点。
显然,假如有一物体正好在焦平面上,那么从上面某一点发射的光线通过凸透镜在成像平面上也会汇聚于一点,于是就得到了清晰的图像。但是,当物体不在焦平面上时,汇聚到成像平面上某一点的光线将不再全部来自于物体上的一点,而是来自于物体上的一小片区域,这就形成了模糊的效果,也就是最终看到的景深。
详细解决方案
基于光线追踪的渲染中景深(Depth of field)效果的实现
热度:29 发布时间:2023-09-30 14:48:54.0
相关解决方案
- Unknown table 'book' in field list
- Caused by: org.hibernate.PropertyNotFoundException: field not
- The static field DBmysql.getline should be accessed in a static way解决方案
- cannot access private field 'key' here解决办法
- 执行“Alter table“报出” Syntax error in field definition“异常
- alv field 是否可以进行日期选择解决方法
- OldDbException: Too many field defined.解决方案
- jackson json 变换Bean, Bean 里没有对应的值 jackson Unrecognized field
- MS, in CS, EE or related field?该怎么处理
- MS, in CS, EE or related field?解决方法
- awk: Field is not correct
- java.sql.SQLException: Unknown column 'user0_.id' in 'field list'
- 如何获取 Field Summary里的数据阿
- Cannot make a static reference to the non-static field 是什么东东
- EXT-Ext.form.field.HtmlEditor组件编辑器方式示例
- ADODB.Field 异常
- 下一页中ADODB.Field 异常 '80020009'
- 关于dedecms 中[field:arcurl/]标签链接地址是如何生成的.
- unknown column field list解决方案
- 新手半夜求解:Unknown column 'qq' in 'field list'如何解决
- EXT-Ext.form.field.Trigger示范
- DEDE [field:global name=autoindex/] 按序列号递加
- 织梦dedecms [field:global name=autoindex/]标签运用
- DEDE提示"Unknown column 'weight' in 'field list"的解决方法
- DEDE提示"Unknown column 'weight' in 'field list"的解决方法
- EXT-Extjs Ext.form.field.Date示范
- [Ext JS 四] 实战之 Picker 和 Picker Field
- jackson json 变换Bean, Bean 里没有对应的值 jackson Unrecognized field
- 怎么使页面所有text field 响应一个lostfocus 方法
- jasperreport错误 :Error retrieving field value from bean : userId