Search in sources :

Example 36 with Color

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

the class SpheroidTest method start.

@Override
public void start(Stage stage) {
    Group spheroidGroup = new Group();
    for (int i = 0; i < 50; i++) {
        Random r = new Random();
        //A lot of magic numbers in here that just artificially constrain the math
        float randomMajorRadius = (float) ((r.nextFloat() * 300) + 50);
        float randomMinorRadius = (float) ((r.nextFloat() * 300) + 50);
        int randomDivisions = (int) ((r.nextFloat() * 64) + 1);
        Color randomColor = new Color(r.nextDouble(), r.nextDouble(), r.nextDouble(), r.nextDouble());
        Spheroid sm = new Spheroid(randomDivisions, randomMajorRadius, randomMinorRadius, randomColor);
        sm.setDrawMode(DrawMode.LINE);
        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);
        sm.getTransforms().addAll(translate, rotateX, rotateY, rotateZ);
        spheroidGroup.getChildren().add(sm);
    }
    root.getChildren().add(spheroidGroup);
    System.out.println(spheroidGroup.getChildren().size());
    camera = new PerspectiveCamera(true);
    cameraTransform.setTranslate(0, 0, 0);
    cameraTransform.getChildren().addAll(camera);
    camera.setNearClip(0.1);
    camera.setFarClip(10000.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);
    Scene scene = new Scene(new StackPane(root), 1024, 668, true, SceneAntialiasing.BALANCED);
    scene.setCamera(camera);
    scene.setFill(Color.BLACK);
    initFirstPersonControls(scene);
    stage.setTitle("Hello World!");
    stage.setScene(scene);
    stage.show();
}
Also used : Group(javafx.scene.Group) Rotate(javafx.scene.transform.Rotate) Color(javafx.scene.paint.Color) Spheroid(org.fxyz.shapes.Spheroid) PerspectiveCamera(javafx.scene.PerspectiveCamera) Scene(javafx.scene.Scene) Random(java.util.Random) PointLight(javafx.scene.PointLight) Translate(javafx.scene.transform.Translate) StackPane(javafx.scene.layout.StackPane)

Example 37 with Color

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

the class TorusTest 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);
    //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(-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());
    scene.setCamera(camera);
    //Make a bunch of semi random Torusesessses(toroids?) and stuff
    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() * sceneWidth * 1.95;
        if (Math.random() >= 0.5)
            translationX *= -1;
        double translationY = Math.random() * sceneWidth * 1.95;
        if (Math.random() >= 0.5)
            translationY *= -1;
        double translationZ = Math.random() * sceneWidth * 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);
    }
    sceneRoot.getChildren().addAll(torusGroup);
    //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("F(X)yz TorusTest");
    primaryStage.setScene(scene);
    primaryStage.show();
}
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) Random(java.util.Random) KeyCode(javafx.scene.input.KeyCode) PointLight(javafx.scene.PointLight) Translate(javafx.scene.transform.Translate)

Example 38 with Color

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

the class TrapezoidTest method generateShapes.

private void generateShapes() {
    for (int i = 0; i < 50; i++) {
        Random r = new Random();
        //A lot of magic numbers in here that just artificially constrain the math
        double randomSmallSize = (double) ((r.nextDouble() * 50) + 10);
        double randomBigSize = (double) ((r.nextDouble() * 100) + 50);
        double randomHeight = (double) ((r.nextDouble() * 50) + 25);
        double randomDepth = (double) ((r.nextDouble() * 50) + 25);
        Color randomColor = new Color(r.nextDouble(), r.nextDouble(), r.nextDouble(), r.nextDouble());
        Trapezoid trapezoid = new Trapezoid(randomSmallSize, randomBigSize, randomHeight, randomDepth, randomColor);
        //            Trapezoid trapezoid = new Trapezoid(50, 100, 50, 50, randomColor);
        trapezoid.setEmissiveLightingColor(randomColor);
        trapezoid.setEmissiveLightingOn(r.nextBoolean());
        trapezoid.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);
        trapezoid.getTransforms().addAll(translate, rotateX, rotateY, rotateZ);
        shapeGroup.getChildren().add(trapezoid);
    }
}
Also used : Random(java.util.Random) Rotate(javafx.scene.transform.Rotate) Trapezoid(org.fxyz.shapes.Trapezoid) Color(javafx.scene.paint.Color) Translate(javafx.scene.transform.Translate)

Example 39 with Color

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

the class OBJWriter method exportMesh.

public void exportMesh() {
    File objFile = new File(fileName + ".obj");
    try {
        writer = new BufferedWriter(new FileWriter(objFile));
        writer.write("# Material" + newline);
        writer.write("mtllib " + fileName + ".mtl" + newline);
        points0 = new float[mesh.getPoints().size()];
        mesh.getPoints().toArray(points0);
        List<Point3D> points1 = IntStream.range(0, points0.length / 3).mapToObj(i -> new Point3D(points0[3 * i], points0[3 * i + 1], points0[3 * i + 2])).collect(Collectors.toList());
        writer.write("# Vertices (" + points1.size() + ")" + newline);
        points1.forEach(p -> {
            try {
                writer.write("v " + p.x + " " + p.y + " " + p.z + "" + newline);
            } catch (IOException ex) {
                System.out.println("Error writting vertex " + ex);
            }
        });
        writer.write("# End Vertices" + newline);
        writer.write(newline);
        texCoord0 = new float[mesh.getTexCoords().size()];
        mesh.getTexCoords().toArray(texCoord0);
        List<Point2D> texCoord1 = IntStream.range(0, texCoord0.length / 2).mapToObj(i -> new Point2D(texCoord0[2 * i], texCoord0[2 * i + 1])).collect(Collectors.toList());
        writer.write("# Textures Coordinates (" + texCoord1.size() + ")" + newline);
        texCoord1.forEach(t -> {
            try {
                writer.write("vt " + ((float) t.getX()) + " " + ((float) (1d - t.getY())) + "" + newline);
            } catch (IOException ex) {
                System.out.println("Error writting texture coordinate " + ex);
            }
        });
        writer.write("# End Texture Coordinates " + newline);
        writer.write(newline);
        faces0 = new int[mesh.getFaces().size()];
        mesh.getFaces().toArray(faces0);
        List<Integer[]> faces1 = IntStream.range(0, faces0.length / 6).mapToObj(i -> new Integer[] { faces0[6 * i], faces0[6 * i + 1], faces0[6 * i + 2], faces0[6 * i + 3], faces0[6 * i + 4], faces0[6 * i + 5] }).collect(Collectors.toList());
        writer.write("# Faces (" + faces1.size() + ")" + newline);
        writer.write("# Material" + newline);
        writer.write("usemtl " + fileName + "" + newline);
        sm0 = new int[mesh.getFaces().size()];
        mesh.getFaceSmoothingGroups().toArray(sm0);
        if (sm0[0] > 0) {
            writer.write("s " + sm0[0] + "" + newline);
        }
        AtomicInteger count = new AtomicInteger();
        faces1.forEach(f -> {
            try {
                writer.write("f " + (f[0] + 1) + "/" + (f[1] + 1) + " " + (f[2] + 1) + "/" + (f[3] + 1) + " " + (f[4] + 1) + "/" + (f[5] + 1) + "" + newline);
                if (sm0[count.getAndIncrement()] != sm0[count.get()]) {
                    writer.write("s " + (sm0[count.get()] > 0 ? sm0[count.get()] : "off") + "" + newline);
                }
            } catch (IOException ex) {
                System.out.println("Error writting face " + ex);
            }
        });
        writer.write("# End Faces " + newline);
        writer.write(newline);
    } catch (IOException io) {
        System.out.println("Error creating writer obj " + io);
    } finally {
        try {
            if (writer != null) {
                writer.close();
            }
        } catch (Exception e) {
        }
    }
    File mtlFile = new File(fileName + ".mtl");
    try {
        writer = new BufferedWriter(new FileWriter(mtlFile));
        writer.write("# Material " + fileName + "" + newline);
        writer.write("newmtl " + fileName + "" + newline);
        // Illumination [0-10]
        writer.write("illum 4" + newline);
        // diffuse color black
        writer.write("Kd " + diffuseColor + "" + newline);
        // ambient color
        writer.write("Ka 0.10 0.10 0.10" + newline);
        // Transmission filter
        writer.write("Tf 1.00 1.00 1.00" + newline);
        if (diffuseMap != null) {
            writer.write("map_Kd " + diffuseMap + "" + newline);
        }
        // optical density
        writer.write("Ni 1.00" + newline);
        // specular reflectivity
        writer.write("Ks 1.00 1.00 1.00" + newline);
        // specular exponent
        writer.write("Ns 32.00" + newline);
    } catch (IOException io) {
        System.out.println("Error creating writer mtl " + io);
    } finally {
        try {
            if (writer != null) {
                writer.close();
            }
        } catch (Exception e) {
        }
    }
}
Also used : IntStream(java.util.stream.IntStream) Color(javafx.scene.paint.Color) TextureType(org.fxyz.shapes.primitives.helper.TriangleMeshHelper.TextureType) BufferedWriter(java.io.BufferedWriter) FileWriter(java.io.FileWriter) IOException(java.io.IOException) Collectors(java.util.stream.Collectors) File(java.io.File) TriangleMesh(javafx.scene.shape.TriangleMesh) List(java.util.List) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) SwingFXUtils(javafx.embed.swing.SwingFXUtils) ImageIO(javax.imageio.ImageIO) ColorPalette(org.fxyz.utils.Palette.ColorPalette) Point2D(javafx.geometry.Point2D) Image(javafx.scene.image.Image) Point3D(org.fxyz.geometry.Point3D) FileWriter(java.io.FileWriter) IOException(java.io.IOException) IOException(java.io.IOException) BufferedWriter(java.io.BufferedWriter) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Point2D(javafx.geometry.Point2D) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Point3D(org.fxyz.geometry.Point3D) File(java.io.File)

Example 40 with Color

use of javafx.scene.paint.Color in project intellij-community by JetBrains.

the class Main method foo.

void foo() {
    Color color1 = new Color(0, 0.251, 0.502, 1);
    Color color2 = Color.color(0.251, 0.502, 1, 0);
    Color color3 = Color.color(0.502, 1, 0, 0.251);
    Color color4 = color(1, 0, 0.251, 0.502);
    Color color5 = color(0, 0.251, 0.502);
    Color gray1 = Color.color(0.251, 0.502, 1, 0);
    Color gray2 = Color.color(0.502, 1, 0, 0.251);
    Color gray3 = color(1, 0, 0.251, 0.502);
    Color gray4 = color(0, 0.251, 0.502);
    Color rgb1 = Color.rgb(64, 128, 255, 0);
    Color rgb2 = rgb(128, 255, 0, 0.251);
    Color rgb3 = Color.rgb(255, 0, 64, 0.502);
    Color rgb4 = rgb(0, 64, 128);
    Color grayRgb1 = Color.rgb(64, 128, 255, 0);
    Color grayRgb2 = rgb(128, 255, 0, 0.251);
    Color grayRgb3 = Color.rgb(255, 0, 64, 0.502);
    Color grayRgb4 = rgb(0, 64, 128);
    Color hsb1 = Color.hsb(219.8953, 0.749, 1, 0);
    Color hsb2 = hsb(89.8824, 1, 1, 0.251);
    Color hsb3 = Color.hsb(344.9412, 1, 1, 0.502);
    Color hsb4 = hsb(210, 1, 0.502);
    Color hsb5 = hsb(219.8953, 0.749, 1, 0);
}
Also used : Color(javafx.scene.paint.Color)

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