GAMES101学习-法线贴图学习笔记
参考:法线贴图_洛阳李四的博客
Bump、Normal和Displacement贴图的区别
闫神课上讲的关于法线贴图的定义和与位移贴图的区别已经很详细了,仅补充一些自己的理解和学习点。
法线贴图 Normal Mapping
一些基本的小理解:
(1)法线贴图是一张2D纹理,虽然有颜色,但储存的并不是RGB的值而是像素的法向量。法线贴图的值范围在[0,1]之间(作为RGB真实的值是[0,255],贴图里定义的范围[0,1]当真正作为颜色时会✖255)。由于大部分的法向量都是朝z轴正向的,即(0,0,1),也就是对应的蓝色通道B值为255,因此法线贴图一般都是一张蓝紫色的纹理。
(2)上面说到的法向量,可以模拟物体表面因为凹凸不平所产生的明暗效果,但只是在光照互动上做技巧,并没有改变高度(区别于高度贴图/位移贴图),因此对于不接受光照的物体,法线贴图是没用处的。
(3)要想把坐标系xyz下的某个法向量计入法线贴图,需要做一些变换,把在坐标中的[-1,1]范围变换成[0,1]。
物体顶点的原始信息
(1)空间法线 Normal,与物体表面垂直的向量
(2)空间切线 Tangent,与物体表面平行的向量,也与UV中的U有关,下面两张图能够简单的理解UV是什么和空间切线与UV的关系。图分别来自:
UnityShader 基础(27)-法线贴图-世界空间与切线空间法线计算 - 知乎 (zhihu.com)
【UE4】材质基础(一)——UV - 知乎 (zhihu.com)
世界空间 World Space
基于世界坐标的一种贴图,是三种里最不灵活的一种,模型本身不能发生旋转,仅适用于大型的、静态的模型,比如一些地形场景等。
模型空间 Object Space
切线空间 Tangent Space
当面对复杂物体表面时,切线空间法线贴图是最常用的一种,切线空间的法向量基于每个面的切线方向。
(1)切线空间可以理解成计算光照时真正用的z值坐标。
(2)切线空间是顶点构造的一个局部坐标系,位于表面之上,法线永远朝向正z方向,每个表面定义的切线空间是不一样的;
(3)我们可以计算出一个矩阵,矩阵X空间法向量就能得到切线空间的向量,这个矩阵就是——TBN矩阵。
TBN矩阵
TBN矩阵由切线tangent、副切线bitangent和法线normal向量组成,三向量两两正交:
(图来自:法线贴图和切线空间_SixDayCoder的博客)
其中副切线b和UV中的v平行,切线t和UV中的U平行。至于这个矩阵是如何得到的,可以参考games101作业3中给出的TBN矩阵的步骤。GAMES101作业3-填补代码框架学习过程_flashinggg的博客
...// Let n = normal = (x, y, z)// Vector t = (x*y/sqrt(x*x+z*z),sqrt(x*x+z*z),z*y/sqrt(x*x+z*z))// Vector b = n cross product t// Matrix TBN = [t b n]float x = normal.x();float y = normal.y();float z = normal.z();Eigen::Vector3f t, b;t << x * y / std::sqrt(x * x + z * z), std::sqrt(x * x + z * z), z* y / std::sqrt(x * x + z * z);b = normal.cross(t);Eigen::Matrix3f TBN;TBN <<t.x(), b.x(), x,t.y(), b.y(), y,t.z(), b.z(), z;
...
GAMES101学习-法线贴图学习笔记相关推荐
- 当推荐系统遇上图学习:基于图学习的推荐系统最新综述
©作者|Shoujin Wang 单位|麦考瑞大学博士后 研究方向|数据挖掘,机器学习,推荐系统 论文简介 本文给大家介绍一篇被今年国际人工智能联合会议 IJCAI 2021 接收的从图机器学习的视角 ...
- Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十九章:法线贴图
Introduction to 3D Game Programming with DirectX 12 学习笔记之 --- 第十九章:法线贴图 原文:Introduction to 3D Game P ...
- 吴恩达深度学习思维导图--来自刚入门的学生的自制版
吴恩达深度学习思维导图 学习吴恩达老师的课一学期了,在课程老师的要求下每周视频课都需要做思维导图,最后做了一份汇总版本的思维导图,与各位共享交流一下. 思维导图内的图片和部分内容是结合吴恩达老师的视频 ...
- 图论与图学习(一):图的基本概念
图(graph)近来正逐渐变成机器学习的一大核心领域,比如你可以通过预测潜在的连接来理解社交网络的结构.检测欺诈.理解汽车租赁服务的消费者行为或进行实时推荐.近日,数据科学家 Maël Fabien ...
- 图神经网络基础知识——初识图学习
初识图学习 一.简单的图基础 什么是图? 生活中的图 图的分类 同构图.异构图举例 图的度和邻居 图的表示 邻接矩阵 邻接表 边集 图的特征 二.图学习初印象 图学习的应用 节点级别任务 金融诈骗检测 ...
- OpenGL.Shader:9-学习光照-法线贴图(计算TBN矩阵)
OpenGL.Shader:9-学习光照-法线贴图(计算TBN矩阵) 这次文章学习法线贴图,法线贴图在游戏开发和GIS系统开发当中尤为广泛,其表现力特别的强,绘制的效果特别接近真实.更重要的一点就是, ...
- 法线贴图Normalmap小结
我们先讲基于世界或模型坐标的法线贴图(world/object space normal map).不常用,但是基础. 首先,请无视你之前google到的所谓通过Photoshop生成法线贴图类似文章 ...
- 写给笨人的法线贴图原理
我算个笨人吧.笨人以前弄懂一些东西后,讲给笨人听往往更有效.看之前请自行具备图形学关于光照的基础知识. >> world/object space normal map 我们先讲基于世界或 ...
- 置换贴图(Displacement map),凹凸贴图(Bump map)与法线贴图(Normal map)的区别
英文原文地址<Difference between Displacement , Bump and Normap Maps> By Pluralsight on August 14, 20 ...
最新文章
- 万字详解本地缓存之王 Caffeine
- 三十一、具有快表的地址变换机构
- App自动化元素定位不到?别慌,3大工具帮你解决
- 《网站运维技术与实践》笔记
- 【 MATLAB 】信号处理工具箱的信号产生函数之 square 函数简记
- TCP/IP 7.2 OSPF 虚链路
- idea 设置加载多个资源文件,显示本地图片
- MySQL 高可用架构在业务层面的应用分析
- 介绍JBoss BPM Suite安装程序
- 电脑重装系统按哪个键
- 三星w2014android,三星W2014评测:机身细节及内部设计
- cpu开机就是60℃_注意,制冷机组开机前这些检查很重要
- 中国象棋棋子及棋盘的绘制
- 【Linux】面试常问的 25+ 个 Linux 命令
- 真心干货:一起学习阿里巴巴数据中台实践!首次公开!
- 安利个数据库工具dbeaver
- eacharts y轴留白策略
- ​2 万字系统总结,带你实现 Linux 命令自由?
- WFA程序C#窗体间传值
- Docker基础-使用Dockerfile创建镜像