在JavaFX和Point3D中确定顶点缠绕(用于背面消隐)

在JavaFX和Point3D中确定顶点缠绕(用于背面消隐),java,javafx,3d,java-3d,culling,Java,Javafx,3d,Java 3d,Culling,我正在JavaFX中将j3d几何网格显示为组合三角网格。我知道我正在接收的几何光线是三角形网格阵列,该顺序允许我构建正确的面并在场景中显示网格 但是,我不知道如何仅基于TriangleStripArray来确定顶点缠绕顺序。这些面目前没有正确的背面剔除概念,给我留下了一个完整的三角形网格,从任何给定角度看都是扭曲的。通过将CullFaceMode从BACK更改为NONE,并在场景中绘制顶点,我可以看出所有面都已正确映射,只是不一致地进行了消隐 我有两种方法,从任何给定的包含3个顶点的三角形面构建

我正在JavaFX中将j3d几何网格显示为组合三角网格。我知道我正在接收的几何光线是三角形网格阵列,该顺序允许我构建正确的面并在场景中显示网格

但是,我不知道如何仅基于TriangleStripArray来确定顶点缠绕顺序。这些面目前没有正确的背面剔除概念,给我留下了一个完整的三角形网格,从任何给定角度看都是扭曲的。通过将CullFaceMode从BACK更改为NONE,并在场景中绘制顶点,我可以看出所有面都已正确映射,只是不一致地进行了消隐

我有两种方法,从任何给定的包含3个顶点的三角形面构建三角形网格,一种用于CW缠绕,另一种用于CCW

基本上:

float[] points = {v1.x, v1.y, v1.z, v2.x, v2.y, v2.z, v3.x, v3.y, v3.z};
float[] texCoords = {1, 1, 1, 0, 0, 1};
int[] faces = new int[]{0, 0, 1, 1, 2, 2};
vs

我的问题是,如何确定顶点缠绕顺序,以及每个面应使用哪种方法,仅基于TriangleStripArray?(正在提供但未使用坐标)

提前谢谢!
-R.Melville

如果a、b和c是三角形的顶点,可以通过计算向量(b-a)x(c-y)的叉积来解决这个问题

我们来自Math Stackoverflow的朋友有更详细的解释:-)

float[] points = {v2.x, v2.y, v2.z, v1.x, v1.y, v1.z, v3.x, v3.y, v3.z};
float[] texCoords = {1, 0, 1, 1, 0, 1};
int[] faces = new int[]{0, 0, 1, 1, 2, 2};