当前位置: 首页 > news >正文

Direct3D 12——灯光——法向量

在这里插入图片描述
a:平面法线着色
b:顶点法线着色
c:像素着色

平面法线(face normal,由于在计算机几何学中法线是有方向的向量,所以也有将normal译作法向量)

是 一种描述多边形朝向(即正交于多边形上所有点)的单位向量。
在这里插入图片描述

曲面法线(surface normal)

是 一种垂直于曲面上一点处切平面(有文献强调还要满足曲面发现经过该点这一条件件)的单位向量

在这里插入图片描述
对于光照计算来说,我们需要通过三角形网格曲面上每一点处的曲面法线来确定光线照到对应点上 的角度。为了求出曲面法线,我们仅先指定位于网格顶点处的曲面法线(所以也将之称作顶点法线,vertex normal )。接下来,为取得三角形网格曲面上每个点处的近似曲面法线,在三角形进行光栅化过程的中对 这些顶点法线进行插值计算

在这里插入图片描述
n0n1分别是定义在线段端点p0p1处的顶点法线。n是经此线段端点向量插值(加权平均值)所得到的点p处的法向量。即n=n0+t(n1-n0),这里的,满足p = p0+t(p1-p0)

计算法向量

为了找到三角形Δp0p1p2的平面法线,我们首先计算位于三角形边上的两个向量:

在这里插入图片描述那么,此三角形的平面法线即为:
在这里插入图片描述

对于可微的光滑曲面而言,我们可以利用微积分方面的知识来 求出曲面点处的法线。但问题在于,三角形网格运用一种被称为求 顶点法线平均值(vertex normal averaging )的计算方法。此方法通过 对网格中共享顶点 v 的多边形的平面法线求取平均值,从而获得网 格中任意顶点 v 处的顶点法线n。例如,在图中,
在这里插入图片描述
位于中间的顶点被四个多边形所共用,所以可通过计算这4个多边形平面法线的平均值来求取中间顶点处的近似法线

网格中的四个 多边形共用顶点v ,因此,v 处的顶点法线求法如下:

在这里插入图片描述
在上面这个例子中,由于我们对求和的结果已进行了规范化处 理,因此便无需像往常求算术平均值那样再除以4。注意,为了得 到更为精准的结果,我们还可以釆用更加复杂的求平均值方法,比如说,根据多边形的面积来确定权 重(如面积大的多边形的权重要大于面积小的多边形),以求取加权平均值。

变换法向量

思考图a。图中,切向量(tangent vector ) u=V1-V0 正交于法向量(normal vector ) n 。如果对此 应用一个非等比缩放变换A,则可从图b看到,变换后的切向量uA =v1A-V0A没能继续保持与变换 后法向量nA的正交性。
在这里插入图片描述

切向量与法向量的变换

(a )切向量与法向量在变换前的正交关系

(b )经过在x轴正方向放大两倍的处理后,法向量
不再与切向量保持正交关系

(c)通过对法向量进行图b中缩放变换的逆转置矩阵运算后,法向量与切向量重归正交关系

所以,我们现在所面对的问题是,若给定一个用于变换点与向量(非法线)的变换矩阵A,如何能 够求出这样一个变换矩阵B:通过它来变换法向量,使经矩阵A变换后的切向量与法向量重归正交的关 系(即uA•nB=0 )。为此,我们首先从已知的信息着手,如果法向量n正交于切向量u则有:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
尽管运用了逆转置变换,但法向量仍可能会失去其单位长度。所以在变换完成后,可能需 对它再次进行规范化处理。

http://www.lryc.cn/news/59962.html

相关文章:

  • 软考-信息系统工程(五)
  • 解决谷歌翻译不能使用的问题
  • Insomnia 简单使用方法
  • 2023接口自动化测试,完整入门篇
  • 2023年股票代持行业研究报告
  • 《Netty》从零开始学netty源码(三十九)之PoolSubPage的内存分配
  • 【目标检测论文阅读笔记】Reducing Label Noise in Anchor-Free Object Detection
  • 金融数字新型基础设施创新开放联合体今日成立
  • 编程语言的发展史
  • 巧用千寻位置GNSS软件|点测量采集技巧
  • DHCP原理与配置
  • 软件测试今天你被内卷了吗?
  • 做完自动化测试,但别让不会汇报毁了你...
  • 企业级信息系统开发讲课笔记2.4 利用MyBatis实现条件查询
  • 【天梯赛—不想坑队友系列】L2-003 月饼(java)
  • 电磁兼容(EMC)的标准与测试内容
  • 滑动平均算法
  • 个人职业发展
  • 剑指 Offer 51. 数组中的逆序对
  • 数字化转型迫在眉睫!药企如何应用AI技术加速创新?
  • 电脑显示屏是怎么显示出图像的?CPU与GPU又是什么关系?
  • 报名截至在即 | “泰迪杯”挑战赛最后一场赛前指导直播!
  • 经验分享:如何有效应对Facebook广告数据波动问题?
  • 【Python】逆向解析js代码
  • websorm启动vue项目修改内容后自动运行内存溢出
  • 第05章_数组
  • Spring Security --- 快速入门
  • 程序员挣够了钱,到中年失业真的很可怕吗?
  • 【Log and Dump Summary】
  • 软考证书找工作有用吗?软考找工作用处大吗