高级光线传播与高级外观建模

news2024/9/29 23:27:24

一.高级光线传播

1、无偏的

①有偏VS无偏

  • 蒙特卡洛估计出的结果的期望永远是对的

eg:PT中不管有多少样本,期望都是定积分的值

  • 有偏的:估计出的结果的期望和积分的值不一样
    • 一个特殊情况(一致的):极限定义下,会收敛到正确值

②双向路径追踪(BDPT)

  • 优点:光线传播在光源半边好算时,效果好
  • 缺点:慢

③Metropolis光线传播(MLT)

  • 用马尔科夫链的方法采样
  • 局部(local)做法
  • 优点:适合做复杂的光路(用一条光路作为种子)
  • 缺点
    • 不知道收敛的速度(无法预估渲染时间)
    • 局部→ 看起来脏

2、有偏的

①光子映射(Photon Mapping)

  • 非常擅长处理高光漫反射(SDS)路径并产生焦散
  • 两步做法
    举例一种:


    Stage1:从光源触发,知道打到diffuse表面,停在那里
    Stage:从camera开始,也打到diffuse停下,
    //Stage1&2合起来:局部密度估计,对于任意一个着色点,取n个最近的光子,计算占据的面积,然后计算光子密度
  • 细说光子映射

②VCM (Vertex Connection and Merging)

结合了光子映射和双向路径追踪

3、Instant Radiosity实时辐射度算法

  • 已经照亮的面都认为是光源,再照亮其他地方
  • 优点:快,能处理分散的场景
  • 缺点:不能做gloosy的物体

二.高级外观建模

1.非表面

①Participating media (如,云、雾):散射介质

  • 用Phase 函数定义光线如何折射
  • 如何渲染?

②Hair/fur/fiber(BCSDF)

·头发有色和无色的高光是怎么来的?

·以上效果不对→ 因为光线能穿过头发 →

·Marschner Model

·动物毛发(fur):引入骨髓质

③Granular material(颗粒材质)

.表面

①Translucent material (BSSRDF)半透明材质:

与传统的半透明材质有些不同,光线进入物体之后又发生了多次散射之后从另一个地方发射出去,这种散射方式叫做次表面散射,这个BSSRDF相比于BRDF中间的SS就是次表面散射

  • 如,玉石、水母

光线打到次表面散射的材质表面,就好像物体的底下有一个光源,为了物理上的真实,对应的上方也应该有一个光源。

BRDF与BSSRDF对比:

Cloth布料

  • 原理:不同纤维缠绕而来(fiber → Ply → Yarn )

  • 具体做法:
    • 当做表面(图1)
    • 当做Participating Media(图2)
    • 当成真正的纤维(图3)

③Detailed material (non-statistical BRDF)复杂/细节的材质

·对微表面模型的BRDF进行完善(加上现实中有的statistical normals)
    • D(h)项,正态分布和现实并不一样(图2)
    • 解决方法:一个pixel对应一个微表面(图3)

·不同的法线贴图有不同效果

  • 到此为止了? → No → 光的波动性(太难了)

3.程序化生成材质

  • 可以不用texture定义细节 → Noise function(定义在空间上的)
  • 给定任意空间中xyz,会返回一个值,可以用来生成地形,水面等等

  • 程序化生成:用一定的方式指导材质的生成,而不需要真正的生成,可以动态的查询他。
  • Houdini是先程序化生成,再拿来用。这个不用生成,直接去查询

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1472937.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【web APIs】1、(学习笔记)有案例!

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、概念二、使用步骤1.获取DOM对象2.操作元素内容3.属性修改3.1.常用属性修改3.2.控制样式属性3.3.操作类名(className) 操作CSS3.4.操作表单元素属性3.5.自定…

Mysql常见函数和用法(重点)

where子句中经常使用的运算符 -- 查询总分大于200分的所有同学 select * from student2 where (chineseenglishmath)>200; -- 查询math大于60 并且(and)id大于4的学生成绩 select * from student2 where math>60 and id>4; -- 查询英语成绩大于语文成绩的同学 select …

面试总结之JVM入门

文章目录 🐒个人主页🏅JavaEE系列专栏📖前言:🎀你为什么要学习JVM?🎀JVM的作用 🎀JVM的构成(5大类)🏨1.类加载系统🐕类什么时候会被加…

《Docker 简易速速上手小册》第2章 容器和镜像(2024 最新版)

文章目录 2.1 理解 Docker 容器2.1.1 重点基础知识2.1.2 重点案例:使用 Docker 运行 Python 应用2.1.3 拓展案例 1:Docker 中的 Flask 应用2.1.4 拓展案例 2:Docker 容器中的数据分析 2.2 创建与管理 Docker 镜像2.2.1 重点基础知识2.2.2 重点…

k8s(5)

目录 使用Kubeadm安装k8s集群: 初始化操作: 每台主从节点: 升级内核: 所有节点安装docker : 所有节点安装kubeadm,kubelet和kubectl: 修改了 kubeadm-config.yaml,将其传输给…

网络攻防之网络扫描

目录 1、进行ping扫描 2、进行TCP SYN扫描 3、进行TCP全连接扫描 4、进行FIN扫描 5、进行UDP扫描 6、进行操作系统扫描 7、进行主机全面扫描 8、对网络号进行扫描 环境配置拓扑图: 实验前准备 查看kali和靶机的ip地址信息: 查看两台主机是否能互…

vue中循环多个li(表格)并获取对应的ref

有种场景是这样的 <ul><li v-for"(item,index) in data" :key"index" ref"???">{{item}}</li> </ul> //key值在项目中别直接用index&#xff0c;最好用id或其它关键值const data [1,2,3,4,5,6]我想要获取每一个循环并…

数据结构知识点总结-线性表(3)-双向链表定义、循环单链表、、循环双向链表、静态链表、顺序表与链表的比较

双向链表定义 单链表结点中只有一个指向其后继的指针&#xff0c;这使得单链表只能从头结点依次顺序地向后遍历。若要访问某个结点的前驱结点&#xff08;插入、删除操作时&#xff09;&#xff0c;只能从头开始遍历&#xff0c;访问后继结点的时间复杂度为 O(1) &#xff0c; …

详解java类型转换

✨✨ 所属专栏&#xff1a; Java基石&#xff1a;深入探索Java核心基础✨✨ &#x1f388;&#x1f388;作者主页&#xff1a; 喔的嘛呀&#x1f388;&#x1f388; 引言 在Java编程中&#xff0c;类型转换是将一个数据类型的值转换为另一个数据类型的过程。Java中的类型转换主…

Django学习笔记-ModelForm使用(完全依赖)

1.创建模型 ,code,name,sex,entrydate 2.模型映射 python manage.py makemigrations myapp01,python manage.py migrate 3.创建模型表单,继承forms.ModelForm,Meta:元数据,models需引入,fields填写引用的模型变量 4.创建testModelForm.html,添加urls 5.views编写testmodelfo…

前端sql条件拼接js工具

因为项目原因&#xff0c;需要前端写sql&#xff0c;所以弄了一套sql条件拼接的js工具 ​ /*常量 LT : " < ", LE : " < ", GT : " > ", GE : " > ", NE : " ! ", EQ : " ", LIKE : " like &qu…

字典树入门

//本题是一道字典树的模板题 //字典树是一种高效率存储多个字符串的数据结构 //其每个结点的权值代表以该结点结尾的字符串的数量,每条边存储一个字符 //从根结点开始,按某一路径遍历到某一结点,即得到一种字符串,其个数等于当前结点存储的数值 //如从根结点开始,依次走过abc三…

【iOS ARKit】ARWorldMap

ARWorldMap 用于存储 ARSession 检测扫描到的空间信息数据&#xff0c;包括地标&#xff08;Landmark&#xff09;、特征点&#xff08;Feature Point&#xff09;、平面&#xff08;Plane&#xff09;等&#xff0c;以及使用者的操作信息&#xff0c;如使用者添加的 ARAnchor …

【Vue】组件通信组件通信

&#x1f4dd;个人主页&#xff1a;五敷有你 &#x1f525;系列专栏&#xff1a;JVM ⛺️稳中求进&#xff0c;晒太阳 组件通信 组件通信&#xff0c;就是指组件与组件之间的数据传递 组件的数据是独立的&#xff0c;无法直接访问其他组件的数据想用其他组件的数据--&…

【深度学习】Pytorch教程(十三):PyTorch数据结构:5、张量的梯度计算:变量(Variable)、自动微分、计算图及其可视化

文章目录 一、前言二、实验环境三、PyTorch数据结构1、Tensor&#xff08;张量&#xff09;1. 维度&#xff08;Dimensions&#xff09;2. 数据类型&#xff08;Data Types&#xff09;3. GPU加速&#xff08;GPU Acceleration&#xff09; 2、张量的数学运算1. 向量运算2. 矩阵…

景联文科技:引领战场数据标注服务,赋能态势感知升级

自21世纪初&#xff0c;信息化战争使战场环境变得更为复杂和难以预测&#xff0c;持续涌入的海量、多样化、多来源和高维度数据&#xff0c;加大了指挥员的认知负担&#xff0c;使其需要具备更强的数据处理能力。 同时&#xff0c;计算机技术和人工智能技术的飞速发展&#xff…

EMQX Enterprise 5.5 发布:新增 Elasticsearch 数据集成

EMQX Enterprise 5.5.0 版本已正式发布&#xff01; 在这个版本中&#xff0c;我们引入了一系列新的功能和改进&#xff0c;包括对 Elasticsearch 的集成、Apache IoTDB 和 OpenTSDB 数据集成优化、授权缓存支持排除主题等功能。此外&#xff0c;新版本还进行了多项改进以及 B…

Gemma谷歌(google)开源大模型微调实战(fintune gemma-2b)

Gemma-SFT Gemma-SFT(谷歌, Google), gemma-2b/gemma-7b微调(transformers)/LORA(peft)/推理 项目地址 https://github.com/yongzhuo/gemma-sft全部weights要用fp32/tf32, 使用fp16微调十几或几十的步数后大概率lossnan;(即便layer-norm是fp32也不行, LLaMA就没有这个问题, …

SpringBoot/Java中OCR实现,集成Tess4J实现图片文字识别

场景 Tesseract Tesseract是一个开源的光学字符识别&#xff08;OCR&#xff09;引擎&#xff0c;它可以将图像中的文字转换为计算机可读的文本。 支持多种语言和书面语言&#xff0c;并且可以在命令行中执行。它是一个流行的开源OCR工具&#xff0c;可以在许多不同的操作系…

【Vue3】插槽使用和animate使用

插槽使用 插槽slot匿名插槽具名插槽插槽作用域简写 动态插槽transition动画组件自定义过渡class类名如何使用animate动画库组件动画生命周期appear transition- group过渡列表 插槽slot 插槽就是子组件中提供给父组件使用的一个占位符父组件可以在这个占位符智能填充任何模板代…