Search in sources :

Example 1 with PrismMesh

use of org.fxyz.shapes.primitives.PrismMesh 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;
        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) 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 2 with PrismMesh

use of org.fxyz.shapes.primitives.PrismMesh in project FXyzLib by Birdasaur.

the class CuboidCSGTest 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);
    cuboid = new CuboidMesh(10f, 12f, 4f, 2, new Point3D(1f, -1f, 2f));
    cuboid.setDrawMode(DrawMode.LINE);
    CSG cuboidCSG = MeshUtils.mesh2CSG(cuboid.getMesh());
    CSG cube = new Cube(5).toCSG().color(Color.RED);
    PrismMesh prism = new PrismMesh(4f, 8f);
    prism.setSectionType(TriangleMeshHelper.SectionType.TRIANGLE);
    CSG prismCSG = MeshUtils.mesh2CSG(prism.getMesh());
    CSG union = cuboidCSG.difference(cube.transformed(Transform.unity().translateX(5))).union(prismCSG.transformed(Transform.unity().translateX(-4).rotZ(90)));
    CSGMesh unionMesh = new CSGMesh(union);
    //        unionMesh.setDrawMode(DrawMode.LINE);
    //        
    //        unionMesh.setCullFace(CullFace.NONE);
    // NONE
    //        cuboid.setTextureModeNone(Color.ROYALBLUE);
    //        unionMesh.setTextureModeNone(Color.ROYALBLUE);
    // IMAGE
    //        cuboid.setTextureModeImage(getClass().getResource("res/netCuboid.png").toExternalForm());
    // DENSITY
    //        cuboid.setTextureModeVertices3D(1530,p->(double)p.x*p.y);
    unionMesh.setTextureModeVertices3D(1530, p -> (double) p.x * p.y);
    //        unionMesh.setTextureModeVertices1D(1530,p->(double)p);
    // FACES
    //        cuboid.setTextureModeFaces(1530);
    //        unionMesh.setTextureModeFaces(1530);
    //        cuboid.getTransforms().addAll(new Rotate(0,Rotate.X_AXIS),rotateY);
    //        group.getChildren().add(cuboid);
    unionMesh.getTransforms().addAll(new Rotate(0, Rotate.X_AXIS), rotateY);
    group.getChildren().add(unionMesh);
    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 & JCSG - Boolean Operations Test");
    primaryStage.setScene(scene);
    primaryStage.show();
    OBJWriter writer = new OBJWriter((TriangleMesh) unionMesh.getMesh(), "cuboid");
    //        writer.setMaterialColor(Color.AQUA);
    //        writer.setTextureImage(getClass().getResource("res/netCuboid.png").toExternalForm());
    writer.setTextureColors(1530);
    writer.exportMesh();
}
Also used : Group(javafx.scene.Group) MouseEvent(javafx.scene.input.MouseEvent) Rotate(javafx.scene.transform.Rotate) PerspectiveCamera(javafx.scene.PerspectiveCamera) Scene(javafx.scene.Scene) OBJWriter(org.fxyz.utils.OBJWriter) CSGMesh(org.fxyz.shapes.primitives.CSGMesh) Cube(eu.mihosoft.vrl.v3d.Cube) Point3D(org.fxyz.geometry.Point3D) CSG(eu.mihosoft.vrl.v3d.CSG) PrismMesh(org.fxyz.shapes.primitives.PrismMesh) KeyCode(javafx.scene.input.KeyCode) PointLight(javafx.scene.PointLight) CuboidMesh(org.fxyz.shapes.primitives.CuboidMesh)

Example 3 with PrismMesh

use of org.fxyz.shapes.primitives.PrismMesh in project FXyzLib by Birdasaur.

the class BezierTest 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(-10);
    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);
    //        List<Point3D> knots=Arrays.asList(new Point3D(0f,0f,0f),new Point3D(3f,0f,2f),
    //                new Point3D(5f,2f,3f),new Point3D(7f,-3f,0f),new Point3D(6f,-1f,-4f));
    List<Point3D> knots = Arrays.asList(new Point3D(3f, 0f, 0f), new Point3D(0.77171f, 1.68981f, 0.989821f), new Point3D(-0.681387f, 0.786363f, -0.281733f), new Point3D(-2.31757f, -0.680501f, -0.909632f), new Point3D(-0.404353f, -2.81233f, 0.540641f), new Point3D(1.1316f, -0.727237f, 0.75575f), new Point3D(1.1316f, 0.727237f, -0.75575f), new Point3D(-0.404353f, 2.81233f, -0.540641f), new Point3D(-2.31757f, 0.680501f, 0.909632f), new Point3D(-0.681387f, -0.786363f, 0.281733f), new Point3D(0.77171f, -1.68981f, -0.989821f), new Point3D(3f, 0f, 0f));
    boolean showControlPoints = true;
    boolean showKnots = true;
    InterpolateBezier interpolate = new InterpolateBezier(knots);
    beziers = new ArrayList<>();
    AtomicInteger sp = new AtomicInteger();
    if (showKnots || showControlPoints) {
        interpolate.getSplines().forEach(spline -> {
            Point3D k0 = spline.getPoints().get(0);
            Point3D k1 = spline.getPoints().get(1);
            Point3D k2 = spline.getPoints().get(2);
            Point3D k3 = spline.getPoints().get(3);
            if (showKnots) {
                Sphere s = new Sphere(0.2d);
                s.getTransforms().add(new Translate(k0.x, k0.y, k0.z));
                s.setMaterial(new PhongMaterial(Color.GREENYELLOW));
                group.getChildren().add(s);
                s = new Sphere(0.2d);
                s.getTransforms().add(new Translate(k3.x, k3.y, k3.z));
                s.setMaterial(new PhongMaterial(Color.GREENYELLOW));
                group.getChildren().add(s);
            }
            if (showControlPoints) {
                PrismMesh c = new PrismMesh(0.03d, 1d, 1, k0, k1);
                c.setTextureModeNone(Color.GREEN);
                group.getChildren().add(c);
                c = new PrismMesh(0.03d, 1d, 1, k1, k2);
                c.setTextureModeNone(Color.GREEN);
                group.getChildren().add(c);
                c = new PrismMesh(0.03d, 1d, 1, k2, k3);
                c.setTextureModeNone(Color.GREEN);
                group.getChildren().add(c);
                Sphere s = new Sphere(0.1d);
                s.getTransforms().add(new Translate(k1.x, k1.y, k1.z));
                s.setMaterial(new PhongMaterial(Color.RED));
                group.getChildren().add(s);
                s = new Sphere(0.1d);
                s.getTransforms().add(new Translate(k2.x, k2.y, k2.z));
                s.setMaterial(new PhongMaterial(Color.RED));
                group.getChildren().add(s);
            }
        });
    }
    long time = System.currentTimeMillis();
    interpolate.getSplines().stream().forEach(spline -> {
        BezierMesh bezier = new BezierMesh(spline, 0.1d, 300, 20, 0, 0);
        bezier.setTextureModeVertices1D(1530, t -> spline.getKappa(t.doubleValue()));
        bezier.getTransforms().addAll(new Rotate(0, Rotate.X_AXIS), rotateY);
        beziers.add(bezier);
    });
    //43.815->25.606->15
    System.out.println("time: " + (System.currentTimeMillis() - time));
    group.getChildren().addAll(beziers);
    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) {
                //                    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));
                func = t -> Math.pow(t.doubleValue(), (count.get() % 5d));
                beziers.forEach(b -> b.setFunction(func));
                //                    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);
                //                    }
                //                    beziers.forEach(b->b.setColors((int)Math.pow(2,count.get()%16)));
                //                    beziers.forEach(b->b.setWireRadius(0.1d+(count.get()%6)/10d));
                //                    beziers.forEach(b->b.setPatternScale(1d+(count.get()%10)*3d));
                //                    beziers.forEach(b->b.setSectionType(SectionType.values()[count.get()%SectionType.values().length]));
                count.getAndIncrement();
                lastEffect = now;
            }
        }
    };
    primaryStage.setTitle("F(X)yz - Bezier Splines");
    primaryStage.setScene(scene);
    primaryStage.show();
    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) InterpolateBezier(org.fxyz.shapes.primitives.helper.InterpolateBezier) AtomicInteger(java.util.concurrent.atomic.AtomicInteger) Point3D(org.fxyz.geometry.Point3D) PrismMesh(org.fxyz.shapes.primitives.PrismMesh) KeyCode(javafx.scene.input.KeyCode) PointLight(javafx.scene.PointLight) PhongMaterial(javafx.scene.paint.PhongMaterial) Translate(javafx.scene.transform.Translate) BezierMesh(org.fxyz.shapes.primitives.BezierMesh) AmbientLight(javafx.scene.AmbientLight)

Aggregations

Group (javafx.scene.Group)3 PerspectiveCamera (javafx.scene.PerspectiveCamera)3 PointLight (javafx.scene.PointLight)3 Scene (javafx.scene.Scene)3 KeyCode (javafx.scene.input.KeyCode)3 MouseEvent (javafx.scene.input.MouseEvent)3 Rotate (javafx.scene.transform.Rotate)3 Point3D (org.fxyz.geometry.Point3D)3 PrismMesh (org.fxyz.shapes.primitives.PrismMesh)3 AtomicInteger (java.util.concurrent.atomic.AtomicInteger)2 AnimationTimer (javafx.animation.AnimationTimer)2 PhongMaterial (javafx.scene.paint.PhongMaterial)2 Sphere (javafx.scene.shape.Sphere)2 Translate (javafx.scene.transform.Translate)2 CSG (eu.mihosoft.vrl.v3d.CSG)1 Cube (eu.mihosoft.vrl.v3d.Cube)1 AmbientLight (javafx.scene.AmbientLight)1 BezierMesh (org.fxyz.shapes.primitives.BezierMesh)1 CSGMesh (org.fxyz.shapes.primitives.CSGMesh)1 CuboidMesh (org.fxyz.shapes.primitives.CuboidMesh)1