切线空间公式推导

本文介绍了3D模型中的法线向量坐标系,包括对象空间和切线空间,并详细阐述了如何从UV空间通过矩阵变换映射到三维空间。通过施密特正交化过程,计算出法线向量、切线向量和副法线向量,这些在图形渲染和纹理映射中起到关键作用。
摘要由CSDN通过智能技术生成

Overview

一个法线向量有三个坐标值 ,这个值是相对于哪个坐标系下的呢?我们可以选择3D模型的顶点所在的坐标系,即对象空间(Object-Space),也可以选择3D模型纹理所在的坐标系,即切线空间(Tangent-Space),也称为纹理空间(Texture-Space)。

将一个点从UV空间映射到三维空间E,其中TB作为基矢,以UV空间中的UV的增长作为控制参数。

假设三角形中存在一点P,则向量AP=U(p)*T+V(p)*B,只要知道P点的UV坐标值,即可得到P点的三维坐标值。

公式推导

{ E 1 = Δ U 1 T + Δ V 1 B E 2 = Δ U 2 T + Δ V 2 B \left \{\begin{matrix} E_{1}=\Delta U_{1}T+\Delta V_{1}B \\ \\ E_{2}=\Delta U_{2}T+\Delta V_{2}B \end{matrix} \right. E1=ΔU1T+ΔV1BE2=ΔU2T+ΔV2B
变换:
{ Δ U 2 E 1 = Δ U 1 Δ U 2 T + Δ U 2 Δ V 1 B Δ U 1 E 2 = Δ U 1 Δ U 2 T + Δ U 1 Δ V 2 B \left \{\begin{matrix} \Delta U_{2}E_{1}=\Delta U_{1}\Delta U_{2}T+\Delta U_{2}\Delta V_{1}B \\ \\\Delta U_{1}E_{2}=\Delta U_{1}\Delta U_{2}T+\Delta U_{1}\Delta V_{2}B \end{matrix} \right. ΔU2E1=ΔU1ΔU2T+ΔU2ΔV1BΔU1E2=ΔU1ΔU2T+ΔU1ΔV2B

{ Δ V 2 E 1 = Δ U 1 Δ V 2 T + Δ V 1 Δ V 2 B Δ V 1 E 2 = Δ U 2 Δ V 1 T + Δ V 1 Δ V 2 B \left \{\begin{matrix} \Delta V_{2}E_{1}=\Delta U_{1}\Delta V_{2}T+\Delta V_{1}\Delta V_{2}B \\ \\\Delta V_{1}E_{2}=\Delta U_{2}\Delta V_{1}T+\Delta V_{1}\Delta V_{2}B \end{matrix} \right. ΔV2E1=ΔU1ΔV2T+ΔV1ΔV2BΔV1E2=ΔU2ΔV1T+ΔV1ΔV2B
得:
{ T = − Δ U 2 E 1 + Δ U 1 E 2 Δ U 2 V 1 − Δ U 1 V 2 B = Δ U 2 E 1 − Δ U 1 E 2 Δ U 2 V 1 − Δ U 1 V 2 \left \{\begin{matrix} T=\frac{-\Delta U_{2}E_{1}+\Delta U_{1}E_{2}}{\Delta U_{2}V_{1}-\Delta U_{1}V_{2}} \\ \\ B=\frac{\Delta U_{2}E_{1}-\Delta U_{1}E_{2}}{\Delta U_{2}V_{1}-\Delta U_{1}V_{2}} \end{matrix} \right. T=ΔU2V1ΔU1V2ΔU2E1+ΔU1E2B=ΔU2V1ΔU1V2ΔU2E1ΔU1E2
N顶点法线向量,经施密特正交化:
{ N ⊥ = N o r m a l i z e ( N ) T ⊥ = N o r m a l i z e ( T − ( T ⋅ N ⊥ ) ⋅ N ⊥ ) B ⊥ = N o r m a l i z e ( B − ( B ⋅ N ⊥ ) ⋅ N ⊥ − ( B ⋅ T ⊥ ) ⋅ T ⊥ ) \left \{\begin{matrix} N_{\perp }= Normalize(N) \\ T_{\perp }= Normalize(T-(T\cdot N_{\perp })\cdot N_{\perp }) \\ B_{\perp }= Normalize(B-(B\cdot N_{\perp })\cdot N_{\perp }-(B\cdot T_{\perp })\cdot T_{\perp }) \end{matrix} \right. N=Normalize(N)T=Normalize(T(TN)N)B=Normalize(B(BN)N(BT)T)

参考文档

  1. 施密特正交化的几何解释
  2. 切线空间
  3. 为什么要有切线空间(Tangent Space),它的作用是什么
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值