我正在将j3d GeometryArrays显示为JavaFX中的组合TriangularMeshes。我知道我收到的GeometryArray是TriangleStripArrays,顺序允许我构建正确的面并在场景中显示网格。在JavaFX和Point3D中确定顶点卷绕(用于背面剔除)
但是,如何根据TriangleStripArray单独确定顶点的绕线顺序,我很困惑。面部目前没有正确的背面剔除的概念,给我一个完整的TriangleMesh,从任何给定的角度看起来都是扭曲的。通过将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
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};
我的问题是,我怎么能确定顶点缠绕顺序,且该方法应每个面使用,仅基于对TriangleStripArray? (TexCoordinates正在供应,但未使用)
在此先感谢! - R. Melville