private JavaFXMeshBuilder getOrCreate(Map<Integer, JavaFXMeshBuilder> meshBuilders, int regionId) { JavaFXMeshBuilder meshBuilder = meshBuilders.get(regionId); if (meshBuilder == null) { meshBuilder = new JavaFXMeshBuilder(); meshBuilders.put(regionId, meshBuilder); } return meshBuilder; }
private void processCollisions(List<Point3D> collisions) { JavaFXMeshBuilder meshBuilder = new JavaFXMeshBuilder(); for (Point3D collision : collisions) meshBuilder.addTetrahedron(COLLISION_SIZE, collision); MeshView meshView = new MeshView(meshBuilder.generateMesh()); meshView.setMaterial(new PhongMaterial(Color.RED)); collisionGraphics.set(meshView); }
if (meshBuilder == null) meshBuilder = new JavaFXMeshBuilder(); meshBuilders.put(regionId, meshBuilder);
private Node createRegionPointCloudGraphics(PlanarRegionSegmentationRawData rawData) { JavaFXMeshBuilder meshBuilder = new JavaFXMeshBuilder(); rawData.stream().forEach(point -> meshBuilder.addTetrahedron(0.0025, point)); MeshView meshView = new MeshView(meshBuilder.generateMesh()); meshView.setMaterial(new PhongMaterial(OcTreeMeshBuilder.getRegionColor(rawData.getRegionId()))); meshView.setMouseTransparent(true); return meshView; }
private void processMap(VisibilityMapHolder visibilityMapHolder) { JavaFXMeshBuilder meshBuilder = new JavaFXMeshBuilder(); for (Connection connection : visibilityMapHolder.getVisibilityMapInWorld()) meshBuilder.addLine(connection.getSourcePoint(), connection.getTargetPoint(), VisualizationParameters.INTER_REGION_CONNECTIVITY_LINE_THICKNESS); MeshView meshView = new MeshView(meshBuilder.generateMesh()); if (customMaterial != null) meshView.setMaterial(customMaterial); else meshView.setMaterial(new PhongMaterial(PlanarRegionViewer.getRegionColor(visibilityMapHolder.getMapId()))); mapToRender.set(meshView); }
private void buildMeshAndMaterial(PlanarRegionsList planarRegionsList) { if (VERBOSE) PrintTools.info(this, "Creating mesh and material for new planar regions."); RigidBodyTransform transformToWorld = new RigidBodyTransform(); List<MeshView> regionMeshViews = new ArrayList<>(); for (int regionIndex = 0; regionIndex < planarRegionsList.getNumberOfPlanarRegions(); regionIndex++) { JavaFXMeshBuilder meshBuilder = new JavaFXMeshBuilder(); PlanarRegion planarRegion = planarRegionsList.getPlanarRegion(regionIndex); int regionId = planarRegion.getRegionId(); planarRegion.getTransformToWorld(transformToWorld); meshBuilder.addMultiLine(transformToWorld, Arrays.asList(planarRegion.getConcaveHull()), VisualizationParameters.CONCAVEHULL_LINE_THICKNESS, true); for (int polygonIndex = 0; polygonIndex < planarRegion.getNumberOfConvexPolygons(); polygonIndex++) { ConvexPolygon2D convexPolygon2d = planarRegion.getConvexPolygon(polygonIndex); meshBuilder.addPolygon(transformToWorld, convexPolygon2d); } MeshView regionMeshView = new MeshView(meshBuilder.generateMesh()); regionMeshView.setMaterial(new PhongMaterial(getRegionColor(regionId))); regionMeshViews.add(regionMeshView); } graphicsToRender.set(regionMeshViews); }
view3dFactory.addWorldCoordinateSystem(0.3); JavaFXMeshBuilder meshBuilder = new JavaFXMeshBuilder(); switch (MESH_TO_DISPLAY)
private Node createConcavePocketsGraphics(PlanarRegionSegmentationRawData rawData, ConcaveHullFactoryResult concaveHullFactoryResult) { JavaFXMeshBuilder meshBuilder = new JavaFXMeshBuilder(); ConcaveHullCollection concaveHullCollection = concaveHullFactoryResult.getConcaveHullCollection(); RigidBodyTransform transform = rawData.getTransformFromLocalToWorld(); for (ConcaveHull concaveHull : concaveHullCollection) { Set<ConcaveHullPocket> pockets = concaveHull.findConcaveHullPockets(polygonizerParameters.getDepthThreshold()); for (ConcaveHullPocket pocket : pockets) { List<Point2D> pocketVertices = ListWrappingIndexTools.subListInclusive(pocket.getStartBridgeIndex(), pocket.getEndBridgeIndex(), concaveHull.getConcaveHullVertices()); Point2D average = new Point2D(); average.interpolate(pocket.getStartBridgeVertex(), pocket.getEndBridgeVertex(), 0.5); pocketVertices.add(0, average); ConcaveHullTools.ensureClockwiseOrdering(pocketVertices); meshBuilder.addPolygon(transform, pocketVertices); } } MeshView meshView = new MeshView(meshBuilder.generateMesh()); meshView.setMaterial(new PhongMaterial(OcTreeMeshBuilder.getRegionColor(rawData.getRegionId()))); return meshView; }
private Node createBorderVerticesGraphics(PlanarRegionSegmentationRawData rawData, ConcaveHullFactoryResult concaveHullFactoryResult) { JavaFXMeshBuilder meshBuilder = new JavaFXMeshBuilder(); Point3D planeOrigin = rawData.getOrigin(); Quaternion planeOrientation = rawData.getOrientation(); for (ConcaveHullVariables intermediateVariables : concaveHullFactoryResult.getIntermediateVariables()) { for (Vertex vertex2d : intermediateVariables.getBorderVertices()) { Point3D vertex3d = PolygonizerTools.toPointInWorld(vertex2d.getX(), vertex2d.getY(), planeOrigin, planeOrientation); meshBuilder.addSphere(0.003, vertex3d); } } MeshView meshView = new MeshView(meshBuilder.generateMesh()); meshView.setMaterial(new PhongMaterial(OcTreeMeshBuilder.getRegionColor(rawData.getRegionId()))); meshView.setMouseTransparent(true); return meshView; }
private Node createConstraintEdgesGraphics(PlanarRegionSegmentationRawData rawData, ConcaveHullFactoryResult concaveHullFactoryResult) { JavaFXMeshBuilder meshBuilder = new JavaFXMeshBuilder(); Point3D planeOrigin = rawData.getOrigin(); Quaternion planeOrientation = rawData.getOrientation(); for (ConcaveHullVariables concaveHullVariables : concaveHullFactoryResult.getIntermediateVariables()) { for (QuadEdge constraintEdge : concaveHullVariables.getConstraintEdges()) { Point3D orig = PolygonizerTools.toPointInWorld(constraintEdge.orig().getX(), constraintEdge.orig().getY(), planeOrigin, planeOrientation); Point3D dest = PolygonizerTools.toPointInWorld(constraintEdge.dest().getX(), constraintEdge.dest().getY(), planeOrigin, planeOrientation); meshBuilder.addLine(orig, dest, 0.002); } } MeshView meshView = new MeshView(meshBuilder.generateMesh()); meshView.setMaterial(new PhongMaterial(Color.BLACK)); meshView.visibleProperty().bind(showConstraintEdges); return meshView; }
palette.setHueBased(0.9, 0.8); JavaFXMultiColorMeshBuilder occupiedMeshBuilder = new JavaFXMultiColorMeshBuilder(palette); JavaFXMeshBuilder freeMeshBuilder = new JavaFXMeshBuilder();
palette.setHueBased(0.9, 0.8); JavaFXMultiColorMeshBuilder occupiedMeshBuilder = new JavaFXMultiColorMeshBuilder(palette); JavaFXMeshBuilder freeMeshBuilder = new JavaFXMeshBuilder();