【GAMES101】Lecture 20 光场

2024-02-10 18:04
文章标签 20 lecture 光场 games101

本文主要是介绍【GAMES101】Lecture 20 光场,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

目录

光场(Light Field / Lumigraph)

广场照相机


光场(Light Field / Lumigraph)

我们在三维的世界中从一个观测点出发看到这么一幅二维的画面

如果有这么一副画布可以完美的显示出从观察点看到的画面,那用这幅画布去替换周围的世界而使你感觉不到有什么不一样,这就是虚拟现实技术

我们能看到这个世界是因为周围有光线进入我们的视网膜,就可以用一个全光函数(The Plenoptic Function)来描述我们看到的东西

所谓全光函数,就是我往三维中某个方向看去会有不同的光进入我的视网膜,那就是这样一个关于空间角的一个函数返回光的强度

 但是这个世界是有颜色的,也就是对于不同波长的光会有不同的值,所以要加上光的波长

周围的事物是会发生变化的,此刻和前一刻的光可能会不一样,因此还需要加上时间

不同的观测点看到的世界也会有所不同,因此还需要加上观察点的位置

在世界中定义一条光线需要光线上某个点的位置和光线的方向,也就是五个维度的,三个维度的位置,和两个维度的方向确定一条光线

但是还可以通过两个点来决定一条光线,此时的参数是四维的,为什么是四维的后面说

那么光场是什么?对于一个物体,用一个包围盒包住它,用包围盒记录下物体表面每个点出来的光线信息,记录下光的方向,然后包围盒上的点可以用二维的(s,t)来表示,方向可以用(\theta\phi)来表示,这就是光场(我寻思这个包围盒不是立体的吗,怎么点的位置可以用二维的(s,t)来表示?我思考了一下,这个包围盒只有表面有用,应该是可以把它展开,那么表面在立体中是三维的存就会可以用二维确定)

有了这个光场之后,就不再需要这个物体本身了,就把这个包围盒当成是黑盒,不用关心里面是什么,反正我从外面看到的就是这个物体发出来的光,因为这个光场已经记录下物体表面所有点发出来的光了

对于包围盒中的一条光线可以通过两个点来确定,这两个点可以通过一个对称面上的二维坐标确定下来

假设摄像机在右边,那从(u,v)某个点连接(s,t)上的所有点的光线所形成的画面就是从某个角度看向的物体画面

而从(s,t)上某个点连接(u,v)上所有点的光线则是对应于物体的某点从各个方向看到的样子

广场照相机

普通照相机在拍照完成之后呢这个成像基本就已经定下来了,而光场照相机可以先拍照后期可以动态调整聚焦来决定哪块模糊哪块清晰,那这个是怎么做到的呢?顾名思义就是用的光场的原理

简单来说,光场照相机记录的是整个光场的信息,普通照相机即时成像在传感器上,那每个像素的值就固定下来是这个来着各个方向的光的平均值,但是光场照相机把每个像素换成薄透镜,把传感器放后面一点,这样聚焦的光线经过薄透镜后会再次散开落在后面的传感器上,这样记录下来的就是来着各个方向的光,即整个光场的信息,后期利用光场可以实现动态调焦的效果

这篇关于【GAMES101】Lecture 20 光场的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

系统架构师考试学习笔记第三篇——架构设计高级知识(20)通信系统架构设计理论与实践

本章知识考点:         第20课时主要学习通信系统架构设计的理论和工作中的实践。根据新版考试大纲,本课时知识点会涉及案例分析题(25分),而在历年考试中,案例题对该部分内容的考查并不多,虽在综合知识选择题目中经常考查,但分值也不高。本课时内容侧重于对知识点的记忆和理解,按照以往的出题规律,通信系统架构设计基础知识点多来源于教材内的基础网络设备、网络架构和教材外最新时事热点技术。本课时知识

【C++学习笔记 20】C++中的智能指针

智能指针的功能 在上一篇笔记提到了在栈和堆上创建变量的区别,使用new关键字创建变量时,需要搭配delete关键字销毁变量。而智能指针的作用就是调用new分配内存时,不必自己去调用delete,甚至不用调用new。 智能指针实际上就是对原始指针的包装。 unique_ptr 最简单的智能指针,是一种作用域指针,意思是当指针超出该作用域时,会自动调用delete。它名为unique的原因是这个

【JavaScript】LeetCode:16-20

文章目录 16 无重复字符的最长字串17 找到字符串中所有字母异位词18 和为K的子数组19 滑动窗口最大值20 最小覆盖字串 16 无重复字符的最长字串 滑动窗口 + 哈希表这里用哈希集合Set()实现。左指针i,右指针j,从头遍历数组,若j指针指向的元素不在set中,则加入该元素,否则更新结果res,删除集合中i指针指向的元素,进入下一轮循环。 /*** @param

【语句】如何将列表拼接成字符串并截取20个字符后面的

base_info = "".join(tree.xpath('/html/head/script[4]/text()'))[20:] 以下是对这个语句的详细讲解: tree.xpath('/html/head/script[4]/text()')部分: tree:通常是一个已经构建好的 HTML 文档树对象,它是通过相关的 HTML 解析库(比如 lxml)对 HTML 文档进行解

C++20中支持的非类型模板参数

C++20中支持将类类型作为非类型模板参数:作为模板参数传入的对象具有const T类型,其中T是对象的类型,并且具有静态存储持续时间(static storage duration)。       在C++20之前,非类型模板参数仅限于:左值引用类型、整数类型、指针类型、指向成员类型的指针、枚举类型、std::nullptr_t。在C++20中,它已扩展并支持:浮点类型、字面量类类

GAMES101(5~6节,光栅化)

光栅化Rasterization 透视投影已知field和近平面,如何推导宽度? 根据三角函数:tan field / 2 = (height / 2) / ||n||近平面,从而可以求出高度 因为知道宽高比,所以可以求出宽度,高度 * 宽/高 视口变换 经过MVP变换,顶点位于正则化空间坐标,是一个在 [-1,1] ^3 之间的 x, y, z 坐标构成(标准立方体),我们下一步需要做

Google 实现量子霸权!3分20秒运算,世界第一超算要跑1万年!

大数据技术与架构 点击右侧关注,大数据开发领域最强公众号! 暴走大数据 点击右侧关注,暴走大数据! By  大数据技术与架构 场景描述:谷歌宣称“量子霸权”已经实现,他们首次在实验中证明了量子计算机对于传统架构计算机的优越性:在世界第一超算 Summit 需

UI 自动化技能:20个实战技巧!测试工程师必看!

大家周五 好啊!忙碌了一周,又可以懒洋洋躺在沙发上了~~~ 又到了每年的金九银十了,今天聊聊如何提升UI自动化话题... 你是否在求职过程中感受到UI自动化的技能不足? 随着测试行业的发展,UI自动化测试已成为每位测试工程师的必修课。无论你是想提升现有的测试效率,还是在找工作中获得竞争优势,掌握UI自动化技能都能为你带来巨大的帮助。那么,如何快速提升这些技能呢? UI(用户界面)自

【大数据Java基础- Java并发 20】深入分析synchronized的实现原理

记得刚刚开始学习Java的时候,一遇到多线程情况就是synchronized,相对于当时的我们来说synchronized是这么的神奇而又强大,那个时候我们赋予它一个名字“同步”,也成为了我们解决多线程情况的百试不爽的良药。但是,随着我们学习的进行我们知道synchronized是一个重量级锁,相对于Lock,它会显得那么笨重,以至于我们认为它不是那么的高效而慢慢摒弃它。 诚然,随着Javs S

xAI巨无霸超级计算机上线:10万张H100 GPU,计划翻倍至20万张

在短短四个多月的时间里,埃隆·马斯克的X公司(前身为Twitter)推出了世界上最强劲的人工智能训练系统。名为Colossus的超级计算机使用了多达10万张NVIDIA H100 GPU进行训练,并计划在未来几个月内再增加5万张H100和H200 GPU。 “本周末,xAI团队启动了我们的Colossus 10万张H100训练集群,”埃隆·马斯克在X平台上写道,“从头到尾只用了122天。Co