分布式光线追踪模拟景深效果

2024-01-25 05:48

本文主要是介绍分布式光线追踪模拟景深效果,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

本文为spanzhang(张友邦)原创,发布地址为:http://blog.csdn.net/spanzhang,转载请注明出处。

如果你还不知道景深是什么意思,可以随便找本摄影的入门书籍看看。景深是在大光圈下显示的特别的摄影效果,它能把焦点前后的景物虚化(所谓的焦外成像,Out of Focus),虚化的形状和快门的孔形有关。当光圈孔很小的时候,景深很大,光圈大的时候景深小。这里有一个关于景深及其计算的资料:http://www.blueidea.com/photo/skill/2003/215.asp。

分布式光线追踪(Distributed Ray Tracing)在模拟Translucency、Glossy表面、软阴影(Soft Shadow)、景深(Depth of Field)、运动模糊(Motion Blur)等方面有强力表现。它和照相机模型非常相似,只不过计算的时候光线是从胶片(投影平面)上发出来的,然后经过透镜射入场景中。昨天抽时间研究了一下DRT模拟景深,又回忆了一下高中时候的透镜方面的知识。幸好当时的物理还学得可以,这么多年没用还是把需要用到的点给回忆起来了。建立了一个很简单的凸透镜模型,把几个参数一定,在原来的普通光线追踪的基础上改了一下得到如下的结果:


没有景深效果的场景,所有的光源都没有开启软阴影。采用6 x 6的regular grid采样做的anti-aliasing。


光圈大小0.06,焦距比例2.7,焦点在前景上。光圈有点大,背景模糊的不行了。可以从散焦影像隐约的看出快门的形状是方形的。


光圈还是0.06,焦距比例为0.5,定位在背景上,前景模糊的很厉害。


光圈没变,焦距为1.6,定位在中间的球体上,前景背景都模糊了。


之前对每个投影点采用的是stochastic方式采样200条光线,这张图片使用的是regular grid采样81个点。可以看出,远景的模糊上要差一点点,但是大部分地方都要好过前一张。

可以看出,DRT在模拟焦外成像方面效果很不错。光线追踪以一种更加接近实际的模式来模拟光线和环境的交互,应该说它更像照相机一些。另外,由于每条光线可以并行处理,非常适合多核计算环境。但一个稍微复杂一点的模拟模型就会导致大量的光线产生(所谓光线爆炸),这也是光线追踪一直没有大规模进入电影级应用的原因。但总的来说,前景还是乐观的。基于光线追踪的应用会越来越多的。嗯,会的。

这篇关于分布式光线追踪模拟景深效果的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/642265

相关文章

python运用requests模拟浏览器发送请求过程

《python运用requests模拟浏览器发送请求过程》模拟浏览器请求可选用requests处理静态内容,selenium应对动态页面,playwright支持高级自动化,设置代理和超时参数,根据需... 目录使用requests库模拟浏览器请求使用selenium自动化浏览器操作使用playwright

Jenkins分布式集群配置方式

《Jenkins分布式集群配置方式》:本文主要介绍Jenkins分布式集群配置方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录1.安装jenkins2.配置集群总结Jenkins是一个开源项目,它提供了一个容易使用的持续集成系统,并且提供了大量的plugin满

MySQL追踪数据库表更新操作来源的全面指南

《MySQL追踪数据库表更新操作来源的全面指南》本文将以一个具体问题为例,如何监测哪个IP来源对数据库表statistics_test进行了UPDATE操作,文内探讨了多种方法,并提供了详细的代码... 目录引言1. 为什么需要监控数据库更新操作2. 方法1:启用数据库审计日志(1)mysql/mariad

Python使用pynput模拟实现键盘自动输入工具

《Python使用pynput模拟实现键盘自动输入工具》在日常办公和软件开发中,我们经常需要处理大量重复的文本输入工作,所以本文就来和大家介绍一款使用Python的PyQt5库结合pynput键盘控制... 目录概述:当自动化遇上可视化功能全景图核心功能矩阵技术栈深度效果展示使用教程四步操作指南核心代码解析

Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)

《Golang实现Redis分布式锁(Lua脚本+可重入+自动续期)》本文主要介绍了Golang分布式锁实现,采用Redis+Lua脚本确保原子性,持可重入和自动续期,用于防止超卖及重复下单,具有一定... 目录1 概念应用场景分布式锁必备特性2 思路分析宕机与过期防止误删keyLua保证原子性可重入锁自动

Kotlin Compose Button 实现长按监听并实现动画效果(完整代码)

《KotlinComposeButton实现长按监听并实现动画效果(完整代码)》想要实现长按按钮开始录音,松开发送的功能,因此为了实现这些功能就需要自己写一个Button来解决问题,下面小编给大... 目录Button 实现原理1. Surface 的作用(关键)2. InteractionSource3.

Python模拟串口通信的示例详解

《Python模拟串口通信的示例详解》pySerial是Python中用于操作串口的第三方模块,它支持Windows、Linux、OSX、BSD等多个平台,下面我们就来看看Python如何使用pySe... 目录1.win 下载虚www.chinasem.cn拟串口2、确定串口号3、配置串口4、串口通信示例5

基于MongoDB实现文件的分布式存储

《基于MongoDB实现文件的分布式存储》分布式文件存储的方案有很多,今天分享一个基于mongodb数据库来实现文件的存储,mongodb支持分布式部署,以此来实现文件的分布式存储,需要的朋友可以参考... 目录一、引言二、GridFS 原理剖析三、Spring Boot 集成 GridFS3.1 添加依赖

使用WPF实现窗口抖动动画效果

《使用WPF实现窗口抖动动画效果》在用户界面设计中,适当的动画反馈可以提升用户体验,尤其是在错误提示、操作失败等场景下,窗口抖动作为一种常见且直观的视觉反馈方式,常用于提醒用户注意当前状态,本文将详细... 目录前言实现思路概述核心代码实现1、 获取目标窗口2、初始化基础位置值3、创建抖动动画4、动画完成后

uniapp小程序中实现无缝衔接滚动效果代码示例

《uniapp小程序中实现无缝衔接滚动效果代码示例》:本文主要介绍uniapp小程序中实现无缝衔接滚动效果的相关资料,该方法可以实现滚动内容中字的不同的颜色更改,并且可以根据需要进行艺术化更改和自... 组件滚动通知只能实现简单的滚动效果,不能实现滚动内容中的字进行不同颜色的更改,下面实现一个无缝衔接的滚动