Я нахожусь в процессе отображения j3d GeometryArrays как объединенных TriangularMeshes в JavaFX. Я знаю, что GeometryArrays, которые я получаю, являются TriangleStripArrays, и порядок позволяет мне строить правильные грани и отображать сетки в сцене.
Однако я не понимаю, как определить порядок намотки вершин, основываясь только на TriangleStripArray. В настоящее время лица не имеют правильного представления об отсечении задней поверхности, оставляя мне полную TriangleMesh, которая кажется искаженной под любым заданным углом. Изменив CullFaceMode с BACK на NONE и отобразив вершины в сцене, я могу сказать, что все лица отображаются правильно, просто отбраковываются непоследовательно.
У меня есть два метода, которые строят TriangleMesh из любой заданной треугольной грани, содержащей 3 вершины, один для намотки по часовой стрелке и один для против часовой стрелки.
По сути:
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 предоставляются, но не используются)
Заранее спасибо! - Р. Мелвилл