坐标变换-知识点

本文深入探讨了计算机图形学中的齐次坐标表示方法,解释了如何通过齐次坐标区分向量和点,并进行仿射几何变换。同时,文章详细介绍了线性插值的概念,展示了其在数据点间平滑过渡的应用,以及非一致缩放的特性。最后,对比了Unity中UnityObjectToWorldDir和UnityObjectToWorldNormal的区别,重点讲解了法线在不同空间转换的方法。

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


概念:
1、齐次坐标
“齐次坐标表示是计算机图形学的重要手段之一,它既能够用来明确区分向量和点,同时也更易用于进行仿射(线性)几何变换“
从普通坐标转换成齐次坐标时,
如果(x,y,z)是个点,则变为(x,y,z,1);
如果(x,y,z)是个向量,则变为(x,y,z,0)
从齐次坐标转换成普通坐标时,
如果是(x,y,z,1),则知道它是个点,变成(x,y,z);
如果是(x,y,z,0),则知道它是个向量,仍然变成(x,y,z)
2、线性插值
,从a到b的每一个点都与c到d上的唯一一个点对应。有一个x,就可以求得一个y。
此外,如果x不在[a, b]内,比如x < a或者x > b,则得到的y也是符合y < c或者y > d,比例仍然不变,插值同样适用。


非一致缩放(non-formscalings)

UnityObjectToWorldDir和UnityObjectToWorldNormal区别
首先,将法线 norm 从模型空间转换到世界空间,需要用 unity_ObjectToWorld 的逆转置矩阵左乘该法线。(书4.7)
其次,unity_WorldToObject 是 unity_ObjectToWorld 的逆矩阵。那么我们只需要进行转置操作即可。
所以,法线 norm 在世界空间中的表示为 mul((float3x3)transpose(unity_WorldToObject), norm)。
因为 unity_WorldToObject 为行主序的矩阵(书4.9.2),所以可以很容易得到,上述 mul 运算的结果为 unity_WorldToObject[0].xyz * norm.x + unity_WorldToObject[1].xyz * norm.y + unity_WorldToObject[2].xyz * norm.z

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值