IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 游戏开发 -> Unity Shader 法线贴图原理解析 -> 正文阅读

[游戏开发]Unity Shader 法线贴图原理解析

法线贴图的作用是在平面上模拟凹凸效果,以达到节省模型资源的目的的。所以要理解法线原理,就要先理解人眼是如何识别凹凸效果的。这并不是什么复杂的科学知识,只要你还记得初中物理的基础光线反射原理就能理解接下来我们叙述的事情。

我们可以模拟一个镜面反射的平面,或者你也可以理解为我们用了一个BLIN材质球,因为它能很好的反射光线,如下图:


?那么当我们为平面增加一个凸起结构时候,光线的反射发生了变化,如下图:


我们会发现原本平行的的入射光线由于平面上的结构出现了一些不同角度的反射


这些不同角度的反射光线导致我们视觉上就感受到了一个凸起的结构,用一个三维模型表现就如下图:


因此我们可以理解为当光线反射角度发生变化时,我们就能看到(后者理解到)凹凸结构。此时变位思考一下,只要我们改变光线反射角度我们就能模拟一个凹凸结构。如下图:


这样我们就可以解释法线贴图的原理,就是通过一系列的数值计算,让光线在平面上发生不同角度的折射,模拟出凹凸的视觉效果。

那我们再来具体分析一下法线贴图是如何去影响的光线反射的。


首先我们要树立一个观点,法线贴图并不是一张由颜色组成的图片,他是有三个黑白的数值图片,通过通道合成的图片。

R通道


G通道


B通道


这三个通道里包含的黑白图片才是法线贴图的根本。他们的作用在于用黑白的数值来控制光线的反射角度。

红通道(R)控制光线的左右角度,X轴偏向

绿通道(G)控制光线的上下角度,Y轴偏向

蓝通道(B)模拟模型的深浅,z轴偏向

(以上所说的左右上下都只针对于贴图的方向,即左右为X轴 上下为Y轴 深浅为Z轴,永恒不变!并不针对于模型的方向,我们所说的法线贴图属于物体法线,并非世界法线,请牢记!如果是世界法线,计算方式是完全不同的,这篇文章将不会多做解释。)

同时我们可以将黑白颜色按照灰度值(0~255)来理解,红通道中,黑色即为0 白色即为255,每个数值对应控制一个角度,因为灰度值不存才小数点,所以0~255一共256个数值平分0~180度,约等于每个数值控制0.7度角。


同理,蓝通道为Y轴上的0~180度。

比较特殊的是蓝通道,蓝通道可以理解为高度图,但是这个高度没有绝对的一个阈值,一版理解为0~255个数值平分0~1的区间的高度,用于补偿X,Y轴所不能表现的深浅高低关系,但是目前的引擎越来越趋向于忽略这个深浅计算,所以蓝通道我们可以忽略掉。

所以综上所述,法线贴图就是利用R G B三个通道中的数值变化,强行将射入平面的光线进行折射,从而模拟真实的凹凸光影变化。

顺带一提,maya和MAX的法线计算上Y轴是相反的,maya的OpenGL算法将y轴数值由白到黑算为由上到下的角度变化,MAX的DX算法是将Y轴数值黑到白算为由上到下的角度变化。所以理论上只要反相G通道就能实现MAYA法线和MAX法线的互相转换。都有雨两个算法还有很多细微差异。实际运用上可能会遇到需要重新按照对应算法进行烘焙的实例。 作者:dn49hao https://www.bilibili.com/read/cv6112606/ 出处:bilibili

  游戏开发 最新文章
6、英飞凌-AURIX-TC3XX: PWM实验之使用 GT
泛型自动装箱
CubeMax添加Rtthread操作系统 组件STM32F10
python多线程编程:如何优雅地关闭线程
数据类型隐式转换导致的阻塞
WebAPi实现多文件上传,并附带参数
from origin ‘null‘ has been blocked by
UE4 蓝图调用C++函数(附带项目工程)
Unity学习笔记(一)结构体的简单理解与应用
【Memory As a Programming Concept in C a
上一篇文章      下一篇文章      查看所有文章
加:2022-04-06 16:21:40  更:2022-04-06 16:22:14 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年1日历 -2025/1/16 20:08:39-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码