- panel.getRenderer().GetActiveCamera().SetParallelProjection(0);
- Vector3d pos = cameraPos.get(panel);
- if (pos != null) {
- panel.getRenderer().GetActiveCamera().SetPosition(pos.x, pos.y, pos.z);
- }
- panel.getRenderer().ResetCameraClippingRange();
+
+ double scale = cam.GetParallelScale();
+ cam.SetParallelProjection(0);
+
+ Vector3d focal = new Vector3d(panel.getRenderer().GetActiveCamera().GetFocalPoint());
+ Vector3d pos = new Vector3d(panel.getRenderer().GetActiveCamera().GetPosition());
+ Vector3d dir = new Vector3d(pos);
+ dir.sub(focal);
+ dir.normalize();
+ dir.scale(scale*4.0);
+ dir.add(focal);
+ cam.SetPosition(dir.x, dir.y, dir.z);
+ ren.ResetCameraClippingRange();