From f868664f7e7626f651e6ade9c9f6863851ef43b7 Mon Sep 17 00:00:00 2001 From: Normand Briere <nbriere@noware.ca> Date: Wed, 06 Nov 2019 23:12:57 -0500 Subject: [PATCH] Dangerous "reset". --- Camera.java | 64 +++++++++++++++++++------------- 1 files changed, 38 insertions(+), 26 deletions(-) diff --git a/Camera.java b/Camera.java index 9968d81..2bb124c 100644 --- a/Camera.java +++ b/Camera.java @@ -288,25 +288,15 @@ // Zoom double factor = Math.exp(-dy/300.0); // (1 + dy/100); - if (viewCode != 0) - { - LA.vecSub(location, lookAt, location); + LA.vecSub(location, lookAt, location); - cVector p = location; + cVector p = location; - p.x *= factor; - p.y *= factor; - p.z *= factor; + p.x *= factor; + p.y *= factor; + p.z *= factor; - LA.vecAdd(location, lookAt, location); - } - else - if (//shaper_fovy < 180 && factor > 1 || - shaper_fovy * factor < 150) - { - shaper_fovy *= factor; - //System.out.println("fovy = " + shaper_fovy); - } + LA.vecAdd(location, lookAt, location); } else { @@ -340,9 +330,12 @@ location.set(lookAt); lookAt.set(cStatic.point1); - cStatic.point1.set(locationBuf); - locationBuf.set(lookAtBuf); - lookAtBuf.set(cStatic.point1); + if (viewCode == 0 && locationBuf != null) + { + cStatic.point1.set(locationBuf); + locationBuf.set(lookAtBuf); + lookAtBuf.set(cStatic.point1); + } // UP.mul(-1); RotatePosition(dx,-dy); @@ -354,9 +347,12 @@ location.set(lookAt); lookAt.set(cStatic.point1); - cStatic.point1.set(locationBuf); - locationBuf.set(lookAtBuf); - lookAtBuf.set(cStatic.point1); + if (viewCode == 0 && locationBuf != null) + { + cStatic.point1.set(locationBuf); + locationBuf.set(lookAtBuf); + lookAtBuf.set(cStatic.point1); + } computeTransform(); } @@ -386,8 +382,24 @@ { double K = 0.25; + if (!CameraPane.capsLocked || CameraPane.ambientOcclusion) + K = 1; + locationBuf.y = location.y * K + locationBuf.y * (1 - K); lookAtBuf.y = lookAt.y * K + lookAtBuf.y * (1 - K); + + int Y = 1; + + if (UP.y < 0) + Y = -1; + + UP.x = 0 * K + UP.x * (1 - K); + UP.y = Y * K + UP.y * (1 - K); + UP.z = 0 * K + UP.z * (1 - K); + UP.normalize(); + + if (CameraPane.capsLocked && !CameraPane.ambientOcclusion) + K = 0.1; upBuf.x = UP.x * K + upBuf.x * (1 - K); upBuf.y = UP.y * K + upBuf.y * (1 - K); @@ -421,19 +433,19 @@ up2.x = UP2.x; up2.y = UP2.y; up2.z = UP2.z; - LA.vecSub(lookAt, location, away); - LA.vecNormalize(away); LA.vecCross(away, up2, right2); if (!(right2.length2() > 0)) { + System.out.println("NO UP VECTOR: " + up2); + System.out.println("lookAtBuf: " + lookAtBuf); + System.out.println("locationBuf: " + locationBuf); System.exit(0); + // old problem... assert (right2.length2() <= 0 || right2.length2() > 0); // weirdest thing ever up2.x = UP.x = 0; up2.y = UP.y = 1; up2.z = UP.z = 0; - LA.vecSub(lookAt, location, away); - LA.vecNormalize(away); LA.vecCross(away, up2, right2); } } -- Gitblit v1.6.2