当前位置: 首页 > news >正文

【计算机图形学】高级外观建模

文章目录

  • 高级外观建模 Advanced Appearance Modeling
    • 参与介质 Participating Media
    • 毛发外观 Hair Appearance
      • Marschner Model
      • Double Cylinder Model
    • 颗粒材料 Granular Material
    • 透光材质 Translucent Material
      • Dipole Approximation
    • 布料 Cloth
      • 当作表面进行渲染
      • 当作参与介质渲染
      • 当作实际纤维渲染
    • 波动光学 Wave Optics
    • 程序化表面 Procedural Appearance

高级外观建模 Advanced Appearance Modeling

参与介质 Participating Media

光线传播途中遇到参与介质,可能被吸收或者分散。

用相位函数 Phase Function 来描述如何散射。

如何渲染?

  1. 随机选择一个方向弹射
  2. 随机选择一定距离传播
  3. 连接每一个着色点形成光路

毛发外观 Hair Appearance

Marschner Model

在 Marschner Model 中,光线与毛发有三种作用:R(直接反射)、TT(直接穿透)与TRT(穿透一层反射再穿透)。

用来表现人的头发最终效果非常好

Double Cylinder Model

Marschner Model 用在动物毛发上效果并不好

这是因为动物毛发与人的头发在生理结构上有一定差别

头发由表皮 Cuticle、皮层 Cortex 和髓质 Medulla 组成,其中髓质分散光线,表皮吸收光线。我们发现美洲豹的髓质比人大得多。所以有了双层圆柱模型:

其中 TTs 与 TRTs 是穿过髓质形成散射的项。

颗粒材料 Granular Material

我们可以避免显示地对每一个颗粒进行建模吗?是可以的,每一个单元认为是以不同比例成分组成的。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-YjKb575H-1661863497232)(assets/1661222286315.png)]

透光材质 Translucent Material

许多表面的视觉特征,这是由于光的入射点与出射点不一致所造成的,光在进入透光材质内部后不断散射后才出射,这与 BRDF 的基本假设相违背。

为了描述这一种现象,引入 BSSRDF :由一点辐射照度引起的另一点出射辐射亮度
S ( x i , w i ; x o , w o ) S(x_i, w_i;x_o,w_o) S(xi,wi;xo,wo)
渲染方程的推广:对表面上所有点和所有方向进行积分
L ( x o , ω o ) = ∫ A ∫ H 2 S ( x i , ω i , x o , ω o ) L i ( x i , ω i ) cos ⁡ θ i   d ω i   d A L\left(x_{o}, \omega_{o}\right)=\int_{A} \int_{H^{2}} S\left(x_{i}, \omega_{i}, x_{o}, \omega_{o}\right) L_{i}\left(x_{i}, \omega_{i}\right) \cos \theta_{i} \mathrm{~d} \omega_{i} \mathrm{~d} A L(xo,ωo)=AH2S(xi,ωi,xo,ωo)Li(xi,ωi)cosθi dωi dA

Dipole Approximation

通过引入两点光源近似光扩散。

布料 Cloth

扭曲的纤维 fiber 组成股 Ply,股再组成线 Yarn

当作表面进行渲染

给定编织模式,利用 BRDF 渲染

当作参与介质渲染

单根光纤的特性及其分布得到其散射参数

在这里插入图片描述

当作实际纤维渲染

显示渲染每一根纤维。

波动光学 Wave Optics

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1JqBGCLE-1661863497234)(assets/1661224673668.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CGZJRWaF-1661863497234)(assets/1661224707291.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RVcu13Iw-1661863497235)(assets/1661224722861.png)]

一个光源照射的实际照片放大后发现每一个像素并不是一个颜色,这是得用波动光学来解释的

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-17XNYKJD-1661863497235)(assets/1661224789143.png)]

利用波动光学得到的 BRDF 与几何光学得到的相比,波动光学的是不连续的

程序化表面 Procedural Appearance

除了纹理,我们还可以用噪声函数定义表面(直接查)。

阈值转换法计算二进制噪声

if noise(x, y, z) > threshold:
	reflectance = 1
else:
	reflectance = 0

可用于生成山体、水体

相关文章:

  • 阿里云dataworks中业务流程中问题(odps2)
  • 数据库基础小练习
  • java计算机毕业设计基于安卓Android/微信小程序的汽车租赁小程序-app
  • 学习-Java类和对象之访问限制
  • MATLAB2016笔记(十一):基本粒子群优化算法(PSO)的MATLAB实现
  • MyBatisPlus总结
  • 14天刷爆LeetCode算法学习计划——Day02双指针(2)
  • 《数据结构》时间复杂度
  • Redis 3 - 集群
  • HTTPS优化——协议优化,证书优化,会话复用
  • sqlplus rlwrap: error: Cannot execute sqlplus: Too many levels of symbolic lin
  • 【36C++STL-常用容器----3、stack容器详解】
  • yolo系列之yolov5(3)
  • 动手捣鼓一个log打印调试模块
  • 抽了一包华子才写出来的linux 文件目录结构详解
  • “大数据应用场景”之隔壁老王(连载四)
  • 《剑指offer》分解让复杂问题更简单
  • 2018以太坊智能合约编程语言solidity的最佳IDEs
  • Babel配置的不完全指南
  • conda常用的命令
  • JavaScript异步流程控制的前世今生
  • Linux gpio口使用方法
  • Sass 快速入门教程
  • use Google search engine
  • 订阅Forge Viewer所有的事件
  • 给自己的博客网站加上酷炫的初音未来音乐游戏?
  • 两列自适应布局方案整理
  • 如何优雅的使用vue+Dcloud(Hbuild)开发混合app
  • 深入浅出Node.js
  • 吐槽Javascript系列二:数组中的splice和slice方法
  • 一个普通的 5 年iOS开发者的自我总结,以及5年开发经历和感想!
  • 移动互联网+智能运营体系搭建=你家有金矿啊!
  • ​力扣解法汇总1802. 有界数组中指定下标处的最大值
  • (4)logging(日志模块)
  • (C#)if (this == null)?你在逗我,this 怎么可能为 null!用 IL 编译和反编译看穿一切
  • (ZT) 理解系统底层的概念是多么重要(by趋势科技邹飞)
  • (附源码)spring boot基于Java的电影院售票与管理系统毕业设计 011449
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (牛客腾讯思维编程题)编码编码分组打印下标(java 版本+ C版本)
  • (四) Graphivz 颜色选择
  • (转)【Hibernate总结系列】使用举例
  • (转)es进行聚合操作时提示Fielddata is disabled on text fields by default
  • (转)nsfocus-绿盟科技笔试题目
  • (转)关于如何学好游戏3D引擎编程的一些经验
  • .Family_物联网
  • .Net Attribute详解(上)-Attribute本质以及一个简单示例
  • .NET delegate 委托 、 Event 事件
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .Net 路由处理厉害了
  • .net反编译的九款神器
  • .NET上SQLite的连接
  • /etc/X11/xorg.conf 文件被误改后进不了图形化界面
  • [@Controller]4 详解@ModelAttribute
  • []串口通信 零星笔记
  • [Angular] 笔记 20:NgContent