2017-02-28 71 views
0

我正在将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

回答