为什么要学“采样”?

这个问题的答案估计很多。每个人都可能自己的答案,当然也有官方标准的答案。

别人的答案、或者官方标准的答案,与我何干?

我只是在学习“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)相关推荐

  1. JavaScript学习(七十)—函数中this的指向问题

    JavaScript学习(七十)-函数中this的指向问题 一.这些this的指向,是当我们调用函数的时候确定的,调用方式的不同决定了this的指向不同,一般指向我们的调用者

  2. 【genius_platform软件平台开发】第七十九讲:Linux系统中可执行程序后台运行的几种方式

    [genius_platform软件平台开发]第七十九讲:Linux系统中可执行程序后台运行的几种方式 1. 问题描述 2. & 符号 3. nohup指令 4. ctrl + z.jobs. ...

  3. 【Microsoft Azure 的1024种玩法】七十四.五分钟在Azure Virtual Machines中快速部署一套软件项目管理及自动构建工具

    [简介] Apache Maven由 Apache 软件基金会所提供的一个软件项目管理及自动构建工具,Maven 为开发者提供了一套完整的构建生命周期框架.开发团队几乎不用花多少时间就能够自动完成工程 ...

  4. Tsukinai的第七十四个程序(输出字符串中的元音字母)

    Tsukinai的第七十四个程序 写一个函数,将一个字符串中的元音字母复制到另一个字符串,然后输出. 程序的运行示例如下: 提示信息:"\n输入字符串:" 字符串中的元音字母是eo ...

  5. (七十六):Masked Autoencoders Are Scalable Vision Learners

    (七十六):Masked Autoencoders Are Scalable Vision Learners Abstract 1. Introduction 2. Related Work 3. M ...

  6. GNN教程:DGL框架中的采样模型!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:秦州,算法工程师,Datawhale成员 引言 本文为GNN教程的 ...

  7. 神经网络七十年:回顾与展望

    前言 在七十年的发展历程中,神经网络曾历经质疑.批判与冷落,同时也几度繁荣并取得了许多瞩目的成就.本期分享一篇2016年发表在计算机学报的中文神经网络七十年综述供读者参考.该综述回顾了神经网络的发展历 ...

  8. 科普丨浅谈人工神经网络跌宕起伏七十年

    人工神经网络在过去的七十年的时间里数次起起伏伏,几十年间人们一直在追求机器的智能化,在近几年的研究中,随着数据量的增加和深度学习神经网络算法的研究和进步,表明了深度学习是很有效的,但是仍有其局限性.而 ...

  9. 七十六、Python | Leetcode二分查找和分治算法系列

    @Author:Runsen @Date:2020/7/4 人生最重要的不是所站的位置,而是内心所朝的方向.只要我在每篇博文中写得自己体会,修炼身心:在每天的不断重复学习中,耐住寂寞,练就真功,不畏艰 ...

最新文章

  1. 宅家学习秘密武器!让时间从视频流和朋友圈中回到程序员的视野中吧!
  2. JavaWeb学习之路——SSM框架之Spring(五)
  3. Exception in thread “main“ java.lang.IllegalArgumentException: http://www.dmg.org/PMML-4_4(没搞定)
  4. 计算机视觉算法工程师 笔试,深度学习算法工程师笔试题目
  5. 牛客练习赛44 C 小y的质数 (数论,容斥定理)
  6. 新浪sae平台进行数据库的连接
  7. eclipse各种操作汇总
  8. git管理工具使用-本地通过git命令拉取项目
  9. 微软 smtp 服务器,配置 SMTP 服务器
  10. php数组倒排,js中数组倒序排列的方法
  11. 埃及分数c语言实训报告,C语言实例 将真分数分解为埃及分数
  12. 生活所迫?那些年摆过的地摊,有你么?
  13. 自然语言14_Stemming words with NLTK
  14. 【产品】禅道项目管理核心思想
  15. DICTATOR第三周栈与队列作业
  16. dayjs汉化,dayjs中文,dayjs转中文,dayjs显示中文
  17. 值得一看的电脑教程下载
  18. 【缓存】@Caching和@CacheConfig
  19. 本地http://localhost打不开怎么办
  20. [软件人生]关于我,我的未来,我的思考

热门文章

  1. Android--我的Butterknife黄油刀怎么找不到控件了!!!
  2. jquery SELECT 操作
  3. 「Android」Lenovo K860 root脚本备忘
  4. soft music
  5. 2020收官--Filter4Go
  6. Mysql Data type
  7. Vue小案例 之 商品管理------添加商品
  8. Reactor模型-单线程版
  9. Ubuntu下安装 Mysql
  10. NGINX+PHP+ZABBIX,推荐