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); }
@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 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 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; }
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 updateMeshView(MeshView meshViewToUpdate, Pair<Mesh, Material> meshMaterial) { meshViewToUpdate.setMesh(meshMaterial.getKey()); meshViewToUpdate.setMaterial(meshMaterial.getValue()); }
mesh.getFaces().setAll(faces); final MeshView meshView = new MeshView(mesh); meshView.setMaterial(new PhongMaterial(Color.RED)); meshView.setDepthTest(DepthTest.ENABLE); meshView.setDrawMode(DrawMode.FILL); meshView.setCullFace(CullFace.BACK);
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; }
MeshView occupiedMeshView = new MeshView(); occupiedMeshView.setMesh(occupiedMeshBuilder.generateMesh()); occupiedMeshView.setMaterial(occupiedMeshBuilder.generateMaterial()); occupiedMeshView.setMouseTransparent(true); view3dFactory.addNodeToView(occupiedMeshView); MeshView freeMeshView = new MeshView(); freeMeshView.setMesh(freeMeshBuilder.generateMesh()); PhongMaterial material = new PhongMaterial(); material.setDiffuseColor(FREE_COLOR); freeMeshView.setMaterial(material); view3dFactory.addNodeToView(freeMeshView);
JavaFXTools.convertEuclidAffineToJavaFXAffine(affineTransform, javaFxAffineToPack); MeshDataHolder meshDataHolder = meshDataHolders[i]; MeshView meshView = new MeshView(); meshView.setMesh(JavaFXMeshDataInterpreter.interpretMeshData(meshDataHolder)); meshView.setMaterial(materials[i]); meshView.getTransforms().add(javaFxAffineToPack); meshViews[i] = meshView;
MeshView torus = new MeshView(JavaFXMeshDataInterpreter.interpretMeshData(MeshDataGenerator.ArcTorus(0.0, 1.0 * Math.PI, 0.3, 0.1, 64))); torus.setMaterial(defaultMaterial); torus.setTranslateY(1.5); view3dFactory.addNodeToView(torus); MeshView cylinder = new MeshView(JavaFXMeshDataInterpreter.interpretMeshData(MeshDataGenerator.Cylinder(0.1, 0.3, 64))); cylinder.setMaterial(defaultMaterial); cylinder.setTranslateY(0.5); view3dFactory.addNodeToView(cylinder); MeshView cone = new MeshView(JavaFXMeshDataInterpreter.interpretMeshData(MeshDataGenerator.Cone(0.3, 0.1, 64))); cone.setMaterial(defaultMaterial); cone.setTranslateY(-0.3); view3dFactory.addNodeToView(cone); MeshView sphere = new MeshView(JavaFXMeshDataInterpreter.interpretMeshData(MeshDataGenerator.Ellipsoid(0.3, 0.1, 0.4, 64, 64))); sphere.setMaterial(defaultMaterial); sphere.setTranslateX(0.5); view3dFactory.addNodeToView(sphere); MeshView extrudedPolygon = new MeshView(JavaFXMeshDataInterpreter.interpretMeshData(MeshDataGenerator.ExtrudedPolygon(polygonVertices, 0.1))); extrudedPolygon.setMaterial(defaultMaterial); extrudedPolygon.setTranslateX(2.0); extrudedPolygon.setTranslateY(0.5); view3dFactory.addNodeToView(extrudedPolygon); MeshView pyramidCube = new MeshView(JavaFXMeshDataInterpreter.interpretMeshData(MeshDataGenerator.PyramidCube(0.1, 0.2, 0.1, 0.4))); pyramidCube.setMaterial(defaultMaterial); pyramidCube.setTranslateX(-1.0);
public void setMaterial(PhongMaterial material) { arrow.setMaterial(material); } }
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 void processFootMesh(FootstepNode node, FootstepNodeSnapData snapData, boolean valid) { meshBuilder.clear(); RigidBodyTransform planarTransformToWorld = new RigidBodyTransform(); FootstepNodeTools.getNodeTransform(node, planarTransformToWorld); RigidBodyTransform snappedTransformToWorld = new RigidBodyTransform(); ConvexPolygon2D foothold = snapData.getCroppedFoothold(); FootstepNodeTools.getSnappedNodeTransform(node, snapData.getSnapTransform(), snappedTransformToWorld); snappedTransformToWorld.appendTranslation(0.0, 0.0, 0.01); planarTransformToWorld.setTranslationZ(snappedTransformToWorld.getTranslationZ() + 0.1); Color regionColor = valid ? Color.GREEN : Color.RED; regionColor = Color.hsb(regionColor.getHue(), 0.9, 1.0); Point2D[] vertices = new Point2D[foothold.getNumberOfVertices()]; for (int j = 0; j < vertices.length; j++) { vertices[j] = new Point2D(foothold.getVertex(j)); } meshBuilder.addMultiLine(snappedTransformToWorld, vertices, 0.01, regionColor, true); meshBuilder.addPolygon(snappedTransformToWorld, foothold, regionColor); // TODO add mesh of planar footstep meshView.setOpacity(0.9); meshView.setMesh(meshBuilder.generateMesh()); meshView.setMaterial(meshBuilder.generateMaterial()); }
return new Pair<>((Node) fxmlRoot, null); } else if (fxmlRoot instanceof TriangleMesh) { return new Pair<>(new MeshView((TriangleMesh) fxmlRoot), null);
if (pmesh == null || pmesh.faces == null) { triangleMesh = new TriangleMesh(); meshView.setMesh(triangleMesh); return; if (DEBUG) System.out.println(" points = "+Arrays.toString(((TriangleMesh) meshView.getMesh()).getPoints().toArray(null))); if (DEBUG) System.out.println(" texCoords = "+Arrays.toString(((TriangleMesh) meshView.getMesh()).getTexCoords().toArray(null))); if (DEBUG) System.out.println(" faces = "+Arrays.toString(((TriangleMesh) meshView.getMesh()).getFaces().toArray(null))); if (meshView.getMesh() != triangleMesh) { meshView.setMesh(triangleMesh);
bufferOcTreeMeshView.setMouseTransparent(true); ocTreeViewer.getRoot().setMouseTransparent(true); boundingBoxMeshView.setMouseTransparent(true);
@Override protected void invalidated() { meshView.setCullFace(get()); } };
@Override protected void invalidated() { meshView.setDrawMode(get()); pointsDirty = pointsSizeDirty = texCoordsDirty = facesDirty = true; updateMesh(); } };
private void render() { Pair<Mesh, Material> meshAndMaterial = meshAndMaterialToRender.getAndSet(null); if (meshAndMaterial != null) { planarRegionMeshView.setMesh(meshAndMaterial.getKey()); planarRegionMeshView.setMaterial(meshAndMaterial.getValue()); } }