C# SharpDX 没有检查三角形是正面还是背面的选项

C# SharpDX no option to check if triangle is front facing or back facing

我想检查单个三角形是面向相机还是面向相机。我试图找出 directx11 是否有一个简单的选项。但是,我找不到。

Something like: CheckFacing((Vector3)TrianglePoints, Camera(vector3)){
Formula... //The formula to check it but I do not know if I should manually check or if directx11 has an option
return CameraFacing; //(front or back)
}

基本上你是在寻找三角形的叉积。这是平行于三角形法线的向量。

Vector3 cross = Vector3.Cross(TrianglePoints[1] - TrianglePoints[0], TrianglePoints[2] - TrianglePoints[0]);
bool facescam = cross.Z < 0;

如果三角形面向凸轮,则叉积的 Z 值将为负。请注意,输出取决于三角形点的顺序。

如果凸轮是任意位置,需要计算凸轮与交叉向量的点积:

bool facescam = Vector3.Dot(cross, Camera) < 0;

请注意,为简单起见,我假设 Camera 已经掌握了观众所面对的方向,即 Camera = viewPoint - camLocation。 关于性能,我会使用此处的代码而不是调用接口,它非常快。