| |
|
开发:
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通道
红通道(R)控制光线的左右角度,X轴偏向 绿通道(G)控制光线的上下角度,Y轴偏向 蓝通道(B)模拟模型的深浅,z轴偏向 (以上所说的左右上下都只针对于贴图的方向,即左右为X轴 上下为Y轴 深浅为Z轴,永恒不变!并不针对于模型的方向,我们所说的法线贴图属于物体法线,并非世界法线,请牢记!如果是世界法线,计算方式是完全不同的,这篇文章将不会多做解释。) 同时我们可以将黑白颜色按照灰度值(0~255)来理解,红通道中,黑色即为0 白色即为255,每个数值对应控制一个角度,因为灰度值不存才小数点,所以0~255一共256个数值平分0~180度,约等于每个数值控制0.7度角。
比较特殊的是蓝通道,蓝通道可以理解为高度图,但是这个高度没有绝对的一个阈值,一版理解为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 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
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- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |