title: 3D Camera movement in JavaFX using mouse
body: <p>I've managed to move the camera using mouse drag. However, the problem is that once I've moved the camera and released the mouse press, the camera returns back to the origin.</p>
  <p>I want the camera to remain in the changed position instead so that when I use the mouse again to move the camera, it moves from that position to wherever instead of from the origin.</p>
  <pre><code>package application;
      
  import javafx.application.Application;
  import javafx.stage.Stage;
  import javafx.scene.Camera;
  import javafx.scene.Group;
  import javafx.scene.PerspectiveCamera;
  import javafx.scene.Scene;
  import javafx.scene.input.KeyEvent;
  import javafx.scene.input.ScrollEvent;
  import javafx.scene.layout.BorderPane;
  import javafx.scene.paint.Color;
  import javafx.scene.shape.Sphere;
  
  
  public class Main extends Application {
      
      private static final int WIDTH = 900;
      private static final int HEIGHT = 600;  
  
      //Tracks drag starting point for x and y
      private double anchorX, anchorY;
      
      @Override
      public void start(Stage primaryStage) {
          Sphere sphere = new Sphere(50);
          
          Group group = new Group();
          group.getChildren().add(sphere);
       
          Camera camera = new PerspectiveCamera();
          Scene scene = new Scene(group, WIDTH, HEIGHT);
          scene.setFill(Color.SILVER);
          scene.setCamera(camera);
       
          sphere.setTranslateX(WIDTH / 2);
          sphere.setTranslateY(HEIGHT / 2);
          
          initMouseControl(scene, camera, primaryStage, sphere);
       
          primaryStage.setTitle(&quot;Solar System Simulator&quot;);
          primaryStage.setScene(scene);
          primaryStage.show();
      }
      
      private void initMouseControl(Scene scene, Camera camera, Stage stage, Sphere sphere) {
  
             scene.setOnMousePressed(event -&gt; {
                  //Save start points
                  anchorX = event.getSceneX();
                  anchorY = event.getSceneY();
             });
           
             scene.setOnMouseDragged(event -&gt; {
                  camera.setTranslateY(anchorY - event.getSceneY());
                  camera.setTranslateX(anchorX - event.getSceneX());
             });
             
             stage.addEventHandler(ScrollEvent.SCROLL, event -&gt; {
                 sphere.setTranslateZ(sphere.getTranslateZ() + event.getDeltaY());
             });
      }
      
      public static void main(String[] args) {
          launch(args);
      }
  }
  </code></pre>
  <p>I've tried googling to find a solution but couldn't find much on camera movement with javafx</p>