Search in sources :

Example 1 with Sphere

use of javafx.scene.shape.Sphere in project Gargoyle by callakrsos.

the class Drag3DObject method loadControls.

private void loadControls(Scene scene) {
    //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();
        PickResult pr = me.getPickResult();
        if (pr != null && pr.getIntersectedNode() != null && pr.getIntersectedNode() instanceof Sphere) {
            distance = pr.getIntersectedDistance();
            s = (Sphere) pr.getIntersectedNode();
            isPicking = true;
            vecIni = unProjectDirection(mousePosX, mousePosY, scene.getWidth(), scene.getHeight());
        }
    });
    scene.setOnMouseDragged((MouseEvent me) -> {
        mouseOldX = mousePosX;
        mouseOldY = mousePosY;
        mousePosX = me.getSceneX();
        mousePosY = me.getSceneY();
        mouseDeltaX = (mousePosX - mouseOldX);
        mouseDeltaY = (mousePosY - mouseOldY);
        if (RUN_JASON) {
            //objPos += mouseMovementx*scale*RightAxis 
            if (isPicking) {
                if (mousePosX < mouseOldX) {
                    System.out.println("moving left");
                    Point3D pos = CameraHelper.pickProjectPlane(camera, mousePosX, mousePosY);
                    s.setTranslateX(s.getTranslateX() + (pos.getX() - mouseOldX) * camera.getNearClip());
                    return;
                } else if (mousePosX > mouseOldX) {
                    System.err.println("moving right");
                    Point3D pos = CameraHelper.pickProjectPlane(camera, mousePosX, mousePosY);
                    s.setTranslateX(s.getTranslateX() - (pos.getX() - mouseOldX) * camera.getNearClip());
                    return;
                }
                if (mousePosY < mouseOldY) {
                    System.out.println("moving up");
                } else if (mousePosY > mouseOldY) {
                    System.err.println("moving down");
                }
                return;
            }
        } else {
            if (isPicking) {
                double modifier = (me.isControlDown() ? 0.2 : me.isAltDown() ? 2.0 : 1) * (30d / camera.getFieldOfView());
                modifier *= (30d / camera.getFieldOfView());
                vecPos = unProjectDirection(mousePosX, mousePosY, scene.getWidth(), scene.getHeight());
                Point3D p = new Point3D(distance * (vecPos.x - vecIni.x), distance * (vecPos.y - vecIni.y), distance * (vecPos.z - vecIni.z));
                s.getTransforms().add(new Translate(modifier * p.getX(), 0, modifier * p.getZ()));
                vecIni = vecPos;
            } else {
                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);
                }
            }
        }
    });
    scene.setOnMouseReleased((MouseEvent me) -> {
        if (isPicking) {
            isPicking = false;
        }
    });
}
Also used : Sphere(javafx.scene.shape.Sphere) MouseEvent(javafx.scene.input.MouseEvent) Point3D(javafx.geometry.Point3D) PickResult(javafx.scene.input.PickResult) KeyCode(javafx.scene.input.KeyCode) Translate(javafx.scene.transform.Translate)

Example 2 with Sphere

use of javafx.scene.shape.Sphere in project narchy by automenta.

the class ThreeDView method addPoint.

public void addPoint(Object o, double radius, double x, double y, double z) {
    Term t = (Term) o;
    final PhongMaterial mat = new PhongMaterial();
    Color c = Color.hsb(255.0 * Video.hashFloat(o.toString().hashCode()), 0.75f, 0.85f);
    mat.setDiffuseColor(c);
    System.out.println(o.getClass());
    Sphere point = new Sphere(radius / t.complexity());
    point.setOpacity(0.85);
    point.setTranslateX(x);
    point.setTranslateY(y);
    point.setTranslateZ(z);
    point.setMaterial(mat);
    space.getChildren().add(point);
    Text text = new Text(o.toString());
    text.setFill(c);
    text.setFontSmoothingType(FontSmoothingType.LCD);
    text.setSmooth(true);
    text.setTextAlignment(TextAlignment.CENTER);
    text.setFont(font);
    /*
        text.setScaleX(0.05);
        text.setScaleY(0.05);
        text.setScaleZ(0.05);
        */
    text.setTranslateX(x);
    text.setTranslateY(y);
    text.setTranslateZ(z);
    space.getChildren().add(text);
}
Also used : Sphere(javafx.scene.shape.Sphere) Color(javafx.scene.paint.Color) Text(javafx.scene.text.Text) Term(nars.term.Term) PhongMaterial(javafx.scene.paint.PhongMaterial)

Example 3 with Sphere

use of javafx.scene.shape.Sphere in project FXyzLib by Birdasaur.

the class CubeWorld method buildAxes.

private void buildAxes(double size, double axisThickness) {
    // XYZ 1
    final Cylinder x1AxisCyl = new Cylinder(axisThickness, size);
    final Cylinder y1AxisCyl = new Cylinder(axisThickness, size);
    final Cylinder z1AxisCyl = new Cylinder(axisThickness, size);
    x1AxisCyl.setTranslateY(size / 2);
    x1AxisCyl.setTranslateZ(-size / 2);
    y1AxisCyl.setTranslateX(-size / 2);
    y1AxisCyl.setTranslateZ(-size / 2);
    z1AxisCyl.setTranslateX((-size) / 2);
    z1AxisCyl.setTranslateY(size / 2);
    x1AxisCyl.setRotationAxis(Rotate.Z_AXIS);
    x1AxisCyl.setRotate(90);
    z1AxisCyl.setRotationAxis(Rotate.X_AXIS);
    z1AxisCyl.setRotate(-90);
    x1AxisCyl.setMaterial(redMaterial);
    y1AxisCyl.setMaterial(greenMaterial);
    z1AxisCyl.setMaterial(blueMaterial);
    // getChildren().addAll(x1AxisCyl, y1AxisCyl, z1AxisCyl);
    // XYZ 2
    final Cylinder x2AxisCyl = new Cylinder(axisThickness, size);
    final Cylinder y2AxisCyl = new Cylinder(axisThickness, size);
    final Cylinder z2AxisCyl = new Cylinder(axisThickness, size);
    x2AxisCyl.setTranslateY(size / 2);
    x2AxisCyl.setTranslateZ(size / 2);
    y2AxisCyl.setTranslateX(size / 2);
    y2AxisCyl.setTranslateZ(size / 2);
    z2AxisCyl.setTranslateX(size / 2);
    z2AxisCyl.setTranslateY(size / 2);
    x2AxisCyl.setRotationAxis(Rotate.Z_AXIS);
    x2AxisCyl.setRotate(90);
    z2AxisCyl.setRotationAxis(Rotate.X_AXIS);
    z2AxisCyl.setRotate(-90);
    x2AxisCyl.setMaterial(redMaterial);
    y2AxisCyl.setMaterial(greenMaterial);
    z2AxisCyl.setMaterial(blueMaterial);
    // getChildren().addAll(x2AxisCyl, y2AxisCyl, z2AxisCyl);
    // XYZ 3
    final Cylinder x3AxisCyl = new Cylinder(axisThickness, size);
    final Cylinder y3AxisCyl = new Cylinder(axisThickness, size);
    final Cylinder z3AxisCyl = new Cylinder(axisThickness, size);
    x3AxisCyl.setTranslateY(-size / 2);
    x3AxisCyl.setTranslateZ(-size / 2);
    y3AxisCyl.setTranslateX(size / 2);
    y3AxisCyl.setTranslateZ(-size / 2);
    z3AxisCyl.setTranslateX(size / 2);
    z3AxisCyl.setTranslateY(-size / 2);
    x3AxisCyl.setRotationAxis(Rotate.Z_AXIS);
    x3AxisCyl.setRotate(90);
    z3AxisCyl.setRotationAxis(Rotate.X_AXIS);
    z3AxisCyl.setRotate(-90);
    x3AxisCyl.setMaterial(redMaterial);
    y3AxisCyl.setMaterial(greenMaterial);
    z3AxisCyl.setMaterial(blueMaterial);
    // getChildren().addAll(x3AxisCyl, y3AxisCyl, z3AxisCyl);
    // XYZ 4
    final Cylinder x4AxisCyl = new Cylinder(axisThickness, size);
    final Cylinder y4AxisCyl = new Cylinder(axisThickness, size);
    final Cylinder z4AxisCyl = new Cylinder(axisThickness, size);
    x4AxisCyl.setTranslateY(-size / 2);
    x4AxisCyl.setTranslateZ(size / 2);
    y4AxisCyl.setTranslateX(-size / 2);
    y4AxisCyl.setTranslateZ(size / 2);
    z4AxisCyl.setTranslateX(-size / 2);
    z4AxisCyl.setTranslateY(-size / 2);
    x4AxisCyl.setRotationAxis(Rotate.Z_AXIS);
    x4AxisCyl.setRotate(90);
    z4AxisCyl.setRotationAxis(Rotate.X_AXIS);
    z4AxisCyl.setRotate(-90);
    x4AxisCyl.setMaterial(redMaterial);
    y4AxisCyl.setMaterial(greenMaterial);
    z4AxisCyl.setMaterial(blueMaterial);
    // getChildren().addAll(x4AxisCyl, y4AxisCyl, z4AxisCyl);
    xAxesGroup.getChildren().addAll(x1AxisCyl, x2AxisCyl, x3AxisCyl, x4AxisCyl);
    yAxesGroup.getChildren().addAll(y1AxisCyl, y2AxisCyl, y3AxisCyl, y4AxisCyl);
    zAxesGroup.getChildren().addAll(z1AxisCyl, z2AxisCyl, z3AxisCyl, z4AxisCyl);
    getChildren().addAll(xAxesGroup, yAxesGroup, zAxesGroup);
    // fuck it throw a little sphere at the corners
    final Sphere top1Sphere = new Sphere(2 * axisThickness);
    final Sphere top2Sphere = new Sphere(2 * axisThickness);
    final Sphere top3Sphere = new Sphere(2 * axisThickness);
    final Sphere top4Sphere = new Sphere(2 * axisThickness);
    final Sphere bottom1Sphere = new Sphere(2 * axisThickness);
    final Sphere bottom2Sphere = new Sphere(2 * axisThickness);
    final Sphere bottom3Sphere = new Sphere(2 * axisThickness);
    final Sphere bottom4Sphere = new Sphere(2 * axisThickness);
    top1Sphere.setTranslateX(-size / 2);
    top1Sphere.setTranslateY(-size / 2);
    top1Sphere.setTranslateZ(-size / 2);
    top2Sphere.setTranslateX(-size / 2);
    top2Sphere.setTranslateY(-size / 2);
    top2Sphere.setTranslateZ(size / 2);
    top3Sphere.setTranslateX(size / 2);
    top3Sphere.setTranslateY(-size / 2);
    top3Sphere.setTranslateZ(size / 2);
    top4Sphere.setTranslateX(size / 2);
    top4Sphere.setTranslateY(-size / 2);
    top4Sphere.setTranslateZ(-size / 2);
    bottom1Sphere.setTranslateX(-size / 2);
    bottom1Sphere.setTranslateY(size / 2);
    bottom1Sphere.setTranslateZ(-size / 2);
    bottom2Sphere.setTranslateX(-size / 2);
    bottom2Sphere.setTranslateY(size / 2);
    bottom2Sphere.setTranslateZ(size / 2);
    bottom3Sphere.setTranslateX(size / 2);
    bottom3Sphere.setTranslateY(size / 2);
    bottom3Sphere.setTranslateZ(size / 2);
    bottom4Sphere.setTranslateX(size / 2);
    bottom4Sphere.setTranslateY(size / 2);
    bottom4Sphere.setTranslateZ(-size / 2);
    getChildren().addAll(top1Sphere, top2Sphere, top3Sphere, top4Sphere);
    getChildren().addAll(bottom1Sphere, bottom2Sphere, bottom3Sphere, bottom4Sphere);
}
Also used : Sphere(javafx.scene.shape.Sphere) Cylinder(javafx.scene.shape.Cylinder)

Example 4 with Sphere

use of javafx.scene.shape.Sphere in project FXyzLib by Birdasaur.

the class PrismTest 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);
    // cylinder = new PrismMesh(0.2,2,3); //,new Point3D(-5,5,0),new Point3D(0,0,5));
    // 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(6, t -> t);
    // cylinder.setColorPalette(ColorPalette.GREEN);
    // DENSITY
    // cylinder.setTextureModeVertices3D(1530,p->(double)p.magnitude());
    // 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.getRadius() / 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.getRadius() / 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;
        // 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 - 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) PerspectiveCamera(javafx.scene.PerspectiveCamera) Scene(javafx.scene.Scene) Sphere(javafx.scene.shape.Sphere) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) PrismMesh(org.fxyz.shapes.primitives.PrismMesh) 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 5 with Sphere

use of javafx.scene.shape.Sphere in project FXyzLib by Birdasaur.

the class CubeViewer method setyAxisData.

/**
 * @param data the yAxisData to set
 */
public void setyAxisData(ArrayList<Double> data) {
    yAxisData = data;
    scatterDataGroup.getChildren().clear();
    for (int i = 0; i < yAxisData.size(); i++) {
        final Sphere dataSphere = new Sphere(scatterRadius);
        // final Box dataSphere = new Box(getScatterRadius(), getScatterRadius(), getScatterRadius());
        double translateX = 0.0;
        double translateZ = 0.0;
        if (!xAxisData.isEmpty() && xAxisData.size() > i)
            translateX = xAxisData.get(i);
        if (!zAxisData.isEmpty() && zAxisData.size() > i)
            translateZ = zAxisData.get(i);
        dataSphere.setTranslateX(translateX);
        dataSphere.setTranslateY(yAxisData.get(i));
        dataSphere.setTranslateZ(translateZ);
        scatterDataGroup.getChildren().add(dataSphere);
    }
}
Also used : Sphere(javafx.scene.shape.Sphere)

Aggregations

Sphere (javafx.scene.shape.Sphere)18 KeyCode (javafx.scene.input.KeyCode)8 Scene (javafx.scene.Scene)7 MouseEvent (javafx.scene.input.MouseEvent)7 PhongMaterial (javafx.scene.paint.PhongMaterial)7 Translate (javafx.scene.transform.Translate)7 Group (javafx.scene.Group)6 PerspectiveCamera (javafx.scene.PerspectiveCamera)6 PointLight (javafx.scene.PointLight)6 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)5 Rotate (javafx.scene.transform.Rotate)5 Point3D (javafx.geometry.Point3D)4 Box (javafx.scene.shape.Box)4 Cylinder (javafx.scene.shape.Cylinder)4 Point3D (org.fxyz.geometry.Point3D)4 AnimationTimer (javafx.animation.AnimationTimer)3 Bounds (javafx.geometry.Bounds)2 AmbientLight (javafx.scene.AmbientLight)2 PickResult (javafx.scene.input.PickResult)2 Ray (org.fxyz.geometry.Ray)2