Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- private static final float WIDTH = 1200;
- private static final float HEIGHT = 800;
- private double anchorX, anchorY;
- private double anchorAngleX =0;
- private double anchorAngleY =0;
- private final DoubleProperty angleX = new SimpleDoubleProperty(0);
- private final DoubleProperty angleY = new SimpleDoubleProperty(0);
- @Override
- public void start(Stage stage) throws Exception {
- Camera camera = new PerspectiveCamera(true);
- camera.setNearClip(1);
- camera.setFarClip(10000);
- camera.translateZProperty().set(-1000);
- FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("FXMLDocument.fxml"));
- Parent root = fxmlLoader.load();
- FXMLDocumentController c = fxmlLoader.getController();
- Scene scene = new Scene(root,1200,900);
- scene.setCamera(camera);
- initMouseControl(c.g, scene, stage);
- stage.setScene(scene);
- stage.show();
- c.setScene(scene);
- }
- private void initMouseControl(Group group, Scene scene, Stage stage){
- Rotate xRotate;
- Rotate yRotate;
- group.getTransforms().addAll(
- xRotate = new Rotate(0, Rotate.X_AXIS),
- yRotate = new Rotate(0, Rotate.Y_AXIS)
- );
- xRotate.angleProperty().bind(angleX);
- yRotate.angleProperty().bind(angleY);
- scene.setOnMousePressed(event->{
- anchorX = event.getSceneX();
- anchorY = event.getSceneY();
- anchorAngleX= angleX.get();
- anchorAngleY=angleY.get();
- });
- scene.setOnMouseDragged(event->{
- angleX.set(anchorAngleX-(anchorY-event.getSceneY()));
- angleY.set(anchorAngleY-(anchorX-event.getSceneX()));
- });
- stage.addEventHandler(ScrollEvent.SCROLL, event -> {
- double delta = event.getDeltaY();
- group.translateZProperty().set(group.getTranslateZ()+delta);
- });
- }
- class SmartGroup extends Group {
- Rotate r;
- Transform t = new Rotate();
- void rotateByX(int ang){
- r = new Rotate(ang, Rotate.X_AXIS);
- t = t.createConcatenation(r);
- this.getTransforms().clear();
- this.getTransforms().addAll(t);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement