Search in sources :

Example 21 with KeyCode

use of javafx.scene.input.KeyCode in project processing by processing.

the class PSurfaceFX method getKeyChar.

@SuppressWarnings("deprecation")
private char getKeyChar(KeyEvent fxEvent) {
    KeyCode kc = fxEvent.getCode();
    // KEY_PRESSED and KEY_RELEASED events
    switch(kc) {
        case UP:
        case KP_UP:
        case DOWN:
        case KP_DOWN:
        case LEFT:
        case KP_LEFT:
        case RIGHT:
        case KP_RIGHT:
        case ALT:
        case ALT_GRAPH:
        case CONTROL:
        case SHIFT:
        case CAPS:
        case META:
        case WINDOWS:
        case CONTEXT_MENU:
        case HOME:
        case PAGE_UP:
        case PAGE_DOWN:
        case END:
        case PAUSE:
        case PRINTSCREEN:
        case INSERT:
        case NUM_LOCK:
        case SCROLL_LOCK:
        case F1:
        case F2:
        case F3:
        case F4:
        case F5:
        case F6:
        case F7:
        case F8:
        case F9:
        case F10:
        case F11:
        case F12:
            return PConstants.CODED;
        case ENTER:
            return '\n';
        case DIVIDE:
            return '/';
        case MULTIPLY:
            return '*';
        case SUBTRACT:
            return '-';
        case ADD:
            return '+';
        case NUMPAD0:
            return '0';
        case NUMPAD1:
            return '1';
        case NUMPAD2:
            return '2';
        case NUMPAD3:
            return '3';
        case NUMPAD4:
            return '4';
        case NUMPAD5:
            return '5';
        case NUMPAD6:
            return '6';
        case NUMPAD7:
            return '7';
        case NUMPAD8:
            return '8';
        case NUMPAD9:
            return '9';
        case DECIMAL:
            // the dot. Users can detect the key by its keyCode.
            return '.';
        case UNDEFINED:
            // and falls through here
            break;
        default:
            break;
    }
    // Just go with what FX gives us for the rest of
    // KEY_PRESSED and KEY_RELEASED and all of KEY_TYPED
    String ch;
    if (fxEvent.getEventType() == KeyEvent.KEY_TYPED) {
        ch = fxEvent.getCharacter();
    } else {
        ch = kc.impl_getChar();
    }
    if (ch.length() < 1)
        return PConstants.CODED;
    // normalize enter key
    if (ch.startsWith("\r"))
        return '\n';
    return ch.charAt(0);
}
Also used : KeyCode(javafx.scene.input.KeyCode)

Example 22 with KeyCode

use of javafx.scene.input.KeyCode in project FXyzLib by Birdasaur.

the class FrustumTest 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.WHITESMOKE);
    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);
    //        cylinder = new PrismMesh(2,5,4);
    //,new Point3D(-5,5,0),new Point3D(0,0,5));
    cylinder = new FrustumMesh(1, 0.2, 4, 3);
    //        cylinder.setDrawMode(DrawMode.LINE);
    // SECTION TYPE
    //        cylinder.setSectionType(TriangleMeshHelper.SectionType.TRIANGLE);
    // NONE
    //        cylinder.setTextureModeNone(Color.ROYALBLUE);
    // IMAGE
    //        cylinder.setTextureModeImage(getClass().getResource("res/netCylinder.png").toExternalForm());
    cylinder.setTextureModeVertices1D(1530, t -> t);
    //        cylinder.setColorPalette(ColorPalette.GREEN);
    // DENSITY
    //        cylinder.setTextureModeVertices3D(1530,p->(double)p.y);
    //        cylinder.setTextureModeVertices3D(1530,p->(double)cylinder.unTransform(p).magnitude());
    // FACES
    //        cylinder.setTextureModeFaces(1530);
    cylinder.getTransforms().addAll(new Rotate(0, Rotate.X_AXIS), rotateY);
    group.getChildren().add(cylinder);
    boolean showKnots = true;
    if (showKnots) {
        Sphere s = new Sphere(cylinder.getMajorRadius() / 10d);
        Point3D k0 = cylinder.getAxisOrigin();
        s.getTransforms().add(new Translate(k0.x, k0.y, k0.z));
        s.setMaterial(new PhongMaterial(Color.GREENYELLOW));
        group.getChildren().add(s);
        s = new Sphere(cylinder.getMinorRadius() / 10d);
        Point3D k3 = cylinder.getAxisEnd();
        s.getTransforms().add(new Translate(k3.x, k3.y, k3.z));
        s.setMaterial(new PhongMaterial(Color.ROSYBROWN));
        group.getChildren().add(s);
    }
    sceneRoot.getChildren().addAll(group);
    //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 - Cylinder Test");
    primaryStage.setScene(scene);
    primaryStage.show();
    //        OBJWriter writer=new OBJWriter((TriangleMesh) cylinder.getMesh(),"cylinder2");
    ////        writer.setMaterialColor(Color.AQUA);
    ////        writer.setTextureImage(getClass().getResource("res/netCylinder.png").toExternalForm());
    //        writer.setTextureColors(6,ColorPalette.GREEN);
    //        writer.exportMesh();
    lastEffect = System.nanoTime();
    AtomicInteger count = new AtomicInteger(0);
    AnimationTimer timerEffect = new AnimationTimer() {

        @Override
        public void handle(long now) {
            if (now > lastEffect + 100_000_000l) {
                //<=1/6d)?1d:0d;
                func = t -> Math.pow(Math.sin(8d * Math.PI * (10d * (1 - t.doubleValue()) + count.get() % 11) / 20d), 6);
                cylinder.setFunction(func);
                //                    mapBez.values().forEach(b->b.setDensity(dens));
                count.getAndIncrement();
                lastEffect = now;
            }
        }
    };
    timerEffect.start();
}
Also used : Group(javafx.scene.Group) MouseEvent(javafx.scene.input.MouseEvent) Rotate(javafx.scene.transform.Rotate) AnimationTimer(javafx.animation.AnimationTimer) FrustumMesh(org.fxyz.shapes.primitives.FrustumMesh) PerspectiveCamera(javafx.scene.PerspectiveCamera) Scene(javafx.scene.Scene) Sphere(javafx.scene.shape.Sphere) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Point3D(org.fxyz.geometry.Point3D) KeyCode(javafx.scene.input.KeyCode) PointLight(javafx.scene.PointLight) PhongMaterial(javafx.scene.paint.PhongMaterial) Translate(javafx.scene.transform.Translate)

Example 23 with KeyCode

use of javafx.scene.input.KeyCode in project FXyzLib by Birdasaur.

the class Function2DPlotTest 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.WHITESMOKE);
    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(-20);
    cameraTransform.ry.setAngle(-45.0);
    cameraTransform.rx.setAngle(-30.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);
    surface = new SurfacePlotMesh(p -> Math.sin(p.magnitude() + 0.00000000000000001) / (p.magnitude() + 0.00000000000000001), 10, 10, 10, 10, 5d);
    //        PhongMaterial matTorus = new PhongMaterial(Color.FIREBRICK);
    //        torus.setMaterial(matTorus);
    //        surface.setDrawMode(DrawMode.LINE);
    surface.setCullFace(CullFace.NONE);
    // NONE
    //        surface.setTextureModeNone(Color.FORESTGREEN);
    // IMAGE
    //        torus.setTextureModeImage(getClass().getResource("res/grid1.png").toExternalForm());
    //        banner.setTextureModeImage(getClass().getResource("res/Duke3DprogressionSmall.jpg").toExternalForm());
    // PATTERN
    surface.setTextureModePattern(CarbonPatterns.CARBON_KEVLAR, 1.0d);
    // DENSITY
    //        surface.setTextureModeVertices3D(1530,dens);
    // FACES
    //        torus.setTextureModeFaces(256*256);
    surface.getTransforms().addAll(new Rotate(0, Rotate.X_AXIS), rotateY);
    group.getChildren().addAll(surface);
    sceneRoot.getChildren().addAll(group);
    //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);
        }
    });
    lastEffect = System.nanoTime();
    AtomicInteger count = new AtomicInteger();
    AnimationTimer timerEffect = new AnimationTimer() {

        @Override
        public void handle(long now) {
            if (now > lastEffect + 1_000_000_000l) {
                //                    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));
                //                    torus.setDensity(dens);
                //                    if(count.get()%100<50){
                //                        torus.setDrawMode(DrawMode.LINE);
                //                    } else {
                //                        torus.setDrawMode(DrawMode.FILL);
                //                    }
                //                    spring.setLength(100+20*(count.get()%10));
                //                    torus.setColors((int)Math.pow(2,count.get()%16));
                //                    torus.setMajorRadius(500+100*(count.get()%10));
                //                    torus.setMinorRadius(150+10*(count.get()%10));
                //                    torus.setPatternScale(1d+(count.get()%10)*5d);
                count.getAndIncrement();
                lastEffect = now;
            }
        }
    };
    primaryStage.setTitle("F(X)yz - Surface Plot 2D");
    primaryStage.setScene(scene);
    primaryStage.show();
//        timerEffect.start();
}
Also used : Scene(javafx.scene.Scene) KeyCode(javafx.scene.input.KeyCode) Color(javafx.scene.paint.Color) CarbonPatterns(org.fxyz.utils.Patterns.CarbonPatterns) Rotate(javafx.scene.transform.Rotate) SurfacePlotMesh(org.fxyz.shapes.primitives.SurfacePlotMesh) MouseEvent(javafx.scene.input.MouseEvent) PointLight(javafx.scene.PointLight) Group(javafx.scene.Group) DrawMode(javafx.scene.shape.DrawMode) Function(java.util.function.Function) CullFace(javafx.scene.shape.CullFace) Application(javafx.application.Application) AnimationTimer(javafx.animation.AnimationTimer) PerspectiveCamera(javafx.scene.PerspectiveCamera) CameraTransformer(org.fxyz.cameras.CameraTransformer) Stage(javafx.stage.Stage) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Patterns(org.fxyz.utils.Patterns) SceneAntialiasing(javafx.scene.SceneAntialiasing) Point3D(org.fxyz.geometry.Point3D) Group(javafx.scene.Group) MouseEvent(javafx.scene.input.MouseEvent) Rotate(javafx.scene.transform.Rotate) SurfacePlotMesh(org.fxyz.shapes.primitives.SurfacePlotMesh) AnimationTimer(javafx.animation.AnimationTimer) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) KeyCode(javafx.scene.input.KeyCode) PerspectiveCamera(javafx.scene.PerspectiveCamera) Scene(javafx.scene.Scene) PointLight(javafx.scene.PointLight)

Example 24 with KeyCode

use of javafx.scene.input.KeyCode in project FXyzLib by Birdasaur.

the class KnotTest 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.WHEAT);
    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);
    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);
    knot = new KnotMesh(2d, 1d, 0.4d, 2d, 3d, 1000, 60, 0, 0);
    knot.setDrawMode(DrawMode.LINE);
    //        knot.setCullFace(CullFace.NONE);
    knot.setSectionType(SectionType.TRIANGLE);
    // NONE
    //        knot.setTextureModeNone(Color.BROWN);
    // IMAGE
    //        knot.setTextureModeImage(getClass().getResource("res/LaminateSteel.jpg").toExternalForm());
    // PATTERN
    //       knot.setTextureModePattern(3d);
    // FUNCTION
    //        knot.setTextureModeVertices1D(1530,t->knot.getTau(t));
    knot.setTextureModeVertices1D(ColorPalette.GREEN, 8, t -> knot.getTau(t.doubleValue()));
    // DENSITY
    //        knot.setTextureModeVertices3D(256*256,dens);
    // FACES
    //        knot.setTextureModeFaces(256*256);
    knot.getTransforms().addAll(new Rotate(0, Rotate.X_AXIS), rotateY);
    group.getChildren().add(knot);
    sceneRoot.getChildren().addAll(group);
    //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);
        }
    });
    lastEffect = System.nanoTime();
    AtomicInteger count = new AtomicInteger();
    AnimationTimer timerEffect = new AnimationTimer() {

        @Override
        public void handle(long now) {
            if (now > lastEffect + 100_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));
                //                    knot.setDensity(dens);
                //                    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);
                //                    }
                //                    knot.setColors((int)Math.pow(2,count.get()%16));
                //                    knot.setMajorRadius(0.5d+(count.get()%10));
                //                    knot.setMinorRadius(2d+(count.get()%60));
                //                    knot.setWireRadius(0.1d+(count.get()%6)/10d);
                //                    knot.setPatternScale(1d+(count.get()%10)*3d);
                knot.setSectionType(SectionType.values()[count.get() % SectionType.values().length]);
                count.getAndIncrement();
                lastEffect = now;
            }
        }
    };
    primaryStage.setTitle("F(X)yz - Knots");
    primaryStage.setScene(scene);
    primaryStage.show();
    OBJWriter writer = new OBJWriter((TriangleMesh) knot.getMesh(), "knot");
    writer.setMaterialColor(Color.BROWN);
    writer.exportMesh();
    timerEffect.start();
}
Also used : Group(javafx.scene.Group) KnotMesh(org.fxyz.shapes.primitives.KnotMesh) MouseEvent(javafx.scene.input.MouseEvent) Rotate(javafx.scene.transform.Rotate) AnimationTimer(javafx.animation.AnimationTimer) PerspectiveCamera(javafx.scene.PerspectiveCamera) Scene(javafx.scene.Scene) OBJWriter(org.fxyz.utils.OBJWriter) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) KeyCode(javafx.scene.input.KeyCode) PointLight(javafx.scene.PointLight) AmbientLight(javafx.scene.AmbientLight)

Example 25 with KeyCode

use of javafx.scene.input.KeyCode in project FXyzLib by Birdasaur.

the class OctahedronTest method start.

@Override
public void start(Stage stage) {
    shapeGroup.getChildren().clear();
    generateShapes();
    root.getChildren().add(shapeGroup);
    camera = new AdvancedCamera();
    controller = new FPSController();
    camera.setNearClip(0.1);
    camera.setFarClip(10000.0);
    camera.setFieldOfView(42);
    camera.setController(controller);
    Scene scene = new Scene(new StackPane(root), 1024, 668, true, SceneAntialiasing.BALANCED);
    scene.setCamera(camera);
    scene.setFill(Color.BLACK);
    controller.setScene(scene);
    scene.setOnKeyPressed(event -> {
        KeyCode keycode = event.getCode();
        if (keycode == KeyCode.SPACE) {
            shapeGroup.getChildren().clear();
            generateShapes();
        }
    });
    stage.setTitle("Random Octahedrons!");
    stage.setScene(scene);
    stage.show();
    stage.setFullScreen(false);
    stage.setFullScreenExitHint("");
}
Also used : AdvancedCamera(org.fxyz.cameras.AdvancedCamera) FPSController(org.fxyz.cameras.controllers.FPSController) KeyCode(javafx.scene.input.KeyCode) Scene(javafx.scene.Scene) StackPane(javafx.scene.layout.StackPane)

Aggregations

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