public OriginalPointArray(PolygonMesh mesh) { super(new float[mesh.getPoints().size()]); this.mesh = mesh; }
int numPoints = tMesh.getPoints().size() / tMesh.getPointElementSize(); int numTexCoords = tMesh.getTexCoords().size() / tMesh.getTexCoordElementSize(); int numFaces = tMesh.getFaces().size() / tMesh.getFaceElementSize(); if (numPoints == 0 || numPoints * tMesh.getPointElementSize() != tMesh.getPoints().size()) { throw new AssertionError("Points array size is not correct: " + tMesh.getPoints().size()); if (numTexCoords == 0 || numTexCoords * tMesh.getTexCoordElementSize() != tMesh.getTexCoords().size()) { throw new AssertionError("TexCoords array size is not correct: " + tMesh.getPoints().size()); throw new AssertionError("Faces array size is not correct: " + tMesh.getPoints().size()); throw new AssertionError("FaceSmoothingGroups array size is not correct: " + tMesh.getPoints().size() + ", numFaces = " + numFaces);
ObservableFloatArray points = mesh.getPoints(); int pointElementSize = mesh.getPointElementSize(); int os = points.size() / pointElementSize; newPoints.ensureCapacity(points.size()); reindex.clear(); reindex.resize(os); for (int i = 0, oi = 0, ni = 0; i < points.size(); i += pointElementSize, oi++) { float x = points.get(i); float y = points.get(i + 1); int ns = newPoints.size() / pointElementSize; check += mesh.getPoints().size() / pointElementSize;
ObservableFloatArray texcoords = mesh.getTexCoords(); int texcoordElementSize = mesh.getTexCoordElementSize(); int os = texcoords.size() / texcoordElementSize; newTexCoords.ensureCapacity(texcoords.size()); reindex.clear(); reindex.resize(os); for (int i = 0, oi = 0, ni = 0; i < texcoords.size(); i += texcoordElementSize, oi++) { float x = texcoords.get(i); float y = texcoords.get(i + 1); int ns = newTexCoords.size() / texcoordElementSize; check += mesh.getTexCoords().size() / texcoordElementSize;
final boolean isWireframe = getDrawMode() == DrawMode.LINE; if (DEBUG) System.out.println("UPDATE MESH -- "+(isWireframe?"WIREFRAME":"SOLID")); final int numOfPoints = pmesh.getPoints().size() / pointElementSize; if (DEBUG) System.out.println("numOfPoints = " + numOfPoints); int pointsInd = pmesh.getPoints().size(); for(int[] face: pmesh.faces) { if (DEBUG) System.out.println("face.length = " + (face.length/2)+" -- "+Arrays.toString(face)); pointsDirty = false; float [] pointsArray = new float [pmesh.getPoints().size() + pmesh.getNumEdgesInFaces()*3]; pmesh.getPoints().copyTo(0, pointsArray, 0, pmesh.getPoints().size()); int pointsInd = pmesh.getPoints().size(); for(int[] face: pmesh.faces) { int lastPointIndex = face[face.length-2];
@Override public void run() { Platform.runLater(()->{ synchronized (lockSingles) { boolean firstPoint = meshSingles.getPoints().size() == 0; meshSingles.getPoints().setAll(pointSingles.data, 0, pointSingles.size); meshSingles.getFaces().setAll(facesSingles.data, 0, facesSingles.size); if (firstPoint) { meshSingles.getTexCoords().setAll(texCoords); final MeshView meshView = new MeshView(meshSingles); meshView.setMaterial(new PhongMaterial(Color.RED)); meshView.setDepthTest(DepthTest.ENABLE); meshView.setDrawMode(DrawMode.FILL); meshView.setCullFace(CullFace.BACK); world.getChildren().addAll(meshView); } timerSingles = null; taskSingles = null; } }); } };
"Added mesh '" + key + "' of " + mesh.getPoints().size() / mesh.getPointElementSize() + " vertexes, " + mesh.getTexCoords().size() / mesh.getTexCoordElementSize() + " uvs, " + mesh.getFaces().size() / mesh.getFaceElementSize() + " faces, " + mesh.getFaceSmoothingGroups().size() + " smoothing groups.");