各向异性渲染(一)基础理论
介绍
头发的渲染有很多方法,主要有分基于法线的(STRAND BASE)和基于多边形面片的(PolygonBase)。而头发的渲染其实也是各向异性的一种线像。我们会在以下章节介绍一下相关的技术基础,包括了:
各向异性v.s.各向同性
Kajiya-Kay模型 (基于经验)
Marschner’s (R/RR/TRT) (基于物理)
LUT Marschner’s模型(基于物理,近似)
Strand Based, Single Scattering & Multi Scattering模型(基于物理)
基于发线
基于多边形面片
各向异性v.s.各向同性
各向异性着色是在垂直于表面上的纹理或凹槽的方向上延伸反射。如果把各向异性渲染与更常见的各向同性渲染进行对比的话。各向同性渲染在所有方向上均匀地散射光,而各向异性头发在不同的方位角及跟据表面颗粒形状的纹理而改变,一般在拉丝钢,CD光盘,头发,等划痕表面产生垂直于纹理方向的高光。
这是因为在这些表面微观细看,我们会发现微观上是有一根一根的划痕的东西。
各向异性的BRDF有以下的: f(ωo,ωi,θi,θo)≠f(ωo−ωi,θi,θo)f(\omega_o, \omega_i, \theta_i,\theta_o) \ne f(\omega_o - \omega_i, \theta_i,\theta_o)f(ωo,ωi,θi,θo)=f(ωo−ωi,θi,θo)
各向同性的BRDF有以下的: f(ωo,ωi,θi,θo)=f(ωo−ωi,θi,θo)f(\omega_o, \omega_i, \theta_i,\theta_o) = f(\omega_o - \omega_i, \theta_i,\theta_o)f(ωo,ωi,θi,θo)=f(ωo−ωi,θi,θo)
Blinn-Phong光照模型
Blinn-Phong光照模型是我们平常用的公式,这是一个各向同性光照模型,一般一个点的法线N是比较固定的,可以从vertex或normal map得到。光照公式如下:
Isblinnphong=Li∗ks∗(N⃗⋅H⃗)nI{_s}_{blinnphong} = L_i * k_s * (\vec N \cdot \vec H)^{n}Isblinnphong=Li∗ks∗(N⋅H)n ,其中
- IsI_sIs 是高光强度
- LiL_iLi 是入射光强度
- KsK_sKs 是高光反射率
- N⃗\vec NN 是法线方向
- H⃗\vec HH 是中线方向
- nnn 是光滑度
使用Blinn-Phong光照,我们可以看到一个椭圆形的高光亮点,但是无法模拟各向异性的拉丝钢,头发等环状高光效果。
各向异性光照模型
各向异性光照表面微观细看,会发现有一根一根的划痕的东西。这个表面的一个点可能有多个法线。所以法线N不是唯一的,我们不能用N来判断表面方向。反而切线T是我们要关注的。各向异性光照是使用L及T来算光照的。
如之前的L是入射光方向,T是切线,我们可以用T和L的平面来确定唯一的一条于T和L公面的法线 NcN_cNc 。光照可以如下公式得到:
N⃗c⋅L⃗=cos(θ)=sin(π2−θ)=1−cos2(π2−θ))=1−(T⃗⋅L⃗)2\vec N_c \cdot \vec L = cos(\theta) = sin(\frac{\pi}{2} - \theta) = \sqrt{1- cos^2(\frac{\pi}{2} - \theta) )} = \sqrt{1- (\vec T \cdot \vec L)^2 }Nc⋅L=cos(θ)=sin(2π−θ)=1−cos2(2π−θ))=1−(T⋅L)2
同一原因, 因为L只是一个符号,我们可以用H代入 LLL
N⃗c⋅H⃗=1−(T⃗⋅H⃗)2\vec N_c \cdot \vec H = \sqrt{1- (\vec T \cdot \vec H)^2 }Nc⋅H=1−(T⋅H)2
现在我们确定了 N⃗c⋅H⃗\vec N_c \cdot \vec HNc⋅H ,我们的各向异性光照是怎么呢。
如Blinn-Phong一样,我们只需要代入 N⃗c⋅H⃗\vec N_c \cdot \vec HNc⋅H
IsanisotopicI{_s}{_{anisotopic}}Isanisotopic = Li∗ks∗(N⃗c⋅H⃗)nL_i * k_s * {(\vec N_c \cdot \vec H)} ^{n}Li∗ks∗(Nc⋅H)n
=Li∗ks∗(1−(T⃗⋅H⃗)2)n= L_i * k_s * {(\sqrt{1- (\vec T \cdot \vec H)^2 } ) }^{n}=Li∗ks∗(1−(T⋅H)2)n
各向异性渲染(一)基础理论相关推荐
- 各向异性渲染(二)Kajiya Kay头发渲染
介绍 基于之前的各向异性得结果,我们可以再推广到头发渲染.Kajiya Kay头发渲染是一种经验模型.它把头发模型为一条一条细管.然后利用上一章的数学基础,但当然Kajiya Kay也加了几个细节.包 ...
- 基于物理渲染的基础理论
本篇作为理论的概括介绍,并不涉及公式的部分 基于物理渲染的优点 很容易就可以作出真实和照片级的效果. 同一配置可以适用于在不同HDR光照环境下. 接口简单而直观,都是基于世界真实的参数.(如粗糙度,金 ...
- Hair卡通渲染的效果(各向异性)
Hair卡通渲染的效果-各向异性 丽塔头发 各向异性渲染(截图) 视频演示链接https://www.bilibili.com/video/av71067897 效果截图: 最终渲染源码: 丽塔头发 ...
- 真实感皮肤渲染技术总结
<GPU Gems 3>中的"Chapter 14. Advanced Techniques for Realistic Real-Time Skin Rendering&quo ...
- 【非真实渲染】【卡通渲染技术点介绍】
阅读指南 文本介绍卡通渲染的基本技术,实现会放在另外的文档 关键词 Cel Shading,ToonShading,色块.色调,各向异性,描边,高光 特征 看起来像手绘的图片 少渐变(指光影的变换), ...
- 为什么我星际争霸画面是窗口_为什么我喜欢看全球星际联盟
为什么我星际争霸画面是窗口 The Global StarCraft II League (GSL) is a StarCraft II: Legacy of the Void (SC 2) tour ...
- unity Quality Settings 质量设置
1 简单使用 1点击下三角可以选择自己的配置, 2点击Add可以配置自己想要的画面质量, 3从左到右,依次是PC,IOS,android不懂平台质量设置,绿色对勾表示当前平台选择的质量. 2 参数 U ...
- Unity质量设置 Quality Settings
公司项目的 设置. Unity allows you to set the level of graphical quality it will attempt to render. Generall ...
- 盘点技嘉AORUS 2080系列显卡的那些黑科技
在显卡硬件厂商界,英伟达最为活跃,N卡一直以绝对优势占据大部分显卡市场.其旗下的显卡定位也非常明确.2018年8月,NVIDIA的黄总在发布会上,正式发布了RTX20系列显卡,宣告20系列显卡时代的来 ...
最新文章
- 修改远程桌面连接端口
- org.apache.poi 读取数字问题
- 浪潮服务器无线网卡驱动,浪潮服务器网卡驱动安装.doc
- theos linux环境,theos安装详解
- 微软云架构服务器,微软云存储架构(Azure Cloud Storage)
- 考研天勤 数据结构 图(自用回顾)
- Spring常用注解(全常用)
- Android腾讯微博开放平台入门(四)发表一条文字微博
- 【详解】MD5加密真的安全吗?不安全有什么解决办法?
- 程序员价值观和网络复杂性-网络不可达排查过程
- echarts设置主标题和副标题样式
- 命名规范 (C++)
- MyBatis入门介绍,凤凰涅槃:从 iBatis 到 MyBatis
- 喜报 | 强强联手,这件大事终于有着落了
- 【CSS】笔记2-复合选择器、显示模式、背景
- Conda更新或安装包时出现Verifying transaction: failed+RemoveError的解决方法
- MATLAB图像二值化函数im2bw与imbinarize对给定阈值的内部处理细节
- bootstrap框架基础使用
- MySQL中的char和varcharmysql中varchar能存多少汉字、数字,以及varchar(100)和varchar(10)的区别
- Learning NGINX 学习NGINX Lynda课程中文字幕
热门文章
- 【从零开始学深度学习编译器】十三,如何在MLIR里面写Pass?
- python学习-飞机大战
- matlab利用已知数据画图三维,Matlab三维数据画图和等高线数据提取
- android平板评测,最火7吋Android平板 三星P1010全面评测
- 手机刷机的几种常用方法
- 新特性解读 | MySQL 8.0 对 limit 的优化
- 开源并“免费”的Linux平台DAW——Ardour 4.0发布
- linux 版本号 笔记本_2019 年最佳 Linux 笔记本电脑发行版 top10
- JAVA个版本新特性
- 阿里云服务器突发性能型和共享型哪个好