transform vector 用于转换向量(方向)。它只考虑坐标空间的方向,忽略坐标空间的原点(平移)。
transform position 用于转换点(位置)。它考虑坐标空间的原点和方向。
transform vector
绝对世界位置的旋转


无论模型如何旋转,可以看到颜色在世界空间区域不会跟着模型的旋转改变,模型表面的每一个像素点的世界位置都会落到相应的世界空间区域,旋转的像素点会改变世界位置落到不同的区域,从而改变成相应的颜色,我们看到的颜色区域就不会改变,对于模型来说,其表变的颜色会由模型的旋转变化而变化
我们将世界空间转换为本地空间呢


我们可以看到,我们旋转模型,我们模型的世界空间位置也跟着旋转了这是为什么呢
首先,我们要知道如何确定一个向量,要定义一个向量,需要两个点:起点与终点,向量就是代表从起点到终点距离的一个矢量。
其次,我们要理解“transform vector”中的transform是变换的意思,不是改变,是像平移,旋转的那种变换,而不是,孙悟空七十二变从猴子变成石头的那种变换。
这里的从世界位置转换为本地空间,我们可以理解为通过本地空间控制世界区域的空间变换,而不是将世界空间中的向量转换为本地空间,向量还是那个向量,只不过是通过模型的本地空间变换方向
transform position


在这里我们可以看到无论我们如何变换,模型的颜色都不会改变,我们呢可以理解为用本地空间的位置来控制模型的世界空间位置,可以理解为模型的世界位置和模型的本地位置相重合,都是以模型的本地空间0,0点作为几点,改变空间区域。
最后对比:
TransformPosition 节点:
作用: 将一个点的位置从一个坐标空间转换到另一个坐标空间。
输入: 一个 float3 向量,代表一个点在Source Space中的坐标位置 (X, Y, Z)。
输出: 一个 float3 向量,代表同一个点在Destination Space中的坐标位置。
转换过程: 执行完整的仿射变换(包括旋转、缩放和平移)。它会计算点相对于新空间原点的位置。
典型应用场景:
获取顶点或像素在世界空间中的位置 (World Position)。这是最常用的。
将对象空间的位置转换到世界空间(例如,放置一个相对于物体原点的效果)。
将世界空间的位置转换到视图空间或相机空间。
需要知道一个点在不同空间中的绝对位置时。
TransformVector 节点:
作用: 将一个向量(方向)从一个坐标空间转换到另一个坐标空间。
输入: 一个 float3 向量,代表一个方向向量(例如法线、切线、光线方向、速度方向)在Source Space中的表示。
输出: 一个 float3 向量,代表同一个方向向量在Destination Space中的表示。
转换过程: 执行旋转和缩放变换,但忽略平移变换。它只关心向量指向的方向和长度(模)在新空间中的变化,不关心这个向量“起点”在哪(因为方向向量本身没有位置概念)。
典型应用场景:
法线贴图转换: 这是最核心的应用!将从切线空间 (Tangent Space) 采样到的法线向量,转换到世界空间 (World Space) 或视图空间 (View Space),以便正确进行光照计算。这是使用 TransformVector 的绝对主要原因。
转换切线或副切线方向。
转换方向向量(如光线方向、风向)到不同的空间进行计算。
当需要处理一个方向在不同空间中的表示,并且这个方向与绝对位置无关时。
浙公网安备 33010602011771号