public void setMaterial(PhongMaterial material) { arrow.setMaterial(material); } }
public List<MeshView> getAsMeshViews() { List<MeshView> result = new ArrayList<>(meshes.size()); for (int i = 0; i < meshes.size(); i++) { Mesh mesh = meshes.get(i); Material mat = materials.get(i); MeshView view = new MeshView(mesh); view.setMaterial(mat); view.setCullFace(CullFace.NONE); result.add(view); } return result; }
public List<MeshView> getAsMeshViews() { List<MeshView> result = new ArrayList<>(meshes.size()); for (int i = 0; i < meshes.size(); i++) { Mesh mesh = meshes.get(i); Material mat = materials.get(i); MeshView view = new MeshView(mesh); view.setMaterial(mat); view.setCullFace(CullFace.NONE); result.add(view); } return result; }
private void render() { Pair<Mesh, Material> meshAndMaterial = meshAndMaterialToRender.getAndSet(null); if (meshAndMaterial != null) { planarRegionMeshView.setMesh(meshAndMaterial.getKey()); planarRegionMeshView.setMaterial(meshAndMaterial.getValue()); } }
public MeshView buildMeshView(String key) { MeshView meshView = new MeshView(); meshView.setId(key); meshView.setMaterial(materials.get(key)); meshView.setMesh(meshes.get(key)); meshView.setCullFace(CullFace.NONE); return meshView; }
private void updateMeshView(MeshView meshViewToUpdate, Pair<Mesh, Material> meshMaterial) { meshViewToUpdate.setMesh(meshMaterial.getKey()); meshViewToUpdate.setMaterial(meshMaterial.getValue()); }
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); }
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 Node createFootstep(Point3DReadOnly position, QuaternionReadOnly orientation, Color footColor, ConvexPolygon2DReadOnly footPolygon) { MeshDataHolder polygon = MeshDataGenerator.ExtrudedPolygon(footPolygon, 0.025); polygon = MeshDataHolder.rotate(polygon, orientation); polygon = MeshDataHolder.translate(polygon, position); Mesh mesh = JavaFXMeshDataInterpreter.interpretMeshData(polygon, true); MeshView meshView = new MeshView(mesh); meshView.setMaterial(new PhongMaterial(footColor)); return meshView; }
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); }
@Override protected void doAddMeshDataInstruction(Graphics3DAddMeshDataInstruction graphics3DAddMeshData) { graphics3DAddMeshData.getMeshData().getVertices(); TriangleMesh outputMesh = interpretMeshData(graphics3DAddMeshData.getMeshData()); Material outputMaterial = convertMaterial(graphics3DAddMeshData.getAppearance()); MeshView meshView = new MeshView(); meshView.setMesh(outputMesh); meshView.setMaterial(outputMaterial); Group meshGroup = new Group(meshView); currentGroup.getChildren().add(meshGroup); currentGroup = meshGroup; }
private void computeScanMesh() { LidarScanMessage message = newMessageToRender.getAndSet(null); if (message == null) return; Point3D32 scanPoint = new Point3D32(); scanMeshBuilder.clear(); int numberOfScanPoints = message.getScan().size() / 3; for (int i = 0; i < numberOfScanPoints; i++) { double alpha = i / (double) numberOfScanPoints; Color color = Color.hsb(alpha * 240.0, 1.0, 1.0); MessageTools.unpackScanPoint(message, i, scanPoint); scanMeshBuilder.addMesh(MeshDataGenerator.Tetrahedron(SCAN_POINT_SIZE), scanPoint, color); } MeshView scanMeshView = new MeshView(scanMeshBuilder.generateMesh()); scanMeshView.setMaterial(scanMeshBuilder.generateMaterial()); scanMeshToRender.set(scanMeshView); scanMeshBuilder.clear(); }
public ArrowGraphic(double radius, double length, Color color) { TextureColorPalette1D colorPalette = new TextureColorPalette1D(); colorPalette.setHueBased(1.0, 1.0); JavaFXMultiColorMeshBuilder meshBuilder = new JavaFXMultiColorMeshBuilder(colorPalette); double coneHeight = 0.10 * length; double coneRadius = 1.5 * radius; meshBuilder.addCylinder(length, radius, new Point3D(), new AxisAngle(0.0, 1.0, 0.0, Math.PI / 2.0), color); meshBuilder.addCone(coneHeight, coneRadius, new Point3D(length, 0.0, 0.0), new AxisAngle(0.0, 1.0, 0.0, Math.PI / 2.0), color); this.arrow = new MeshView(meshBuilder.generateMesh()); arrow.setMaterial(meshBuilder.generateMaterial()); getChildren().add(arrow); }
private Node createIntersectionsGraphics(PlanarRegionSegmentationRawData rawData) { JavaFXMultiColorMeshBuilder meshBuilder = new JavaFXMultiColorMeshBuilder(new TextureColorAdaptivePalette(32)); List<LineSegment2D> intersections2d = rawData.getIntersections(); Point3D planeOrigin = rawData.getOrigin(); Vector3D planeNormal = rawData.getNormal(); List<LineSegment3D> intersections = PolygonizerTools.toLineSegmentsInWorld(intersections2d, planeOrigin, planeNormal); for (LineSegment3D intersection : intersections) { meshBuilder.addLine(intersection.getFirstEndpoint(), intersection.getSecondEndpoint(), 0.0025, Color.RED); } MeshView meshView = new MeshView(meshBuilder.generateMesh()); meshView.setMaterial(meshBuilder.generateMaterial()); meshView.visibleProperty().bind(showIntersections); 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; }
@Override public void start(Stage primaryStage) throws Exception { View3DFactory view3dFactory = new View3DFactory(800, 600); view3dFactory.addCameraController(); view3dFactory.addWorldCoordinateSystem(0.3); MeshView meshView = new MeshView(); meshView.setMesh(colorMeshBuilder.generateMesh()); meshView.setMaterial(colorMeshBuilder.generateMaterial()); view3dFactory.addNodeToView(meshView); PhongMaterial material = new PhongMaterial(Color.DARKCYAN); // normalCylinder.setMaterial(material); // rootNode.getChildren().add(normalCylinder); material = new PhongMaterial(); material.setDiffuseColor(new Color(1.0, 1.0, 0.0, 0.0)); box.setMaterial(material); view3dFactory.addNodeToView(box); primaryStage.setScene(view3dFactory.getScene()); primaryStage.show(); }
@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; }
public JavaFXCoordinateSystem(double length) { TextureColorPalette1D colorPalette = new TextureColorPalette1D(); colorPalette.setHueBased(1.0, 1.0); JavaFXMultiColorMeshBuilder meshBuilder = new JavaFXMultiColorMeshBuilder(colorPalette); double radius = 0.02 * length; double coneHeight = 0.10 * length; double coneRadius = 0.05 * length; meshBuilder.addCylinder(length, radius, new Point3D(), new AxisAngle(0.0, 1.0, 0.0, Math.PI / 2.0), Color.RED); meshBuilder.addCone(coneHeight, coneRadius, new Point3D(length, 0.0, 0.0), new AxisAngle(0.0, 1.0, 0.0, Math.PI / 2.0), Color.RED); meshBuilder.addCylinder(length, radius, new Point3D(), new AxisAngle(1.0, 0.0, 0.0, -Math.PI / 2.0), Color.GREEN); meshBuilder.addCone(coneHeight, coneRadius, new Point3D(0.0, length, 0.0), new AxisAngle(1.0, 0.0, 0.0, -Math.PI / 2.0), Color.GREEN); meshBuilder.addCylinder(length, radius, new Point3D(), Color.BLUE); meshBuilder.addCone(coneHeight, coneRadius, new Point3D(0.0, 0.0, length), Color.BLUE); MeshView coordinateSystem = new MeshView(meshBuilder.generateMesh()); coordinateSystem.setMaterial(meshBuilder.generateMaterial()); getChildren().addAll(coordinateSystem); } }
public JavaFXCoordinateSystem(double length) { TextureColorPalette1D colorPalette = new TextureColorPalette1D(); colorPalette.setHueBased(1.0, 1.0); JavaFXMultiColorMeshBuilder meshBuilder = new JavaFXMultiColorMeshBuilder(colorPalette); double radius = 0.02 * length; double coneHeight = 0.10 * length; double coneRadius = 0.05 * length; meshBuilder.addCylinder(length, radius, new Point3d(), new AxisAngle4d(0.0, 1.0, 0.0, Math.PI / 2.0), Color.RED); meshBuilder.addCone(coneHeight, coneRadius, new Point3d(length, 0.0, 0.0), new AxisAngle4d(0.0, 1.0, 0.0, Math.PI / 2.0), Color.RED); meshBuilder.addCylinder(length, radius, new Point3d(), new AxisAngle4d(1.0, 0.0, 0.0, -Math.PI / 2.0), Color.GREEN); meshBuilder.addCone(coneHeight, coneRadius, new Point3d(0.0, length, 0.0), new AxisAngle4d(1.0, 0.0, 0.0, -Math.PI / 2.0), Color.GREEN); meshBuilder.addCylinder(length, radius, new Point3d(), Color.BLUE); meshBuilder.addCone(coneHeight, coneRadius, new Point3d(0.0, 0.0, length), Color.BLUE); MeshView coordinateSystem = new MeshView(meshBuilder.generateMesh()); coordinateSystem.setMaterial(meshBuilder.generateMaterial()); getChildren().addAll(coordinateSystem); } }