Camera 确定顶点是在摄影机的左侧还是右侧

Camera 确定顶点是在摄影机的左侧还是右侧,camera,vertex,Camera,Vertex,如果您有一个给定的顶点,您如何确定该顶点是在相机的左侧还是右侧(或者可能直接与相机对齐)? 我在上面找到的所有信息都显示了如何在2D中进行,但我需要3D 如果我将相机的外观向量添加到相机的位置,我将获得所需的光线。 但是上方向向量也必须被加入到方程中,所以看起来有点棘手 我想我必须找到一个变换,使上方向向量=(0,1,0)和外观向量=(0,0,1),然后将该变换应用于顶点。然后你可以说,如果vertice的x坐标小于相机的x坐标,那么它就在它的左边,否则它就在右边。这就像向量乘以视图投影矩阵一样

如果您有一个给定的顶点,您如何确定该顶点是在相机的左侧还是右侧(或者可能直接与相机对齐)? 我在上面找到的所有信息都显示了如何在2D中进行,但我需要3D

如果我将相机的外观向量添加到相机的位置,我将获得所需的光线。 但是上方向向量也必须被加入到方程中,所以看起来有点棘手


我想我必须找到一个变换,使上方向向量=(0,1,0)和外观向量=(0,0,1),然后将该变换应用于顶点。然后你可以说,如果vertice的x坐标小于相机的x坐标,那么它就在它的左边,否则它就在右边。

这就像向量乘以视图投影矩阵一样简单。 这就是它的本质,所以你不必做一个完整的矩阵乘法(你只需要检查结果矩阵的一部分,看看顶点在屏幕的哪一侧)

private bool left(矢量3 v)
{
if(viewProjection.M11*v.X+viewProjection.M21*v.Y+viewProjection.M31*v.Z+viewProjection.M41<0)
返回true;
返回false;
}
viewProjection显然只是视图矩阵*投影矩阵

    private bool left(Vector3 v)
    {
        if (viewProjection.M11 * v.X + viewProjection.M21 * v.Y + viewProjection.M31 * v.Z + viewProjection.M41 < 0)
            return true;
        return false;
    }