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; }
public BodyPathMeshViewer(Messager messager) { isExecutorServiceProvided = executorService == null; bodyPathMeshView.setMouseTransparent(true); bodyPathMeshView.setMaterial(new PhongMaterial(Color.YELLOW)); Vector3D defaultSize = new Vector3D(1.0, 1.0, 1.0); defaultSize.scale(1.5 * BODYPATH_LINE_THICKNESS); show = messager.createInput(FootstepPlannerMessagerAPI.ShowBodyPath, true); messager.registerTopicListener(FootstepPlannerMessagerAPI.BodyPathDataTopic, this::processBodyPathOnThread); messager.registerTopicListener(FootstepPlannerMessagerAPI.ComputePathTopic, data -> reset.set(true)); root.getChildren().addAll(bodyPathMeshView); }
private Node createConcaveHullGraphics(PlanarRegion data) { int regionId = data.getRegionId(); JavaFXMultiColorMeshBuilder meshBuilder = new JavaFXMultiColorMeshBuilder(new TextureColorAdaptivePalette(16)); RigidBodyTransform transform = new RigidBodyTransform(); data.getTransformToWorld(transform); Point2D[] concaveHullVerticesLocal = data.getConcaveHull(); Color regionColor = OcTreeMeshBuilder.getRegionColor(regionId); List<Point3D> concaveHullVertices = Arrays.stream(concaveHullVerticesLocal).map(Point3D::new).map(p -> { transform.transform(p); return p; }).collect(Collectors.toList()); for (int vertexIndex = 0; vertexIndex < concaveHullVertices.size(); vertexIndex++) { Point3D vertex = concaveHullVertices.get(vertexIndex); Point3D nextVertex = ListWrappingIndexTools.getNext(vertexIndex, concaveHullVertices); Color lineColor = Color.hsb(regionColor.getHue(), regionColor.getSaturation(), regionColor.getBrightness()); meshBuilder.addLine(vertex, nextVertex, 0.0015, lineColor); } MeshView meshView = new MeshView(meshBuilder.generateMesh()); meshView.setMaterial(meshBuilder.generateMaterial()); meshView.setMouseTransparent(true); return meshView; }
public BodyPathMeshViewer(Messager messager, ExecutorService executorService) { isExecutorServiceProvided = executorService == null; if (isExecutorServiceProvided) this.executorService = Executors.newSingleThreadExecutor(ThreadTools.getNamedThreadFactory(getClass().getSimpleName())); else this.executorService = executorService; bodyPathMeshView.setMouseTransparent(true); bodyPathMeshView.setMaterial(new PhongMaterial(Color.YELLOW)); Vector3D defaultSize = new Vector3D(1.0, 1.0, 1.0); defaultSize.scale(1.5 * BODYPATH_LINE_THICKNESS); walkerSize = messager.createInput(UIVisibilityGraphsTopics.WalkerSize, defaultSize); walkerOffsetHeight = messager.createInput(UIVisibilityGraphsTopics.WalkerOffsetHeight, 0.0); walker.setMaterial(new PhongMaterial(Color.YELLOW)); walker.setRadius(1.0); resetRequested = messager.createInput(UIVisibilityGraphsTopics.GlobalReset, false); show = messager.createInput(UIVisibilityGraphsTopics.ShowBodyPath, true); messager.registerTopicListener(UIVisibilityGraphsTopics.BodyPathData, this::processBodyPathOnThread); walkerPosition = messager.createInput(UIVisibilityGraphsTopics.WalkerPosition, null); enableWalkerAnimation = messager.createInput(UIVisibilityGraphsTopics.EnableWalkerAnimation, true); root.getChildren().addAll(bodyPathMeshView, walker); }
meshView.setMouseTransparent(true); meshView.setMaterial(meshBuilder.generateMaterial()); return meshView;
meshView.setMouseTransparent(true); 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; }
bufferOcTreeMeshView.setMouseTransparent(true); ocTreeViewer.getRoot().setMouseTransparent(true); boundingBoxMeshView.setMouseTransparent(true);
@SuppressWarnings("unchecked") private static Node createPrimaryEdgesGraphics(QuadEdgeSubdivision quadEdgeSubdivision, PlanarRegionSegmentationRawData rawData) { List<QuadEdge> primaryEdges = (List<QuadEdge>) quadEdgeSubdivision.getPrimaryEdges(false); int regionId = rawData.getRegionId(); JavaFXMultiColorMeshBuilder meshBuilder = new JavaFXMultiColorMeshBuilder(new TextureColorAdaptivePalette(16)); Point3D planeOrigin = rawData.getOrigin(); Quaternion planeOrientation = rawData.getOrientation(); Color regionColor = OcTreeMeshBuilder.getRegionColor(regionId); for (QuadEdge edge : primaryEdges) { Point3D dest = PolygonizerTools.toPointInWorld(edge.dest().getX(), edge.dest().getY(), planeOrigin, planeOrientation); Point3D orig = PolygonizerTools.toPointInWorld(edge.orig().getX(), edge.orig().getY(), planeOrigin, planeOrientation); meshBuilder.addLine(dest, orig, 0.0015, regionColor); } MeshView meshView = new MeshView(meshBuilder.generateMesh()); meshView.setMaterial(meshBuilder.generateMaterial()); meshView.setMouseTransparent(true); return meshView; }
@SuppressWarnings("unchecked") private static Node createEdgesGraphics(QuadEdgeSubdivision quadEdgeSubdivision, PlanarRegionSegmentationRawData rawData) { List<QuadEdge> edges = (List<QuadEdge>) quadEdgeSubdivision.getEdges(); int regionId = rawData.getRegionId(); JavaFXMultiColorMeshBuilder meshBuilder = new JavaFXMultiColorMeshBuilder(new TextureColorAdaptivePalette(16)); Point3D planeOrigin = rawData.getOrigin(); Quaternion planeOrientation = rawData.getOrientation(); Color regionColor = OcTreeMeshBuilder.getRegionColor(regionId); for (QuadEdge edge : edges) { Point3D dest = PolygonizerTools.toPointInWorld(edge.dest().getX(), edge.dest().getY(), planeOrigin, planeOrientation); Point3D orig = PolygonizerTools.toPointInWorld(edge.orig().getX(), edge.orig().getY(), planeOrigin, planeOrientation); meshBuilder.addLine(dest, orig, 0.0015, regionColor); } MeshView meshView = new MeshView(meshBuilder.generateMesh()); meshView.setMaterial(meshBuilder.generateMaterial()); meshView.setMouseTransparent(true); return meshView; }
occupiedMeshView.setMesh(occupiedMeshBuilder.generateMesh()); occupiedMeshView.setMaterial(occupiedMeshBuilder.generateMaterial()); occupiedMeshView.setMouseTransparent(true); view3dFactory.addNodeToView(occupiedMeshView);
private Node createBorderEdgesGraphics(PlanarRegionSegmentationRawData rawData, ConcaveHullFactoryResult concaveHullFactoryResult) { int regionId = rawData.getRegionId(); JavaFXMultiColorMeshBuilder meshBuilder = new JavaFXMultiColorMeshBuilder(new TextureColorAdaptivePalette(16)); Point3D planeOrigin = rawData.getOrigin(); Quaternion planeOrientation = rawData.getOrientation(); Color regionColor = OcTreeMeshBuilder.getRegionColor(regionId); for (ConcaveHullVariables intermediateVariables : concaveHullFactoryResult.getIntermediateVariables()) { Set<QuadEdge> borderEdges = intermediateVariables.getBorderEdges(); for (QuadEdge edge : borderEdges) { Point3D dest = PolygonizerTools.toPointInWorld(edge.dest().getX(), edge.dest().getY(), planeOrigin, planeOrientation); Point3D orig = PolygonizerTools.toPointInWorld(edge.orig().getX(), edge.orig().getY(), planeOrigin, planeOrientation); boolean isEdgeTooLong = dest.distance(orig) > parameters.getEdgeLengthThreshold(); Color lineColor = Color.hsb(regionColor.getHue(), regionColor.getSaturation(), isEdgeTooLong ? 0.25 : regionColor.getBrightness()); meshBuilder.addLine(dest, orig, 0.0015, lineColor); } } MeshView meshView = new MeshView(meshBuilder.generateMesh()); meshView.setMaterial(meshBuilder.generateMaterial()); meshView.setMouseTransparent(true); return meshView; }