summaryrefslogtreecommitdiffstats
path: root/examples
diff options
context:
space:
mode:
authorTomi Korpipää <tomi.korpipaa@theqtcompany.com>2015-05-29 06:30:43 +0300
committerPasi Keränen <pasi.keranen@digia.com>2015-05-29 05:01:03 +0000
commit12f93b58b07c58096470141467eb48363648d915 (patch)
treec8690233ebd4c33f5d56f6fe65fc06b941e38570 /examples
parent09b666f5158d8d35772f9a5588be5812a694862d (diff)
Fixed camera jumps in planets example
Change-Id: If72f2e7f7110d4ac58862cde019fa25b3cf5fdca Task-number: QTBUG-46370 Reviewed-by: Titta Heikkala <titta.heikkala@theqtcompany.com> Reviewed-by: Pasi Keränen <pasi.keranen@digia.com>
Diffstat (limited to 'examples')
-rw-r--r--examples/canvas3d/canvas3d/threejs/planets/planets.js39
-rw-r--r--examples/canvas3d/canvas3d/threejs/planets/planets.qml6
2 files changed, 23 insertions, 22 deletions
diff --git a/examples/canvas3d/canvas3d/threejs/planets/planets.js b/examples/canvas3d/canvas3d/threejs/planets/planets.js
index bf281ce..e150b08 100644
--- a/examples/canvas3d/canvas3d/threejs/planets/planets.js
+++ b/examples/canvas3d/canvas3d/threejs/planets/planets.js
@@ -446,6 +446,7 @@ function setLookAtOffset() {
var planet = 0;
if (qmlView.focusedPlanet !== SOLAR_SYSTEM)
planet = qmlView.oldPlanet;
+
var focusedPlanetPosition = objects[planet].position.clone();
offset.sub(focusedPlanetPosition);
@@ -463,7 +464,7 @@ function setCameraOffset() {
if (qmlView.focusedPlanet !== SOLAR_SYSTEM)
planet = qmlView.focusedPlanet;
- var newCameraPosition = getNewCameraPosition(planets[planet]["radius"]);
+ var newCameraPosition = getNewCameraPosition(getOuterRadius(planet));
if (qmlView.focusedPlanet !== SUN)
offset.sub(newCameraPosition);
@@ -621,25 +622,10 @@ function paintGL(canvas) {
sun.updateMatrix();
// calculate the outer radius of the focused item
- var outerRadius = 0;
- if (qmlView.focusedPlanet !== SOLAR_SYSTEM) {
- outerRadius = planets[qmlView.focusedPlanet]["radius"];
- if (qmlView.focusedPlanet === SATURN) {
- outerRadius =+ saturnOuterRadius;
- } else if (qmlView.focusedPlanet === URANUS) {
- outerRadius =+ uranusOuterRadius;
- } else if (qmlView.focusedPlanet === SUN) {
- outerRadius = planets[qmlView.focusedPlanet]["radius"] / 100;
- }
- }
+ var outerRadius = getOuterRadius(qmlView.focusedPlanet);
// get the appropriate near plane position for the camera and animate it with QML animations
- if (qmlView.focusedPlanet === SOLAR_SYSTEM)
- qmlView.cameraNear = 2500000;
- else if (qmlView.focusedPlanet === SUN)
- qmlView.cameraNear = planets[qmlView.focusedPlanet]["radius"] / 100;
- else
- qmlView.cameraNear = planets[qmlView.focusedPlanet]["radius"];
+ qmlView.cameraNear = outerRadius;
camera.near = qmlView.cameraNear;
camera.updateProjectionMatrix();
@@ -667,3 +653,20 @@ function paintGL(canvas) {
renderer.render(scene, camera);
}
+
+function getOuterRadius( planet ) {
+
+ var outerRadius = 2500000;
+ if (planet !== SOLAR_SYSTEM) {
+ outerRadius = planets[planet]["radius"];
+ if (planet === SATURN) {
+ outerRadius =+ saturnOuterRadius;
+ } else if (planet === URANUS) {
+ outerRadius =+ uranusOuterRadius;
+ } else if (planet === SUN) {
+ outerRadius = planets[planet]["radius"] / 100;
+ }
+ }
+
+ return outerRadius;
+}
diff --git a/examples/canvas3d/canvas3d/threejs/planets/planets.qml b/examples/canvas3d/canvas3d/threejs/planets/planets.qml
index 3253d9d..4b4d313 100644
--- a/examples/canvas3d/canvas3d/threejs/planets/planets.qml
+++ b/examples/canvas3d/canvas3d/threejs/planets/planets.qml
@@ -80,7 +80,6 @@ Item {
}
//! [1]
onFocusedPlanetChanged: {
-
if (focusedPlanet == 100) {
info.opacity = 0;
updatePlanetInfo();
@@ -93,9 +92,8 @@ Item {
GLCode.setLookAtOffset();
GLCode.setCameraOffset();
- lookAtOffsetAnimation.running = true;
- cameraOffsetAnimation.running = true;
-
+ lookAtOffsetAnimation.restart();
+ cameraOffsetAnimation.restart();
}
//! [1]
//! [0]