Ver Fonte

mol-canvas3d: do not set camera clipping when in transition

David Sehnal há 6 anos atrás
pai
commit
40aa847d1f

+ 7 - 0
src/mol-canvas3d/camera.ts

@@ -131,6 +131,13 @@ class Camera implements Object3D {
 namespace Camera {
     export type Mode = 'perspective' | 'orthographic'
 
+    export interface ClippingInfo {
+        near: number,
+        far: number,
+        fogNear: number,
+        fogFar: number
+    }
+
     export function createDefaultSnapshot(): Snapshot {
         return {
             mode: 'perspective',

+ 1 - 1
src/mol-canvas3d/camera/transition.ts

@@ -15,7 +15,7 @@ class CameraTransitionManager {
 
     private func: CameraTransitionManager.TransitionFunc = CameraTransitionManager.defaultTransition;
     private start = 0;
-    private inTransition = false;
+    inTransition = false;
     private durationMs = 0;
     private source: Camera.Snapshot = Camera.createDefaultSnapshot();
     private target: Camera.Snapshot = Camera.createDefaultSnapshot();

+ 2 - 1
src/mol-canvas3d/canvas3d.ts

@@ -189,7 +189,8 @@ namespace Canvas3D {
 
             let didRender = false
             controls.update()
-            setClipping()
+            // TODO: is this a good fix? Also, setClipping does not work if the user has manually set a clipping plane.
+            if (!camera.transition.inTransition) setClipping();
             const cameraChanged = camera.updateMatrices();
 
             if (force || cameraChanged) {