View3D perspective camera is now operational

#story[1196]
main
Connor Taylor-Brown 9 years ago
parent 921e0999b8
commit e7164d8a78

@ -7,6 +7,7 @@ import javafx.scene.control.SplitPane;
import javafx.scene.image.ImageView;
import javafx.scene.layout.AnchorPane;
import javafx.scene.layout.GridPane;
import javafx.scene.shape.Box;
import mock.app.Event;
import mock.exceptions.EventConstructionException;
import visualiser.model.View3D;
@ -57,7 +58,7 @@ public class HostController extends Controller {
public void initialize(URL location, ResourceBundle resources) {
fancyStuff = new View3D();
playerContainer.add(fancyStuff, 0,0);
fancyStuff.spinBox();
fancyStuff.addShape(new Box(100,100,100));
}
/**

@ -1,49 +1,43 @@
package visualiser.model;
import javafx.animation.AnimationTimer;
import javafx.scene.Group;
import javafx.scene.PerspectiveCamera;
import javafx.scene.SubScene;
import javafx.scene.layout.Pane;
import javafx.scene.shape.Box;
import javafx.scene.shape.CullFace;
import javafx.scene.transform.Rotate;
import javafx.scene.paint.Color;
import javafx.scene.shape.Shape3D;
import java.util.ArrayList;
import java.util.List;
/**
* Created by connortaylorbrown on 30/08/17.
*/
public class View3D extends Pane {
SubScene scene;
PerspectiveCamera camera;
Box box;
Group world;
List<Shape3D> shapes;
public View3D() {
scene = new SubScene(this, 500, 500);
camera = new PerspectiveCamera();
shapes = new ArrayList<>();
world = new Group();
scene = new SubScene(world, 300, 300);
scene.widthProperty().bind(this.widthProperty());
scene.heightProperty().bind(this.heightProperty());
scene.setFill(Color.BLACK);
PerspectiveCamera camera = new PerspectiveCamera(true);
camera.setNearClip(0.1);
camera.setFarClip(1000.0);
camera.setTranslateZ(-500);
scene.setCamera(camera);
}
public void spinBox() {
camera.getTransforms().add(new Rotate(-20, Rotate.X_AXIS));
box = new Box(50,50,50);
box.setTranslateX(100);
box.setTranslateY(100);
box.setCullFace(CullFace.BACK);
Rotate ry = new Rotate(0, 0,0,0, Rotate.Y_AXIS);
box.getTransforms().add(ry);
this.getChildren().add(camera);
this.getChildren().add(box);
AnimationTimer rotation = new AnimationTimer() {
@Override
public void handle(long now) {
ry.setAngle(ry.getAngle() + 0.1);
this.getChildren().add(scene);
}
};
rotation.start();
public void addShape(Shape3D shape) {
shapes.add(shape);
world.getChildren().add(shape);
}
}

Loading…
Cancel
Save