问题七十:计算机图形中的采样(Sampling)
为什么要学“采样”?
这个问题的答案估计很多。每个人都可能自己的答案,当然也有官方标准的答案。
别人的答案、或者官方标准的答案,与我何干?
我只是在学习“Ambient Occlusion”时需要对光线撞击点处的上半球面进行采样,以便得到阴影光线的方向。仅此而已。
参考书籍《Ray Tracing from the Ground Up》。
书上有关于如下知识点的详细介绍,咱不赘述。
在这里,我们只做三件事情:
1,对比各种采样技术:罗列各种采样技术,对比它们在单位正方形上的采样结果。
2,“采样”类的架构:定义Sampler为基类,各种采样技术对应的类都是继承Sampler。明确子类和父类的“分工”。
3,映射采样点:将采样点从单位正方形映射到单位圆和单位半球(这个结果后面会用到)。
70.1 采样技术的分类
我们这里会罗列的采样技术有:Random Sampling、Jittered Sampling、n-Rooks Sampling、Multi-Jittered Sampling、Hammersiley Sampling。
对于这些“奇奇怪怪”的采样技术,我们需要知道的是:
它们各自采用自己的方式来做同一件事情,那就是对单位正方形进行采样,最后的结果都是得到单位正方形上所有采样点的(二维)坐标(如下方红色方框示意)。
顺便说一句:后续,我们在“映射采样点”章节做的事情就是:将单位正方形上得到的采样点引射到其他图形上去。
70.1.1 Random Sampling
70.1.2 Jittered Sampling
70.1.3 n-Rooks Sampling
70.1.4 Multi-Jittered Sampling
70.1.5 Hammersley Sampling
70.2 程序架构
Sampler类的定义:
Multi-Jittered Sampling类的定义:
70.3 采样点映射
70.3.1将单位正方形上的采样点映射到单位圆上
70.3.2将单位正方形上的采样点映射到单位半球面上
若原采样点是通过Hammersley Sampling得到的,映射后的结果如下:
若原采样点是通过Regular Sampling得到的,映射后的结果如下:
70.4 其他说明
Referrance
[1]. Kevin Suffern, Ray Tracing from theGround Up, A K Peters Ltd, 2007.
问题七十:计算机图形中的采样(Sampling)相关推荐
- JavaScript学习(七十)—函数中this的指向问题
JavaScript学习(七十)-函数中this的指向问题 一.这些this的指向,是当我们调用函数的时候确定的,调用方式的不同决定了this的指向不同,一般指向我们的调用者
- 【genius_platform软件平台开发】第七十九讲:Linux系统中可执行程序后台运行的几种方式
[genius_platform软件平台开发]第七十九讲:Linux系统中可执行程序后台运行的几种方式 1. 问题描述 2. & 符号 3. nohup指令 4. ctrl + z.jobs. ...
- 【Microsoft Azure 的1024种玩法】七十四.五分钟在Azure Virtual Machines中快速部署一套软件项目管理及自动构建工具
[简介] Apache Maven由 Apache 软件基金会所提供的一个软件项目管理及自动构建工具,Maven 为开发者提供了一套完整的构建生命周期框架.开发团队几乎不用花多少时间就能够自动完成工程 ...
- Tsukinai的第七十四个程序(输出字符串中的元音字母)
Tsukinai的第七十四个程序 写一个函数,将一个字符串中的元音字母复制到另一个字符串,然后输出. 程序的运行示例如下: 提示信息:"\n输入字符串:" 字符串中的元音字母是eo ...
- (七十六):Masked Autoencoders Are Scalable Vision Learners
(七十六):Masked Autoencoders Are Scalable Vision Learners Abstract 1. Introduction 2. Related Work 3. M ...
- GNN教程:DGL框架中的采样模型!
↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:秦州,算法工程师,Datawhale成员 引言 本文为GNN教程的 ...
- 神经网络七十年:回顾与展望
前言 在七十年的发展历程中,神经网络曾历经质疑.批判与冷落,同时也几度繁荣并取得了许多瞩目的成就.本期分享一篇2016年发表在计算机学报的中文神经网络七十年综述供读者参考.该综述回顾了神经网络的发展历 ...
- 科普丨浅谈人工神经网络跌宕起伏七十年
人工神经网络在过去的七十年的时间里数次起起伏伏,几十年间人们一直在追求机器的智能化,在近几年的研究中,随着数据量的增加和深度学习神经网络算法的研究和进步,表明了深度学习是很有效的,但是仍有其局限性.而 ...
- 七十六、Python | Leetcode二分查找和分治算法系列
@Author:Runsen @Date:2020/7/4 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...
最新文章
- 宅家学习秘密武器!让时间从视频流和朋友圈中回到程序员的视野中吧!
- JavaWeb学习之路——SSM框架之Spring(五)
- Exception in thread “main“ java.lang.IllegalArgumentException: http://www.dmg.org/PMML-4_4(没搞定)
- 计算机视觉算法工程师 笔试,深度学习算法工程师笔试题目
- 牛客练习赛44 C	小y的质数 (数论,容斥定理)
- 新浪sae平台进行数据库的连接
- eclipse各种操作汇总
- git管理工具使用-本地通过git命令拉取项目
- 微软 smtp 服务器,配置 SMTP 服务器
- php数组倒排,js中数组倒序排列的方法
- 埃及分数c语言实训报告,C语言实例 将真分数分解为埃及分数
- 生活所迫?那些年摆过的地摊,有你么?
- 自然语言14_Stemming words with NLTK
- 【产品】禅道项目管理核心思想
- DICTATOR第三周栈与队列作业
- dayjs汉化,dayjs中文,dayjs转中文,dayjs显示中文
- 值得一看的电脑教程下载
- 【缓存】@Caching和@CacheConfig
- 本地http://localhost打不开怎么办
- [软件人生]关于我,我的未来,我的思考