计算世界空间视图方向背后的数学 - cg着色器Unity

时间:2016-01-04 23:30:19

标签: unity3d shader

有人可以使用以下公式向我指出计算世界空间视图方向背后的解释:

float3 worldSpaceViewDir = _WorldSpaceCameraPos.xyz - worldPos;
  1. 为什么我们从worldspaceCameraPos中减去worldspacePos以获取viewDirection。
  2. 可能是,我应该问一下世界空间观点到底是什么方向?
  3. 当我尝试数学时,以下是我得到的。 示例: 一个点位于(0,5,0)世界位置,摄像机位于(0,0,50)世界位置并获得世界视图方向:

    worldSpaceViewDir = _WorldSpaceCameraPos.xyz - worldPos
    = (0,0,50) - (0,5,0)
    = (0,-5,50)
    

    enter image description here 这是观点方向吗?

1 个答案:

答案 0 :(得分:3)

float3 worldSpaceViewDir = _WorldSpaceCameraPos.xyz - worldPos;

这给出了从世界坐标中的物体位置到世界坐标中的摄像机位置的方向。

我猜你会期望数据是相机所在的位置。 在着色器方面,你不会这样想,这没关系。

考虑到当相机正好在它前面时,你想要一个像素显示白色(当看不到时,它是黑色)。您可以使用点积产品来查看方向是否与正常方向对齐,但相机是否正在查看它并不重要。您的像素获取信息,如果相机面对,那么它将呈现,但在此之前,着色器不关心并做它应该做的事情。

请注意,CG中已有此方法:

float3 WorldSpaceViewDir (float4 v)