Search in sources :

Example 31 with Color

use of javafx.scene.paint.Color in project fxexperience2 by EricCanull.

the class PaintPickerController method getMode.

public Mode getMode() {
    final Mode mode;
    final Paint value = getPaintProperty();
    if (value instanceof Color) {
        mode = Mode.COLOR;
    } else if (value instanceof LinearGradient) {
        mode = Mode.LINEAR;
    } else {
        assert value instanceof RadialGradient;
        mode = Mode.RADIAL;
    }
    return mode;
}
Also used : LinearGradient(javafx.scene.paint.LinearGradient) Mode(com.fxexperience.javafx.scene.control.paintpicker.PaintPicker.Mode) Color(javafx.scene.paint.Color) RadialGradient(javafx.scene.paint.RadialGradient) Paint(javafx.scene.paint.Paint)

Example 32 with Color

use of javafx.scene.paint.Color in project FXyzLib by Birdasaur.

the class OctahedronTest method generateShapes.

private void generateShapes() {
    for (int i = 0; i < 100; i++) {
        Random r = new Random();
        //A lot of magic numbers in here that just artificially constrain the math
        float randomHypotenuse = (float) ((r.nextFloat() * 300) + 25);
        float randomHeight = (float) ((r.nextFloat() * 200) + 25);
        Color randomColor = new Color(r.nextDouble(), r.nextDouble(), r.nextDouble(), r.nextDouble());
        Octahedron octahedron = new Octahedron(randomHypotenuse, randomHeight, randomColor);
        octahedron.setEmissiveLightingColor(randomColor);
        octahedron.setEmissiveLightingOn(r.nextBoolean());
        octahedron.setDrawMode(r.nextBoolean() ? DrawMode.FILL : DrawMode.LINE);
        double translationX = Math.random() * 1024;
        if (Math.random() >= 0.5) {
            translationX *= -1;
        }
        double translationY = Math.random() * 1024;
        if (Math.random() >= 0.5) {
            translationY *= -1;
        }
        double translationZ = Math.random() * 1024;
        if (Math.random() >= 0.5) {
            translationZ *= -1;
        }
        Translate translate = new Translate(translationX, translationY, translationZ);
        Rotate rotateX = new Rotate(Math.random() * 360, Rotate.X_AXIS);
        Rotate rotateY = new Rotate(Math.random() * 360, Rotate.Y_AXIS);
        Rotate rotateZ = new Rotate(Math.random() * 360, Rotate.Z_AXIS);
        octahedron.getTransforms().addAll(translate, rotateX, rotateY, rotateZ);
        shapeGroup.getChildren().add(octahedron);
    }
}
Also used : Random(java.util.Random) Rotate(javafx.scene.transform.Rotate) Color(javafx.scene.paint.Color) Octahedron(org.fxyz.shapes.Octahedron) Translate(javafx.scene.transform.Translate)

Example 33 with Color

use of javafx.scene.paint.Color in project FXyzLib by Birdasaur.

the class ScatterPlotColorTest 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);
    camera.setNearClip(0.1);
    camera.setFarClip(10000.0);
    camera.setTranslateZ(-1000);
    scene.setCamera(camera);
    scatterPlot = new ScatterPlot(1000, 1, true);
    sceneRoot.getChildren().addAll(scatterPlot);
    List<Double> dataX = new ArrayList<>();
    List<Double> dataY = new ArrayList<>();
    List<Double> dataZ = new ArrayList<>();
    List<Color> colors = new ArrayList<>();
    int k = 0;
    for (int i = -250; i < 250; i++) {
        dataX.add(new Double(i));
        dataY.add(Math.sin(i) * 50 + i);
        dataZ.add(Math.cos(i) * 50 + i);
        colors.add(new Color(Math.abs(i) / 250D, Math.abs(dataY.get(k)) / 300D, Math.abs(dataZ.get(k) / 300D), 0.25));
        k++;
    }
    scatterPlot.setXYZData(dataX, dataY, dataZ, colors);
    scene.setOnKeyPressed(event -> {
        double change = 10.0;
        if (event.isShiftDown()) {
            change = 50.0;
        }
        KeyCode keycode = event.getCode();
        if (keycode == KeyCode.W) {
            camera.setTranslateZ(camera.getTranslateZ() + change);
        }
        if (keycode == KeyCode.S) {
            camera.setTranslateZ(camera.getTranslateZ() - change);
        }
        if (keycode == KeyCode.A) {
            camera.setTranslateX(camera.getTranslateX() - change);
        }
        if (keycode == KeyCode.D) {
            camera.setTranslateX(camera.getTranslateX() + change);
        }
    });
    //Add a Mouse Handler for Rotations
    Rotate xRotate = new Rotate(0, Rotate.X_AXIS);
    Rotate yRotate = new Rotate(0, Rotate.Y_AXIS);
    Rotate zRotate = new Rotate(0, Rotate.Z_AXIS);
    scatterPlot.getTransforms().addAll(xRotate, yRotate);
    //Use Binding so your rotation doesn't have to be recreated
    xRotate.angleProperty().bind(angleX);
    yRotate.angleProperty().bind(angleY);
    zRotate.angleProperty().bind(angleZ);
    //Start Tracking mouse movements only when a button is pressed
    scene.setOnMousePressed(event -> {
        scenex = event.getSceneX();
        sceney = event.getSceneY();
        fixedXAngle = angleX.get();
        fixedYAngle = angleY.get();
        if (event.isMiddleButtonDown()) {
            scenez = event.getSceneX();
            fixedZAngle = angleZ.get();
        }
    });
    //Angle calculation will only change when the button has been pressed
    scene.setOnMouseDragged(event -> {
        if (event.isMiddleButtonDown())
            angleZ.set(fixedZAngle - (scenez - event.getSceneY()));
        else
            angleX.set(fixedXAngle - (scenex - event.getSceneY()));
        angleY.set(fixedYAngle + sceney - event.getSceneX());
    });
    primaryStage.setTitle("F(X)yz ScatterPlotColorTest");
    primaryStage.setScene(scene);
    primaryStage.show();
}
Also used : Group(javafx.scene.Group) ScatterPlot(org.fxyz.shapes.composites.ScatterPlot) Rotate(javafx.scene.transform.Rotate) Color(javafx.scene.paint.Color) ArrayList(java.util.ArrayList) PerspectiveCamera(javafx.scene.PerspectiveCamera) Scene(javafx.scene.Scene) KeyCode(javafx.scene.input.KeyCode)

Example 34 with Color

use of javafx.scene.paint.Color in project FXyzLib by Birdasaur.

the class SkyBoxTest method start.

@Override
public void start(Stage primaryStage) throws NonInvertibleTransformException {
    root = new Group();
    camera = new PerspectiveCamera(true);
    cameraTransform.setTranslate(0, 0, 0);
    cameraTransform.getChildren().addAll(camera);
    camera.setNearClip(0.1);
    camera.setFarClip(1000000.0);
    camera.setFieldOfView(42);
    camera.setTranslateZ(-cameraDistance);
    //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());
    root.getChildren().add(cameraTransform);
    // Load Skybox AFTER camera is initialized
    double size = 100000D;
    skyBox = new Skybox(top, bottom, left, right, front, back, size, camera);
    //Make a bunch of semi random Torusesessses(toroids?) and stuff : from torustest
    Group torusGroup = new Group();
    torusGroup.getChildren().add(cameraTransform);
    for (int i = 0; i < 30; i++) {
        Random r = new Random();
        //A lot of magic numbers in here that just artificially constrain the math
        float randomRadius = (float) ((r.nextFloat() * 300) + 50);
        float randomTubeRadius = (float) ((r.nextFloat() * 100) + 1);
        int randomTubeDivisions = (int) ((r.nextFloat() * 64) + 1);
        int randomRadiusDivisions = (int) ((r.nextFloat() * 64) + 1);
        Color randomColor = new Color(r.nextDouble(), r.nextDouble(), r.nextDouble(), r.nextDouble());
        Torus torus = new Torus(randomTubeDivisions, randomRadiusDivisions, randomRadius, randomTubeRadius, randomColor);
        double translationX = Math.random() * 1024 * 1.95;
        if (Math.random() >= 0.5) {
            translationX *= -1;
        }
        double translationY = Math.random() * 1024 * 1.95;
        if (Math.random() >= 0.5) {
            translationY *= -1;
        }
        double translationZ = Math.random() * 1024 * 1.95;
        if (Math.random() >= 0.5) {
            translationZ *= -1;
        }
        Translate translate = new Translate(translationX, translationY, translationZ);
        Rotate rotateX = new Rotate(Math.random() * 360, Rotate.X_AXIS);
        Rotate rotateY = new Rotate(Math.random() * 360, Rotate.Y_AXIS);
        Rotate rotateZ = new Rotate(Math.random() * 360, Rotate.Z_AXIS);
        torus.getTransforms().addAll(translate, rotateX, rotateY, rotateZ);
        //torus.getTransforms().add(translate);
        torusGroup.getChildren().add(torus);
    }
    Scene scene = new Scene(new Group(root), 1024, 668, true, SceneAntialiasing.BALANCED);
    scene.setFill(Color.TRANSPARENT);
    scene.setCamera(camera);
    //First person shooter keyboard movement
    scene.setOnKeyPressed(event -> {
        double change = 10.0;
        if (event.isShiftDown()) {
            change = 50.0;
        }
        KeyCode keycode = event.getCode();
        if (keycode == KeyCode.W) {
            camera.setTranslateZ(camera.getTranslateZ() + change);
        }
        if (keycode == KeyCode.S) {
            camera.setTranslateZ(camera.getTranslateZ() - change);
        }
        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("SkyBoxTest!");
    primaryStage.setScene(scene);
    primaryStage.show();
    root.getChildren().addAll(skyBox, torusGroup);
    root.setAutoSizeChildren(true);
}
Also used : Group(javafx.scene.Group) MouseEvent(javafx.scene.input.MouseEvent) Rotate(javafx.scene.transform.Rotate) Torus(org.fxyz.shapes.Torus) Color(javafx.scene.paint.Color) PerspectiveCamera(javafx.scene.PerspectiveCamera) Scene(javafx.scene.Scene) Skybox(org.fxyz.extras.Skybox) Random(java.util.Random) KeyCode(javafx.scene.input.KeyCode) PointLight(javafx.scene.PointLight) Translate(javafx.scene.transform.Translate)

Example 35 with Color

use of javafx.scene.paint.Color in project FXyzLib by Birdasaur.

the class SphereSegmentTest method start.

@Override
public void start(Stage primaryStage) throws Exception {
    Group sceneRoot = new Group();
    Scene scene = new Scene(sceneRoot, sceneWidth, sceneHeight);
    scene.setFill(Color.BLACK);
    camera = new PerspectiveCamera(true);
    camera.setNearClip(0.1);
    camera.setFarClip(10000.0);
    camera.setTranslateZ(-1000);
    scene.setCamera(camera);
    //Make a bunch of semi random sphere segments and stuff
    Group sphereGroup = new Group();
    for (int i = 0; i < 30; i++) {
        Random r = new Random();
        //A lot of magic numbers in here that just artificially constrain the math
        float randomRadius = (float) ((r.nextFloat() * 150) + 10);
        float randomThetaMax = (float) ((r.nextFloat() * 360) + 1);
        float randomThetaMin = (float) ((r.nextFloat()) + 1);
        if (randomThetaMin > randomThetaMax) {
            float swap = randomThetaMin;
            randomThetaMin = randomThetaMax;
            randomThetaMax = swap;
        }
        float randomPolarMax = (float) ((r.nextFloat() * 90) + 1);
        float randomPolarMin = (float) ((r.nextFloat()) + 1);
        if (randomPolarMin > randomPolarMax) {
            float swap = randomPolarMin;
            randomPolarMin = randomPolarMax;
            randomPolarMax = swap;
        }
        int randomSegments = (int) ((r.nextFloat() * 15) + 5);
        Color randomColor = new Color(r.nextDouble(), r.nextDouble(), r.nextDouble(), r.nextDouble());
        boolean ambientRandom = r.nextBoolean();
        boolean fillRandom = r.nextBoolean();
        SphereSegment sphereSegment = new SphereSegment(randomRadius, randomColor, Math.toRadians(0), Math.toRadians(360), Math.toRadians(randomPolarMin), Math.toRadians(randomPolarMax), randomSegments, ambientRandom, fillRandom);
        double translationX = Math.random() * sceneWidth / 2;
        if (Math.random() >= 0.5)
            translationX *= -1;
        double translationY = Math.random() * sceneWidth / 2;
        if (Math.random() >= 0.5)
            translationY *= -1;
        double translationZ = Math.random() * sceneWidth / 2;
        if (Math.random() >= 0.5)
            translationZ *= -1;
        Translate translate = new Translate(translationX, translationY, translationZ);
        Rotate rotateX = new Rotate(Math.random() * 360, Rotate.X_AXIS);
        Rotate rotateY = new Rotate(Math.random() * 360, Rotate.Y_AXIS);
        Rotate rotateZ = new Rotate(Math.random() * 360, Rotate.Z_AXIS);
        sphereSegment.getTransforms().addAll(translate, rotateX, rotateY, rotateZ);
        sphereSegment.getTransforms().add(translate);
        sphereGroup.getChildren().add(sphereSegment);
    }
    sceneRoot.getChildren().addAll(sphereGroup);
    scene.setOnKeyPressed(event -> {
        double change = 10.0;
        if (event.isShiftDown()) {
            change = 50.0;
        }
        KeyCode keycode = event.getCode();
        if (keycode == KeyCode.W) {
            camera.setTranslateZ(camera.getTranslateZ() + change);
        }
        if (keycode == KeyCode.S) {
            camera.setTranslateZ(camera.getTranslateZ() - change);
        }
        if (keycode == KeyCode.A) {
            camera.setTranslateX(camera.getTranslateX() - change);
        }
        if (keycode == KeyCode.D) {
            camera.setTranslateX(camera.getTranslateX() + change);
        }
    });
    //Add a Mouse Handler for Rotations
    Rotate xRotate = new Rotate(0, Rotate.X_AXIS);
    Rotate yRotate = new Rotate(0, Rotate.Y_AXIS);
    Rotate zRotate = new Rotate(0, Rotate.Z_AXIS);
    sphereGroup.getTransforms().addAll(xRotate, yRotate);
    //Use Binding so your rotation doesn't have to be recreated
    xRotate.angleProperty().bind(angleX);
    yRotate.angleProperty().bind(angleY);
    zRotate.angleProperty().bind(angleZ);
    //Start Tracking mouse movements only when a button is pressed
    scene.setOnMousePressed(event -> {
        scenex = event.getSceneX();
        sceney = event.getSceneY();
        fixedXAngle = angleX.get();
        fixedYAngle = angleY.get();
        if (event.isMiddleButtonDown()) {
            scenez = event.getSceneX();
            fixedZAngle = angleZ.get();
        }
    });
    //Angle calculation will only change when the button has been pressed
    scene.setOnMouseDragged(event -> {
        if (event.isMiddleButtonDown())
            angleZ.set(fixedZAngle - (scenez - event.getSceneY()));
        else
            angleX.set(fixedXAngle - (scenex - event.getSceneY()));
        angleY.set(fixedYAngle + sceney - event.getSceneX());
    });
    primaryStage.setTitle("F(X)yz SphereSegmentTest");
    primaryStage.setScene(scene);
    primaryStage.show();
}
Also used : Group(javafx.scene.Group) Rotate(javafx.scene.transform.Rotate) SphereSegment(org.fxyz.shapes.SphereSegment) Color(javafx.scene.paint.Color) PerspectiveCamera(javafx.scene.PerspectiveCamera) Scene(javafx.scene.Scene) Random(java.util.Random) KeyCode(javafx.scene.input.KeyCode) Translate(javafx.scene.transform.Translate)

Aggregations

Color (javafx.scene.paint.Color)53 Rotate (javafx.scene.transform.Rotate)12 Random (java.util.Random)10 Group (javafx.scene.Group)10 Translate (javafx.scene.transform.Translate)10 Scene (javafx.scene.Scene)9 MouseEvent (javafx.scene.input.MouseEvent)7 FXML (javafx.fxml.FXML)6 IOException (java.io.IOException)5 List (java.util.List)5 ObservableList (javafx.collections.ObservableList)5 PerspectiveCamera (javafx.scene.PerspectiveCamera)5 KeyCode (javafx.scene.input.KeyCode)5 StackPane (javafx.scene.layout.StackPane)5 Node (javafx.scene.Node)4 TextField (javafx.scene.control.TextField)4 Background (javafx.scene.layout.Background)4 JFXRadioButton (com.jfoenix.controls.JFXRadioButton)3 File (java.io.File)3 ArrayList (java.util.ArrayList)3