法线变换

May 14

背景

这是一道 Canva 的面试题,我日常的工作主要涉及生成式模型,缺少模型固有法线处理的经验,没答上来。

看来日常工作里涉及的技术面还是不够广呀。

证明

法线 n\mathbf{n} 对任意切线 t\mathbf{t}

nt=0\mathbf{n} \cdot \mathbf{t} = 0

设模型经过变化 M\mathbf{M} 后:

t=Mt\begin{aligned} \mathbf{t}^{\prime} &= \mathbf{M} \mathbf{t} \end{aligned}

我们需要找到一个法线变换 N\mathbf{N} 使得

(Nn)TMt=0nTNTMt=0\begin{aligned} (\mathbf{N} \mathbf{n})^{T}\mathbf{M} \mathbf{t} &= 0\\ \mathbf{n}^{T} \mathbf{N}^{T} \mathbf{M} \mathbf{t} &= 0 \end{aligned}

已知 nTt=0\mathbf{n}^{T} \mathbf{t} = 0, 因此上式为恒等式的条件是

NTM=EN=(M1)T\begin{aligned} \mathbf{N}^{T} \mathbf{M} &= \mathbf{E} \\ \mathbf{N} &= (\mathbf{M}^{-1})^T \end{aligned}

也就是如果模型经过 M\mathbf{M} 变化,对应的法线需要经过 (M1)T(\mathbf{M^{-1}})^{T}

© 2020 - 2026 Ruiyao Luo

26/05/15 01:01

PROD

#689756c