.. | .. |
---|
288 | 288 | // Zoom |
---|
289 | 289 | double factor = Math.exp(-dy/300.0); // (1 + dy/100); |
---|
290 | 290 | |
---|
291 | | - if (viewCode != 0) |
---|
292 | | - { |
---|
293 | | - LA.vecSub(location, lookAt, location); |
---|
| 291 | + LA.vecSub(location, lookAt, location); |
---|
294 | 292 | |
---|
295 | | - cVector p = location; |
---|
| 293 | + cVector p = location; |
---|
296 | 294 | |
---|
297 | | - p.x *= factor; |
---|
298 | | - p.y *= factor; |
---|
299 | | - p.z *= factor; |
---|
| 295 | + p.x *= factor; |
---|
| 296 | + p.y *= factor; |
---|
| 297 | + p.z *= factor; |
---|
300 | 298 | |
---|
301 | | - LA.vecAdd(location, lookAt, location); |
---|
302 | | - } |
---|
303 | | - else |
---|
304 | | - if (//shaper_fovy < 180 && factor > 1 || |
---|
305 | | - shaper_fovy * factor < 150) |
---|
306 | | - { |
---|
307 | | - shaper_fovy *= factor; |
---|
308 | | - //System.out.println("fovy = " + shaper_fovy); |
---|
309 | | - } |
---|
| 299 | + LA.vecAdd(location, lookAt, location); |
---|
310 | 300 | } |
---|
311 | 301 | else |
---|
312 | 302 | { |
---|
.. | .. |
---|
340 | 330 | location.set(lookAt); |
---|
341 | 331 | lookAt.set(cStatic.point1); |
---|
342 | 332 | |
---|
343 | | - cStatic.point1.set(locationBuf); |
---|
344 | | - locationBuf.set(lookAtBuf); |
---|
345 | | - lookAtBuf.set(cStatic.point1); |
---|
| 333 | + if (viewCode == 0 && locationBuf != null) |
---|
| 334 | + { |
---|
| 335 | + cStatic.point1.set(locationBuf); |
---|
| 336 | + locationBuf.set(lookAtBuf); |
---|
| 337 | + lookAtBuf.set(cStatic.point1); |
---|
| 338 | + } |
---|
346 | 339 | // UP.mul(-1); |
---|
347 | 340 | |
---|
348 | 341 | RotatePosition(dx,-dy); |
---|
.. | .. |
---|
354 | 347 | location.set(lookAt); |
---|
355 | 348 | lookAt.set(cStatic.point1); |
---|
356 | 349 | |
---|
357 | | - cStatic.point1.set(locationBuf); |
---|
358 | | - locationBuf.set(lookAtBuf); |
---|
359 | | - lookAtBuf.set(cStatic.point1); |
---|
| 350 | + if (viewCode == 0 && locationBuf != null) |
---|
| 351 | + { |
---|
| 352 | + cStatic.point1.set(locationBuf); |
---|
| 353 | + locationBuf.set(lookAtBuf); |
---|
| 354 | + lookAtBuf.set(cStatic.point1); |
---|
| 355 | + } |
---|
360 | 356 | |
---|
361 | 357 | computeTransform(); |
---|
362 | 358 | } |
---|
.. | .. |
---|
386 | 382 | { |
---|
387 | 383 | double K = 0.25; |
---|
388 | 384 | |
---|
| 385 | + if (!CameraPane.capsLocked || CameraPane.ambientOcclusion) |
---|
| 386 | + K = 1; |
---|
| 387 | + |
---|
389 | 388 | locationBuf.y = location.y * K + locationBuf.y * (1 - K); |
---|
390 | 389 | lookAtBuf.y = lookAt.y * K + lookAtBuf.y * (1 - K); |
---|
| 390 | + |
---|
| 391 | + int Y = 1; |
---|
| 392 | + |
---|
| 393 | + if (UP.y < 0) |
---|
| 394 | + Y = -1; |
---|
| 395 | + |
---|
| 396 | + UP.x = 0 * K + UP.x * (1 - K); |
---|
| 397 | + UP.y = Y * K + UP.y * (1 - K); |
---|
| 398 | + UP.z = 0 * K + UP.z * (1 - K); |
---|
| 399 | + UP.normalize(); |
---|
| 400 | + |
---|
| 401 | + if (CameraPane.capsLocked && !CameraPane.ambientOcclusion) |
---|
| 402 | + K = 0.1; |
---|
391 | 403 | |
---|
392 | 404 | upBuf.x = UP.x * K + upBuf.x * (1 - K); |
---|
393 | 405 | upBuf.y = UP.y * K + upBuf.y * (1 - K); |
---|
.. | .. |
---|
421 | 433 | up2.x = UP2.x; |
---|
422 | 434 | up2.y = UP2.y; |
---|
423 | 435 | up2.z = UP2.z; |
---|
424 | | - LA.vecSub(lookAt, location, away); |
---|
425 | | - LA.vecNormalize(away); |
---|
426 | 436 | LA.vecCross(away, up2, right2); |
---|
427 | 437 | if (!(right2.length2() > 0)) |
---|
428 | 438 | { |
---|
| 439 | + System.out.println("NO UP VECTOR: " + up2); |
---|
| 440 | + System.out.println("lookAtBuf: " + lookAtBuf); |
---|
| 441 | + System.out.println("locationBuf: " + locationBuf); |
---|
429 | 442 | System.exit(0); |
---|
| 443 | + |
---|
430 | 444 | // old problem... |
---|
431 | 445 | assert (right2.length2() <= 0 || right2.length2() > 0); // weirdest thing ever |
---|
432 | 446 | up2.x = UP.x = 0; |
---|
433 | 447 | up2.y = UP.y = 1; |
---|
434 | 448 | up2.z = UP.z = 0; |
---|
435 | | - LA.vecSub(lookAt, location, away); |
---|
436 | | - LA.vecNormalize(away); |
---|
437 | 449 | LA.vecCross(away, up2, right2); |
---|
438 | 450 | } |
---|
439 | 451 | } |
---|