Search in sources :

Example 46 with PerspectiveCamera

use of javafx.scene.PerspectiveCamera in project FXyzLib by Birdasaur.

the class CubeWorldTest method start.

@Override
public void start(Stage primaryStage) throws Exception {
    Group sceneRoot = new Group();
    Scene scene = new Scene(sceneRoot, sceneWidth, sceneHeight, true, SceneAntialiasing.BALANCED);
    scene.setFill(Color.BLACK);
    // Setup camera and scatterplot cubeviewer
    camera = new PerspectiveCamera(true);
    cubeWorld = new CubeWorld(5000, 500, true);
    sceneRoot.getChildren().addAll(cubeWorld);
    // setup camera transform for rotational support
    cubeWorld.getChildren().add(cameraTransform);
    cameraTransform.setTranslate(0, 0, 0);
    cameraTransform.getChildren().add(camera);
    camera.setNearClip(0.1);
    camera.setFarClip(20000.0);
    camera.setTranslateZ(-5000);
    cameraTransform.ry.setAngle(-45.0);
    cameraTransform.rx.setAngle(-10.0);
    // add a Point Light for better viewing of the grid coordinate system
    PointLight light = new PointLight(Color.WHITE);
    cameraTransform.getChildren().add(light);
    light.setTranslateX(camera.getTranslateX());
    light.setTranslateY(camera.getTranslateY());
    light.setTranslateZ(camera.getTranslateZ() + 500.0);
    scene.setCamera(camera);
    // First person shooter keyboard movement
    scene.setOnKeyPressed(event -> {
        double change = 10.0;
        // Add shift modifier to simulate "Running Speed"
        if (event.isShiftDown()) {
            change = 50.0;
        }
        // What key did the user press?
        KeyCode keycode = event.getCode();
        // Step 2c: Add Zoom controls
        if (keycode == KeyCode.W) {
            camera.setTranslateZ(camera.getTranslateZ() + change);
        }
        if (keycode == KeyCode.S) {
            camera.setTranslateZ(camera.getTranslateZ() - change);
        }
        // Step 2d:  Add Strafe controls
        if (keycode == KeyCode.A) {
            camera.setTranslateX(camera.getTranslateX() - change);
        }
        if (keycode == KeyCode.D) {
            camera.setTranslateX(camera.getTranslateX() + change);
        }
    });
    scene.setOnMousePressed((MouseEvent me) -> {
        mousePosX = me.getSceneX();
        mousePosY = me.getSceneY();
        mouseOldX = me.getSceneX();
        mouseOldY = me.getSceneY();
    });
    scene.setOnMouseDragged((MouseEvent me) -> {
        mouseOldX = mousePosX;
        mouseOldY = mousePosY;
        mousePosX = me.getSceneX();
        mousePosY = me.getSceneY();
        mouseDeltaX = (mousePosX - mouseOldX);
        mouseDeltaY = (mousePosY - mouseOldY);
        double modifier = 10.0;
        double modifierFactor = 0.1;
        if (me.isControlDown()) {
            modifier = 0.1;
        }
        if (me.isShiftDown()) {
            modifier = 50.0;
        }
        if (me.isPrimaryButtonDown()) {
            // +
            cameraTransform.ry.setAngle(((cameraTransform.ry.getAngle() + mouseDeltaX * modifierFactor * modifier * 2.0) % 360 + 540) % 360 - 180);
            // -
            cameraTransform.rx.setAngle(((cameraTransform.rx.getAngle() - mouseDeltaY * modifierFactor * modifier * 2.0) % 360 + 540) % 360 - 180);
            cubeWorld.adjustPanelsByPos(cameraTransform.rx.getAngle(), cameraTransform.ry.getAngle(), cameraTransform.rz.getAngle());
        } else if (me.isSecondaryButtonDown()) {
            double z = camera.getTranslateZ();
            double newZ = z + mouseDeltaX * modifierFactor * modifier;
            camera.setTranslateZ(newZ);
        } else if (me.isMiddleButtonDown()) {
            // -
            cameraTransform.t.setX(cameraTransform.t.getX() + mouseDeltaX * modifierFactor * modifier * 0.3);
            // -
            cameraTransform.t.setY(cameraTransform.t.getY() + mouseDeltaY * modifierFactor * modifier * 0.3);
        }
    });
    primaryStage.setTitle("F(X)yz CubeViewerTest");
    primaryStage.setScene(scene);
    primaryStage.show();
}
Also used : Group(javafx.scene.Group) CubeWorld(org.fxyz.extras.CubeWorld) MouseEvent(javafx.scene.input.MouseEvent) KeyCode(javafx.scene.input.KeyCode) PerspectiveCamera(javafx.scene.PerspectiveCamera) Scene(javafx.scene.Scene) PointLight(javafx.scene.PointLight)

Example 47 with PerspectiveCamera

use of javafx.scene.PerspectiveCamera in project FXyzLib by Birdasaur.

the class CuboidTest method start.

@Override
public void start(Stage primaryStage) throws Exception {
    Group sceneRoot = new Group();
    Scene scene = new Scene(sceneRoot, sceneWidth, sceneHeight, true, SceneAntialiasing.BALANCED);
    scene.setFill(Color.BLACK);
    camera = new PerspectiveCamera(true);
    // setup camera transform for rotational support
    cameraTransform.setTranslate(0, 0, 0);
    cameraTransform.getChildren().add(camera);
    camera.setNearClip(0.1);
    camera.setFarClip(10000.0);
    camera.setTranslateZ(-30);
    cameraTransform.ry.setAngle(-45.0);
    cameraTransform.rx.setAngle(-10.0);
    // add a Point Light for better viewing of the grid coordinate system
    PointLight light = new PointLight(Color.WHITE);
    cameraTransform.getChildren().add(light);
    light.setTranslateX(camera.getTranslateX());
    light.setTranslateY(camera.getTranslateY());
    light.setTranslateZ(10 * camera.getTranslateZ());
    scene.setCamera(camera);
    rotateY = new Rotate(0, 0, 0, 0, Rotate.Y_AXIS);
    Group group = new Group();
    group.getChildren().add(cameraTransform);
    cuboid = new CuboidMesh(10f, 12f, 4f, 5, new Point3D(0f, 0f, 0f));
    // cuboid.setDrawMode(DrawMode.LINE);
    // cuboid.setCullFace(CullFace.NONE);
    // NONE
    cuboid.setTextureModeNone(Color.ROYALBLUE);
    // IMAGE
    // cuboid.setTextureModeImage(getClass().getResource("res/netCuboid.png").toExternalForm());
    // DENSITY
    // cuboid.setTextureModeVertices3D(256*256,p->(double)p.x*p.y*p.z);
    // FACES
    // cuboid.setTextureModeFaces(1530);
    cuboid.getTransforms().addAll(new Rotate(0, Rotate.X_AXIS), rotateY);
    group.getChildren().add(cuboid);
    boolean testRayIntersection = false;
    if (testRayIntersection) {
        /*
            RAY INTERSECTION
            */
        javafx.geometry.Point3D gloOrigin = new javafx.geometry.Point3D(4, -7, -4);
        javafx.geometry.Point3D gloTarget = new javafx.geometry.Point3D(2, 3, 4);
        javafx.geometry.Point3D gloDirection = gloTarget.subtract(gloOrigin).normalize();
        javafx.geometry.Point3D gloOriginInLoc = cuboid.sceneToLocal(gloOrigin);
        Bounds locBounds = cuboid.getBoundsInLocal();
        Bounds gloBounds = cuboid.localToScene(locBounds);
        Sphere s = new Sphere(0.05d);
        s.getTransforms().add(new Translate(gloOrigin.getX(), gloOrigin.getY(), gloOrigin.getZ()));
        s.setMaterial(new PhongMaterial(Color.GREENYELLOW));
        group.getChildren().add(s);
        s = new Sphere(0.05d);
        s.getTransforms().add(new Translate(gloTarget.getX(), gloTarget.getY(), gloTarget.getZ()));
        s.setMaterial(new PhongMaterial(Color.GREENYELLOW));
        group.getChildren().add(s);
        javafx.geometry.Point3D dir = gloTarget.subtract(gloOrigin).crossProduct(new javafx.geometry.Point3D(0, -1, 0));
        double angle = Math.acos(gloTarget.subtract(gloOrigin).normalize().dotProduct(new javafx.geometry.Point3D(0, -1, 0)));
        double h1 = gloTarget.subtract(gloOrigin).magnitude();
        Cylinder c = new Cylinder(0.03d, h1);
        c.getTransforms().addAll(new Translate(gloOrigin.getX(), gloOrigin.getY() - h1 / 2d, gloOrigin.getZ()), new Rotate(-Math.toDegrees(angle), 0d, h1 / 2d, 0d, new javafx.geometry.Point3D(dir.getX(), -dir.getY(), dir.getZ())));
        c.setMaterial(new PhongMaterial(Color.GREEN));
        group.getChildren().add(c);
        group.getChildren().add(new Axes(0.02));
        Box box = new Box(gloBounds.getWidth(), gloBounds.getHeight(), gloBounds.getDepth());
        box.setDrawMode(DrawMode.LINE);
        box.setMaterial(new PhongMaterial(Color.BLUEVIOLET));
        box.getTransforms().add(new Translate(gloBounds.getMinX() + gloBounds.getWidth() / 2d, gloBounds.getMinY() + gloBounds.getHeight() / 2d, gloBounds.getMinZ() + gloBounds.getDepth() / 2d));
        // group.getChildren().add(box);
        /*
            FIRST STEP; Check the ray crosses the bounding box of the shape at any of
            its 6 faces
            */
        List<javafx.geometry.Point3D> normals = Arrays.asList(new javafx.geometry.Point3D(-1, 0, 0), new javafx.geometry.Point3D(1, 0, 0), new javafx.geometry.Point3D(0, -1, 0), new javafx.geometry.Point3D(0, 1, 0), new javafx.geometry.Point3D(0, 0, -1), new javafx.geometry.Point3D(0, 0, 1));
        List<javafx.geometry.Point3D> positions = Arrays.asList(new javafx.geometry.Point3D(locBounds.getMinX(), 0, 0), new javafx.geometry.Point3D(locBounds.getMaxX(), 0, 0), new javafx.geometry.Point3D(0, locBounds.getMinY(), 0), new javafx.geometry.Point3D(0, locBounds.getMaxY(), 0), new javafx.geometry.Point3D(0, 0, locBounds.getMinZ()), new javafx.geometry.Point3D(0, 0, locBounds.getMaxZ()));
        AtomicInteger counter = new AtomicInteger();
        IntStream.range(0, 6).forEach(i -> {
            // ray[t]= ori+t.dir; t/ray[t]=P in plane
            // plane P·N+d=0->(ori+t*dir)·N+d=0->t=-(ori.N+d)/(dir.N)
            // P=P(x,y,z), N={a,b,c}, d=-a·x0-b·y0-c·z0
            double d = -normals.get(i).dotProduct(positions.get(i));
            double t = -(gloOriginInLoc.dotProduct(normals.get(i)) + d) / (gloDirection.dotProduct(normals.get(i)));
            javafx.geometry.Point3D locInter = gloOriginInLoc.add(gloDirection.multiply(t));
            if (locBounds.contains(locInter)) {
                counter.getAndIncrement();
                javafx.geometry.Point3D gloInter = cuboid.localToScene(locInter);
                Sphere s2 = new Sphere(0.1d);
                s2.getTransforms().add(new Translate(gloInter.getX(), gloInter.getY(), gloInter.getZ()));
                s2.setMaterial(new PhongMaterial(Color.GOLD));
            // group.getChildren().add(s2);
            }
        });
        if (counter.get() > 0) {
            /*
                SECOND STEP: Check if the ray crosses any of the triangles of the mesh
                */
            // triangle mesh
            org.fxyz.geometry.Point3D gloOriginInLoc1 = new org.fxyz.geometry.Point3D((float) gloOriginInLoc.getX(), (float) gloOriginInLoc.getY(), (float) gloOriginInLoc.getZ());
            org.fxyz.geometry.Point3D gloDirection1 = new org.fxyz.geometry.Point3D((float) gloDirection.getX(), (float) gloDirection.getY(), (float) gloDirection.getZ());
            System.out.println("number of intersections: " + cuboid.getIntersections(gloOriginInLoc1, gloDirection1));
        }
    }
    sceneRoot.getChildren().addAll(group);
    // First person shooter keyboard movement
    scene.setOnKeyPressed(event -> {
        double change = 10.0;
        // Add shift modifier to simulate "Running Speed"
        if (event.isShiftDown()) {
            change = 50.0;
        }
        // What key did the user press?
        KeyCode keycode = event.getCode();
        // Step 2c: Add Zoom controls
        if (keycode == KeyCode.W) {
            camera.setTranslateZ(camera.getTranslateZ() + change);
        }
        if (keycode == KeyCode.S) {
            camera.setTranslateZ(camera.getTranslateZ() - change);
        }
        // Step 2d:  Add Strafe controls
        if (keycode == KeyCode.A) {
            camera.setTranslateX(camera.getTranslateX() - change);
        }
        if (keycode == KeyCode.D) {
            camera.setTranslateX(camera.getTranslateX() + change);
        }
    });
    scene.setOnMousePressed((MouseEvent me) -> {
        mousePosX = me.getSceneX();
        mousePosY = me.getSceneY();
        mouseOldX = me.getSceneX();
        mouseOldY = me.getSceneY();
    });
    scene.setOnMouseDragged((MouseEvent me) -> {
        mouseOldX = mousePosX;
        mouseOldY = mousePosY;
        mousePosX = me.getSceneX();
        mousePosY = me.getSceneY();
        mouseDeltaX = (mousePosX - mouseOldX);
        mouseDeltaY = (mousePosY - mouseOldY);
        double modifier = 10.0;
        double modifierFactor = 0.1;
        if (me.isControlDown()) {
            modifier = 0.1;
        }
        if (me.isShiftDown()) {
            modifier = 50.0;
        }
        if (me.isPrimaryButtonDown()) {
            // +
            cameraTransform.ry.setAngle(((cameraTransform.ry.getAngle() + mouseDeltaX * modifierFactor * modifier * 2.0) % 360 + 540) % 360 - 180);
            // -
            cameraTransform.rx.setAngle(((cameraTransform.rx.getAngle() - mouseDeltaY * modifierFactor * modifier * 2.0) % 360 + 540) % 360 - 180);
        } else if (me.isSecondaryButtonDown()) {
            double z = camera.getTranslateZ();
            double newZ = z + mouseDeltaX * modifierFactor * modifier;
            camera.setTranslateZ(newZ);
        } else if (me.isMiddleButtonDown()) {
            // -
            cameraTransform.t.setX(cameraTransform.t.getX() + mouseDeltaX * modifierFactor * modifier * 0.3);
            // -
            cameraTransform.t.setY(cameraTransform.t.getY() + mouseDeltaY * modifierFactor * modifier * 0.3);
        }
    });
    primaryStage.setTitle("F(X)yz - Cuboid Test");
    primaryStage.setScene(scene);
    primaryStage.show();
    OBJWriter writer = new OBJWriter((TriangleMesh) cuboid.getMesh(), "cuboid");
    // writer.setMaterialColor(Color.AQUA);
    // writer.setTextureImage(getClass().getResource("res/netCuboid.png").toExternalForm());
    writer.setTextureColors(256 * 256);
    writer.exportMesh();
}
Also used : Group(javafx.scene.Group) Rotate(javafx.scene.transform.Rotate) PerspectiveCamera(javafx.scene.PerspectiveCamera) OBJWriter(org.fxyz.utils.OBJWriter) Sphere(javafx.scene.shape.Sphere) Axes(org.fxyz.utils.Axes) KeyCode(javafx.scene.input.KeyCode) PhongMaterial(javafx.scene.paint.PhongMaterial) Translate(javafx.scene.transform.Translate) CuboidMesh(org.fxyz.shapes.primitives.CuboidMesh) MouseEvent(javafx.scene.input.MouseEvent) Bounds(javafx.geometry.Bounds) Box(javafx.scene.shape.Box) Scene(javafx.scene.Scene) Cylinder(javafx.scene.shape.Cylinder) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Point3D(org.fxyz.geometry.Point3D) PointLight(javafx.scene.PointLight) Point3D(org.fxyz.geometry.Point3D)

Example 48 with PerspectiveCamera

use of javafx.scene.PerspectiveCamera in project FXyzLib by Birdasaur.

the class BezierTest method start.

@Override
public void start(Stage primaryStage) throws Exception {
    Group sceneRoot = new Group();
    Scene scene = new Scene(sceneRoot, sceneWidth, sceneHeight, true, SceneAntialiasing.BALANCED);
    scene.setFill(Color.BLACK);
    camera = new PerspectiveCamera(true);
    // setup camera transform for rotational support
    cameraTransform.setTranslate(0, 0, 0);
    cameraTransform.getChildren().add(camera);
    camera.setNearClip(0.1);
    camera.setFarClip(10000.0);
    camera.setTranslateZ(-10);
    cameraTransform.ry.setAngle(-45.0);
    cameraTransform.rx.setAngle(-10.0);
    // add a Point Light for better viewing of the grid coordinate system
    PointLight light = new PointLight(Color.WHITE);
    cameraTransform.getChildren().add(light);
    cameraTransform.getChildren().add(new AmbientLight(Color.WHITE));
    light.setTranslateX(camera.getTranslateX());
    light.setTranslateY(camera.getTranslateY());
    light.setTranslateZ(camera.getTranslateZ());
    scene.setCamera(camera);
    rotateY = new Rotate(0, 0, 0, 0, Rotate.Y_AXIS);
    Group group = new Group();
    group.getChildren().add(cameraTransform);
    // List<Point3D> knots=Arrays.asList(new Point3D(0f,0f,0f),new Point3D(3f,0f,2f),
    // new Point3D(5f,2f,3f),new Point3D(7f,-3f,0f),new Point3D(6f,-1f,-4f));
    List<Point3D> knots = Arrays.asList(new Point3D(3f, 0f, 0f), new Point3D(0.77171f, 1.68981f, 0.989821f), new Point3D(-0.681387f, 0.786363f, -0.281733f), new Point3D(-2.31757f, -0.680501f, -0.909632f), new Point3D(-0.404353f, -2.81233f, 0.540641f), new Point3D(1.1316f, -0.727237f, 0.75575f), new Point3D(1.1316f, 0.727237f, -0.75575f), new Point3D(-0.404353f, 2.81233f, -0.540641f), new Point3D(-2.31757f, 0.680501f, 0.909632f), new Point3D(-0.681387f, -0.786363f, 0.281733f), new Point3D(0.77171f, -1.68981f, -0.989821f), new Point3D(3f, 0f, 0f));
    boolean showControlPoints = true;
    boolean showKnots = true;
    InterpolateBezier interpolate = new InterpolateBezier(knots);
    beziers = new ArrayList<>();
    AtomicInteger sp = new AtomicInteger();
    if (showKnots || showControlPoints) {
        interpolate.getSplines().forEach(spline -> {
            Point3D k0 = spline.getPoints().get(0);
            Point3D k1 = spline.getPoints().get(1);
            Point3D k2 = spline.getPoints().get(2);
            Point3D k3 = spline.getPoints().get(3);
            if (showKnots) {
                Sphere s = new Sphere(0.2d);
                s.getTransforms().add(new Translate(k0.x, k0.y, k0.z));
                s.setMaterial(new PhongMaterial(Color.GREENYELLOW));
                group.getChildren().add(s);
                s = new Sphere(0.2d);
                s.getTransforms().add(new Translate(k3.x, k3.y, k3.z));
                s.setMaterial(new PhongMaterial(Color.GREENYELLOW));
                group.getChildren().add(s);
            }
            if (showControlPoints) {
                PrismMesh c = new PrismMesh(0.03d, 1d, 1, k0, k1);
                c.setTextureModeNone(Color.GREEN);
                group.getChildren().add(c);
                c = new PrismMesh(0.03d, 1d, 1, k1, k2);
                c.setTextureModeNone(Color.GREEN);
                group.getChildren().add(c);
                c = new PrismMesh(0.03d, 1d, 1, k2, k3);
                c.setTextureModeNone(Color.GREEN);
                group.getChildren().add(c);
                Sphere s = new Sphere(0.1d);
                s.getTransforms().add(new Translate(k1.x, k1.y, k1.z));
                s.setMaterial(new PhongMaterial(Color.RED));
                group.getChildren().add(s);
                s = new Sphere(0.1d);
                s.getTransforms().add(new Translate(k2.x, k2.y, k2.z));
                s.setMaterial(new PhongMaterial(Color.RED));
                group.getChildren().add(s);
            }
        });
    }
    long time = System.currentTimeMillis();
    interpolate.getSplines().stream().forEach(spline -> {
        BezierMesh bezier = new BezierMesh(spline, 0.1d, 300, 20, 0, 0);
        // bezier.setDrawMode(DrawMode.LINE);
        // bezier.setCullFace(CullFace.NONE);
        // bezier.setSectionType(SectionType.TRIANGLE);
        // NONE
        // bezier.setTextureModeNone(Color.hsb(360d*sp.getAndIncrement()/interpolate.getSplines().size(), 1, 1));
        // IMAGE
        // bezier.setTextureModeImage(getClass().getResource("res/LaminateSteel.jpg").toExternalForm());
        // PATTERN
        // bezier.setTextureModePattern(3d);
        // FUNCTION
        bezier.setTextureModeVertices1D(1530, t -> spline.getKappa(t.doubleValue()));
        // bezier.setTextureModeVertices1D(1530,func);
        // DENSITY
        // bezier.setTextureModeVertices3D(256*256,dens);
        // FACES
        // bezier.setTextureModeFaces(256*256);
        bezier.getTransforms().addAll(new Rotate(0, Rotate.X_AXIS), rotateY);
        beziers.add(bezier);
    });
    // 43.815->25.606->15
    System.out.println("time: " + (System.currentTimeMillis() - time));
    group.getChildren().addAll(beziers);
    sceneRoot.getChildren().addAll(group);
    // First person shooter keyboard movement
    scene.setOnKeyPressed(event -> {
        double change = 10.0;
        // Add shift modifier to simulate "Running Speed"
        if (event.isShiftDown()) {
            change = 50.0;
        }
        // What key did the user press?
        KeyCode keycode = event.getCode();
        // Step 2c: Add Zoom controls
        if (keycode == KeyCode.W) {
            camera.setTranslateZ(camera.getTranslateZ() + change);
        }
        if (keycode == KeyCode.S) {
            camera.setTranslateZ(camera.getTranslateZ() - change);
        }
        // Step 2d:  Add Strafe controls
        if (keycode == KeyCode.A) {
            camera.setTranslateX(camera.getTranslateX() - change);
        }
        if (keycode == KeyCode.D) {
            camera.setTranslateX(camera.getTranslateX() + change);
        }
    });
    scene.setOnMousePressed((MouseEvent me) -> {
        mousePosX = me.getSceneX();
        mousePosY = me.getSceneY();
        mouseOldX = me.getSceneX();
        mouseOldY = me.getSceneY();
    });
    scene.setOnMouseDragged((MouseEvent me) -> {
        mouseOldX = mousePosX;
        mouseOldY = mousePosY;
        mousePosX = me.getSceneX();
        mousePosY = me.getSceneY();
        mouseDeltaX = (mousePosX - mouseOldX);
        mouseDeltaY = (mousePosY - mouseOldY);
        double modifier = 10.0;
        double modifierFactor = 0.1;
        if (me.isControlDown()) {
            modifier = 0.1;
        }
        if (me.isShiftDown()) {
            modifier = 50.0;
        }
        if (me.isPrimaryButtonDown()) {
            // +
            cameraTransform.ry.setAngle(((cameraTransform.ry.getAngle() + mouseDeltaX * modifierFactor * modifier * 2.0) % 360 + 540) % 360 - 180);
            // -
            cameraTransform.rx.setAngle(((cameraTransform.rx.getAngle() - mouseDeltaY * modifierFactor * modifier * 2.0) % 360 + 540) % 360 - 180);
        } else if (me.isSecondaryButtonDown()) {
            double z = camera.getTranslateZ();
            double newZ = z + mouseDeltaX * modifierFactor * modifier;
            camera.setTranslateZ(newZ);
        } else if (me.isMiddleButtonDown()) {
            // -
            cameraTransform.t.setX(cameraTransform.t.getX() + mouseDeltaX * modifierFactor * modifier * 0.3);
            // -
            cameraTransform.t.setY(cameraTransform.t.getY() + mouseDeltaY * modifierFactor * modifier * 0.3);
        }
    });
    lastEffect = System.nanoTime();
    AtomicInteger count = new AtomicInteger();
    AnimationTimer timerEffect = new AnimationTimer() {

        @Override
        public void handle(long now) {
            if (now > lastEffect + 1_000_000_000l) {
                // Point3D loc = knot.getPositionAt((count.get()%100)*2d*Math.PI/100d);
                // Point3D dir = knot.getTangentAt((count.get()%100)*2d*Math.PI/100d);
                // cameraTransform.t.setX(loc.x);
                // cameraTransform.t.setY(loc.y);
                // cameraTransform.t.setZ(-loc.z);
                // javafx.geometry.Point3D axis = cameraTransform.rx.getAxis();
                // javafx.geometry.Point3D cross = axis.crossProduct(-dir.x,-dir.y,-dir.z);
                // double angle = axis.angle(-dir.x,-dir.y,-dir.z);
                // cameraTransform.rx.setAngle(angle);
                // cameraTransform.rx.setAxis(new javafx.geometry.Point3D(cross.getX(),-cross.getY(),cross.getZ()));
                // dens = p->(float)(p.x*Math.cos(count.get()%100d*2d*Math.PI/50d)+p.y*Math.sin(count.get()%100d*2d*Math.PI/50d));
                func = t -> Math.pow(t.doubleValue(), (count.get() % 5d));
                beziers.forEach(b -> b.setFunction(func));
                // knot.setP(1+(count.get()%5));
                // knot.setQ(2+(count.get()%15));
                // if(count.get()%100<50){
                // knot.setDrawMode(DrawMode.LINE);
                // } else {
                // knot.setDrawMode(DrawMode.FILL);
                // }
                // beziers.forEach(b->b.setColors((int)Math.pow(2,count.get()%16)));
                // beziers.forEach(b->b.setWireRadius(0.1d+(count.get()%6)/10d));
                // beziers.forEach(b->b.setPatternScale(1d+(count.get()%10)*3d));
                // beziers.forEach(b->b.setSectionType(SectionType.values()[count.get()%SectionType.values().length]));
                count.getAndIncrement();
                lastEffect = now;
            }
        }
    };
    primaryStage.setTitle("F(X)yz - Bezier Splines");
    primaryStage.setScene(scene);
    primaryStage.show();
    timerEffect.start();
}
Also used : Group(javafx.scene.Group) MouseEvent(javafx.scene.input.MouseEvent) Rotate(javafx.scene.transform.Rotate) AnimationTimer(javafx.animation.AnimationTimer) PerspectiveCamera(javafx.scene.PerspectiveCamera) Scene(javafx.scene.Scene) Sphere(javafx.scene.shape.Sphere) InterpolateBezier(org.fxyz.shapes.primitives.helper.InterpolateBezier) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Point3D(org.fxyz.geometry.Point3D) PrismMesh(org.fxyz.shapes.primitives.PrismMesh) KeyCode(javafx.scene.input.KeyCode) PointLight(javafx.scene.PointLight) PhongMaterial(javafx.scene.paint.PhongMaterial) Translate(javafx.scene.transform.Translate) BezierMesh(org.fxyz.shapes.primitives.BezierMesh) AmbientLight(javafx.scene.AmbientLight)

Example 49 with PerspectiveCamera

use of javafx.scene.PerspectiveCamera in project tilesfx by HanSolo.

the class Demo method start.

@Override
public void start(Stage stage) {
    FlowGridPane pane = new FlowGridPane(8, 5, percentageTile, clockTile, gaugeTile, sparkLineTile, areaChartTile, lineChartTile, timerControlTile, numberTile, textTile, highLowTile, plusMinusTile, sliderTile, switchTile, timeTile, barChartTile, customTile, leaderBoardTile, worldTile, mapTile, radialChartTile, donutChartTile, circularProgressTile, stockTile, gaugeSparkLineTile, radarChartTile1, radarChartTile2, smoothAreaChartTile, countryTile, ephemerisTile, characterTile, flipTile, switchSliderTile, dateTile, calendarTile, sunburstTile, matrixTile, // , weatherTile);
    radialPercentageTile);
    pane.setHgap(5);
    pane.setVgap(5);
    pane.setAlignment(Pos.CENTER);
    pane.setCenterShape(true);
    pane.setPadding(new Insets(5));
    // pane.setPrefSize(800, 600);
    pane.setBackground(new Background(new BackgroundFill(Color.web("#101214"), CornerRadii.EMPTY, Insets.EMPTY)));
    PerspectiveCamera camera = new PerspectiveCamera();
    camera.setFieldOfView(10);
    Scene scene = new Scene(pane);
    scene.setCamera(camera);
    stage.setTitle("TilesFX");
    stage.setScene(scene);
    stage.show();
    // Calculate number of nodes
    calcNoOfNodes(pane);
    System.out.println(noOfNodes + " Nodes in SceneGraph");
    timer.start();
    mapTile.addPoiLocation(new Location(51.85, 7.75, "Test"));
    mapTile.removePoiLocation(new Location(51.85, 7.75, "Test"));
    radialPercentageTile.showNotifier(true);
}
Also used : Insets(javafx.geometry.Insets) Background(javafx.scene.layout.Background) BackgroundFill(javafx.scene.layout.BackgroundFill) PerspectiveCamera(javafx.scene.PerspectiveCamera) Scene(javafx.scene.Scene) FlowGridPane(eu.hansolo.tilesfx.tools.FlowGridPane) Location(eu.hansolo.tilesfx.tools.Location)

Example 50 with PerspectiveCamera

use of javafx.scene.PerspectiveCamera in project Board-Instrumentation-Framework by intel.

the class Demo method start.

@Override
public void start(Stage stage) {
    BorderPane pane = new BorderPane(flipPanel);
    pane.setPrefSize(400, 250);
    pane.setPadding(new Insets(50, 50, 50, 50));
    pane.setBackground(new Background(new BackgroundFill(Color.rgb(68, 68, 68), CornerRadii.EMPTY, Insets.EMPTY)));
    PerspectiveCamera camera = new PerspectiveCamera(false);
    camera.setFieldOfView(20);
    Scene scene = new Scene(pane);
    scene.setCamera(camera);
    scene.getStylesheets().add(Demo.class.getResource("styles.css").toExternalForm());
    stage.setTitle("FlipPanel Demo");
    stage.setScene(scene);
    stage.show();
}
Also used : BorderPane(javafx.scene.layout.BorderPane) Insets(javafx.geometry.Insets) Background(javafx.scene.layout.Background) BackgroundFill(javafx.scene.layout.BackgroundFill) PerspectiveCamera(javafx.scene.PerspectiveCamera) Scene(javafx.scene.Scene)

Aggregations

PerspectiveCamera (javafx.scene.PerspectiveCamera)51 Scene (javafx.scene.Scene)36 Group (javafx.scene.Group)31 KeyCode (javafx.scene.input.KeyCode)31 PointLight (javafx.scene.PointLight)28 Rotate (javafx.scene.transform.Rotate)25 MouseEvent (javafx.scene.input.MouseEvent)23 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)16 AnimationTimer (javafx.animation.AnimationTimer)14 KeyFrame (javafx.animation.KeyFrame)12 KeyValue (javafx.animation.KeyValue)12 Timeline (javafx.animation.Timeline)12 Point3D (org.fxyz.geometry.Point3D)11 AmbientLight (javafx.scene.AmbientLight)10 Translate (javafx.scene.transform.Translate)10 Color (javafx.scene.paint.Color)9 ArrayList (java.util.ArrayList)8 Interpolator (javafx.animation.Interpolator)7 OBJWriter (org.fxyz.utils.OBJWriter)7 PhongMaterial (javafx.scene.paint.PhongMaterial)6