Unity中Shader法线贴图(下)理论篇

文章目录

  • 前言
  • 一、采样出错的原因
  • 二、切线空间是什么?
    • 切线空间图解:
  • 三、计算方式
    • 1、统一变换到切线空间下进行计算
    • 2、统一变换到世界空间下进行计算
  • 四、一般统一变换到世界空间下的坐标进行计算
    • 1、求M^-1^
    • 2、求出n~w~


前言

这篇文章,主要解决上篇文章中对于法线贴图采样出错的Bug。

  • Unity中Shader法线贴图(上)

一、采样出错的原因

在上篇文章中,我们对法线贴图采样使用的是世界空间下的坐标。但是,我们纹理在制作时,使用的是,切线空间下的坐标,所以会导致贴图采样出错。


二、切线空间是什么?

切线空间(Tangent Space),一个由顶点为原点组合而成的独立的坐标空间。

在这个坐标空间中:

  • X轴代表的是 顶点的切线(Tangent)
  • Y轴代表的是 顶点的副切线(BiTangent),也有别的叫法: 副法线(BiNormal)
  • Z轴代表的是 顶点的法线(Normal)

因此由切线、副切线、法线组成的矩阵也被称为 TBN 矩阵

切线空间图解:

在这里插入图片描述
由图可得:
对于顶点来说:唯一确定的是顶点法线(z轴)。但是,和法线垂直的切线有无数条。
那么,我们需要怎么确定 哪一条切线作为 X轴(顶点切线)和 Y轴(顶点副切线)呢?
所以,我们规定
以纹理UV的 u 坐标方向为X轴(顶点切线)
以 顶点法线(Z轴) 和 顶点切线(X轴) 叉积 得出 顶点副切线(Y轴)

在这里插入图片描述


三、计算方式

计算时,必须在同一空间坐标下计算,不然会出错

1、统一变换到切线空间下进行计算

2、统一变换到世界空间下进行计算


四、一般统一变换到世界空间下的坐标进行计算

在这里插入图片描述

在上图中,在把切线空间下的法线,转化为世界空间下的法线时:
切线变换矩阵我们是已知的、切线空间下的法线我们也是已知的(法线贴图)
所以,求 世界空间下的法线时,最核心的就是求切线变换矩阵的逆矩阵M-1

注意:这里求的 世界空间下的法线 和之前文章中所用的不是同一个法线,之前文章中使用的法线,都是模型顶点世界空间下的法线,这里的时 法线贴图上的法线转化到世界空间后的法线。

1、求M-1

M矩阵有着如下性质:
在这里插入图片描述
图中:
Tangent x :代表切线上的单位向量的X坐标 = 1
Tangent y :代表切线上的单位向量的Y坐标 = 0
Tangent z :代表切线上的单位向量的Z坐标 = 0
BiTangent x :代表副切线上的单位向量的X坐标 = 0
BiTangent y :代表副切线上的单位向量的Y坐标 = 1
BiTangent z :代表副切线上的单位向量的Z坐标 = 0
Normal x :代表法线上的单位向量的X坐标 = 0
Normal y :代表法线上的单位向量的Y坐标 = 0
Normal z :代表法线上的单位向量的Z坐标 = 1

由此可以知道 M 是 单位矩阵,也可以得出 M 是正交矩阵,得出 Mt = M-1

2、求出nw

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/152962.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[Android] Amazon 的 android 音视频开发文档

https://developer.amazon.com/zh/docs/fire-tv/audio-video-synchronization.html#22-getplaybackheadposition-api-level-3https://developer.amazon.com/zh/docs/fire-tv/audio-video-synchronization.html#22-getplaybackheadposition-api-level-3

车载毫米波雷达行业发展1——概述

1.1 毫米波雷达定义及产品演进 1.1.1 毫米波雷达定义 毫米波雷达(mmWave Radar)是指工作在毫米波波段的雷达,其频域介于 30~300GHz,波长1~10mm。毫米波雷达稳定性高,抗干扰能力强,可穿透雾、烟、灰尘环境&#xff0…

Java基础-----StringBuffer和StringBuilder

文章目录 1.StringBuffer1.1 构造方法1.2 常用方法 2.StringBuilder3.String、StringBuffer、StringBuilder的区别 1.StringBuffer 内容可变的字符串类,适应StringBuffer来对字符串的内容进行动态操作,不会产生额外的对象。StringBuffer在初始时&#x…

AI集成ChatGPT敲代码神器Copilot

📑前言 本文主要是AI工具Copilot解读文章,如果有什么需要改进的地方还请大佬指出⛺️ 🎬作者简介:大家好,我是青衿🥇 ☁️博客首页:CSDN主页放风讲故事 🌄每日一句:努力…

实现领域驱动设计-应用结构

写在前面: DDD的一大好处便是它并不需要使用特定的架构。我们可以在整个系统中使用多种风格的架构。有些架构包围着领域模型,能够全局性地影响系统,而有些架构则满足了某些特定的需求。我们的目标是选择适合于自己的架构和架构模式。 在选择架…

【HarmonyOS开发】配置开发工具DevEco Studio

1、下载 注意: 1、安装过程中,一定要自定义安装位置,包比较大,包比较大,包比较大!!! 2、可以将该工具添加到右键中,否则,如果你的项目不是HarmonyOS&#xff…

BetterDisplay Pro v2.0.11(显示器颜色校准软件)

BetterDisplay Pro是一款为Mac电脑设计的屏幕亮度调节软件,旨在提高显示器的色彩和亮度表现。它可以根据用户的需求和显示器的特性,自动调整显示器的亮度、色温、对比度等参数,以获得更加真实、舒适的视觉效果。 这款软件拥有智能调节功能&a…

数据结构:枚举

概念 枚举主要用途是:将一组常量组织起来,在这之前表示一组常量通常使用定义常量的方式: 比如下面的例子: public static final int RED 1; public static final int GREEN 2; public static final int BLACK 3; 利用常量…

【深入Scrapy实战】从登录到数据解析构建完整爬虫流程

文章目录 1. 写在前面2. 抓包分析3. Scrapy提交登陆请求4. 列表与详情页面数据解析5. 中间件Middleware配置 【作者主页】:吴秋霖 【作者介绍】:Python领域优质创作者、阿里云博客专家、华为云享专家。长期致力于Python与爬虫领域研究与开发工作&#xf…

python django 小程序图书借阅源码

开发工具: PyCharm,mysql5.7,微信开发者工具 技术说明: python django html 小程序 功能介绍: 用户端: 登录注册(含授权登录) 首页显示搜索图书,轮播图&#xff0…

使用ssh在本地环境(Windows)连接虚拟机以及其中的docker容器

配置虚拟机防火墙 防火墙的一系列操作需要root权限,默认是没有root密码的,所以首先需要设置root密码: sudo passwd root按提示完成root密码设置 切换到root账户 su root启用22端口并重启防火墙 firewall-cmd --permanent --add-port22/tc…

【NI-RIO入门】CompactRIO介绍及环境安装

CompactRIO是什么? CompactRIO系统提供了高处理性能、传感器专用I/O和紧密集成的软件工具,使其成为工业物联网、监测和控制应用的理想之选。实时处理器提供可靠,可预测的行为,而FPGA在需要高速逻辑和精确定时的较小任务上表现出色…

Microsoft Visual Studio 2019下载及安装流程记录

第一周任务: 1.笔记本上安装vc2019的环境 2.再把OpenCV安装上 3.根据网上的教程,试着写几个opencv的程序 一、安装Visual Studio 2019社区版 首先先完成安装vc2019的环境, 因为: Microsoft Visual C是用于C编程的工具集合&am…

机器学习笔记 - Ocr识别中的CTC算法原理概述

一、文字识别 在文本检测步骤中,分割出了文本区域。现在需要识别这些片段中存在哪些文本。 机器学习笔记 - Ocr识别中的文本检测EAST网络概述-CSDN博客文章浏览阅读300次。在 EAST 网络的这个分支中,它合并了 VGG16 网络不同层的特征输出。现在,该层之后的特征大小将等于 p…

matlab 坡度滤波算法地面分割

目录 一、算法原理1、实现流程2、参考文献二、代码实现三、结果展示四、测试数据一、算法原理 1、实现流程 1、格网示意图 2、计算格网行列数 公式中的特殊符号为向上取整,

el-tree结合el-switch实现状态切换

<template><div><el-col :span"24"><el-card class"tree-card"><div class"sketch_content selectFile"><span class"span_title">组织列表 </span><div style"display: flex; jus…

《崩坏:星穹铁道》1.5仙舟罗浮-绥园全宝箱攻略

大家好&#xff0c;我是闲游盒小盒子&#xff0c;本篇来说下崩铁1.5版本仙舟罗浮-绥园的全宝箱攻略&#xff0c;共有19个宝箱加1个扑满&#xff1b;做完间章可获取前14个普通宝箱加2个精英怪宝箱&#xff0c;以及1个扑满&#xff1b;完成《狐斋志异》全任务可获得另外3个宝箱。…

壹基金宣传进瑞金河背街社区 安全家园项目防灾减灾深入人心

11月16日下午&#xff0c;瑞金赋能公益、蓝天救援队等联合象湖镇河背街社区开展家庭安全计划社区活动包挑战赛活动暨壹基金安全家园项目防灾减灾宣传社区行活动。活动得到了救助儿童会北京代表处、壹基金、艾特公益、益心益意公益的指导&#xff0c;得到了阿里巴巴公益平台广大…

读像火箭科学家一样思考笔记04_第一性原理(下)

1. 来自无形规则的阻力 1.1. 无形规则 1.1.1. 僵化成规则的不必要习惯和行为 1.1.2. 不像有形的书面规则 1.1.2.1. 书面规则出现在标准操作流程中&#xff0c;可以修改或删除 1.1.3. 成文的规则可能会抗拒变革&#xff0c;但无形规则却更加顽固 1.1.4. 我们为强加在自己身…

【Q2—30min】

1.socket服务端创建过程 socket是应用层与TCP/IP协议族通信的中间软件抽象层&#xff0c;它是一组接口。在设计模式中&#xff0c;Socket其实就是一个门面模式&#xff0c;它把复杂的TCP/IP协议族隐藏在Socket接口后面&#xff0c;对用户来说&#xff0c;一组简单的接口就是全部…