Search in sources :

Example 21 with PerspectiveCamera

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

the class SpringTest 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(-100);
    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);
    spring = new SpringMesh(5d, 1d, 2d, 4 * 2d * Math.PI, 303, 54, 0, 0);
    // spring.setDrawMode(DrawMode.LINE);
    // spring.setCullFace(CullFace.NONE);
    // spring.setSectionType(SectionType.TRIANGLE);
    // // NONE
    spring.setTextureModeNone(Color.web("#4169E180"));
    // IMAGE
    // spring.setTextureModeImage(getClass().getResource("res/LaminateSteel.jpg").toExternalForm());
    // PATTERN
    // spring.setTextureModePattern(5d);
    // FUNCTION
    // spring.setTextureModeVertices1D(256*256,t->t);
    // DENSITY
    spring.setTextureModeVertices3D(1530, dens);
    // FACES
    // spring.setTextureModeFaces(256*256);
    spring.getTransforms().addAll(new Rotate(0, Rotate.X_AXIS), rotateY);
    group.getChildren().add(spring);
    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 + 500_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));
                // spring.setDensity(dens);
                spring.setPitch(20 + 5 * (count.get() % 10));
                // if(count.get()%100<50){
                // spring.setDrawMode(DrawMode.LINE);
                // } else {
                // spring.setDrawMode(DrawMode.FILL);
                // }
                // spring.setLength(100+20*(count.get()%10));
                // spring.setPatternScale(1d+(count.get()%10)*2d);
                // spring.setSectionType(SectionType.values()[count.get()%SectionType.values().length]);
                // spring.setColors((int)Math.pow(2,count.get()%16));
                // spring.setMeanRadius(50+10*(count.get()%10));
                count.getAndIncrement();
                lastEffect = now;
            }
        }
    };
    primaryStage.setTitle("F(X)yz - Spring");
    primaryStage.setScene(scene);
    primaryStage.show();
    OBJWriter writer = new OBJWriter((TriangleMesh) spring.getMesh(), "spring");
    // writer.setMaterialColor(Color.BROWN);
    writer.setTextureColors(256 * 256);
    writer.exportMesh();
// timerEffect.start();
}
Also used : Group(javafx.scene.Group) SpringMesh(org.fxyz.shapes.primitives.SpringMesh) MouseEvent(javafx.scene.input.MouseEvent) Rotate(javafx.scene.transform.Rotate) 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) OBJWriter(org.fxyz.utils.OBJWriter)

Example 22 with PerspectiveCamera

use of javafx.scene.PerspectiveCamera in project fxexperience2 by EricCanull.

the class FlipInYTransition method starting.

@Override
protected void starting() {
    super.starting();
    node.setRotationAxis(Rotate.Y_AXIS);
    oldCamera = node.getScene().getCamera();
    node.getScene().setCamera(new PerspectiveCamera());
}
Also used : PerspectiveCamera(javafx.scene.PerspectiveCamera)

Example 23 with PerspectiveCamera

use of javafx.scene.PerspectiveCamera in project fxexperience2 by EricCanull.

the class FlipOutYTransition method starting.

@Override
protected void starting() {
    super.starting();
    node.setRotationAxis(Rotate.Y_AXIS);
    oldCamera = node.getScene().getCamera();
    node.getScene().setCamera(new PerspectiveCamera());
}
Also used : PerspectiveCamera(javafx.scene.PerspectiveCamera)

Example 24 with PerspectiveCamera

use of javafx.scene.PerspectiveCamera in project fxexperience2 by EricCanull.

the class FlipTransition method interpolate.

@Override
protected void interpolate(double d) {
    if (first) {
        // setup
        flipNode.setRotationAxis(Rotate.Y_AXIS);
        oldCamera = flipNode.getScene().getCamera();
        flipNode.getScene().setCamera(new PerspectiveCamera());
        first = false;
    }
    super.interpolate(d);
    if (d == 1) {
        // restore
        first = true;
        flipNode.setRotate(0);
        flipNode.setRotationAxis(Rotate.Z_AXIS);
        flipNode.getScene().setCamera(oldCamera);
    }
}
Also used : PerspectiveCamera(javafx.scene.PerspectiveCamera)

Example 25 with PerspectiveCamera

use of javafx.scene.PerspectiveCamera in project Gargoyle by callakrsos.

the class Drag3DObject method loadCamera.

private void loadCamera(Scene scene) {
    //initialize camera 
    camera = new PerspectiveCamera(true);
    camera.setVerticalFieldOfView(RUN_JASON);
    //setup camera transform for rotational support 
    cameraTransform.setTranslate(0, 0, 0);
    cameraTransform.getChildren().add(camera);
    camera.setNearClip(0.1);
    camera.setFarClip(100000.0);
    camera.setTranslateZ(-5000);
    cameraTransform.ry.setAngle(0.0);
    cameraTransform.rx.setAngle(-45.0);
    //add a Point Light for better viewing of the grid coordinate system 
    PointLight light = new PointLight(Color.GAINSBORO);
    cameraTransform.getChildren().add(light);
    cameraTransform.getChildren().add(new AmbientLight(Color.WHITE));
    light.setTranslateX(camera.getTranslateX());
    light.setTranslateY(camera.getTranslateY());
    light.setTranslateZ(camera.getTranslateZ());
    //attach camera to scene 
    scene.setCamera(camera);
}
Also used : PerspectiveCamera(javafx.scene.PerspectiveCamera) PointLight(javafx.scene.PointLight) AmbientLight(javafx.scene.AmbientLight)

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