DirectX之顶点法线的计算

本文详细介绍了顶点法线的计算原理及其在光照计算中的应用。通过解析三角形的向量运算,阐述了如何从三角形面法线得出顶点法线,并解释了在曲面物体上使用平均面法线提升渲染效果的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

首先要明白,顶点法线存在的原因:确定灯光照射到物体表面的角度。所以一提到顶点法线,肯定要进行与灯光相关的运算了。

下面是顶点法线的计算方式

假如 A、B、C三个顶点构成一个三角形,它们对应的顶点法线分别是 n_A、n_B、n_C。

从三角形中计算出两个向量(注意是有方向的):

u = B - A       v = C- A   

那么对应的面法线(向量的叉乘运算) n = u x v

如果直接用面法线表示顶点法线的话,那么 n_A = n_B = n_C = n

但是对于一些曲面物体,直接用面法线表示顶点法线,显然是不合适的(不够平滑),为了达到更好的效果,我们可以用共享该顶点的所有三角形的面法线的平均值来表示该顶点的顶点法线(有点绕,哈哈哈)。

我们知道,3D建模的时候,物体一般都是由三角形构成的,所以,正常情况一个顶点是被3个三角形共享的。

假如共享某个顶点的三个三角形的面法线分别为 n1, n2,n3,

那么按照法则,该顶点的顶点法线(n)可以表示为 n = (n1 + n2 + n3) / 3

转载于:https://www.cnblogs.com/luguoshuai/p/10464851.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值