Skip to content

Commit 6da36fb

Browse files
authored
Merge pull request #4501 from ggetz/cv-tilt
Tilted CV view and adjust transition from 2D to CV
2 parents b2fa6d3 + 80aef7c commit 6da36fb

File tree

1 file changed

+35
-40
lines changed

1 file changed

+35
-40
lines changed

Source/Scene/SceneTransitioner.js

+35-40
Original file line numberDiff line numberDiff line change
@@ -126,11 +126,12 @@ define([
126126

127127
if (duration > 0.0) {
128128
position.x = 0.0;
129-
position.y = 0.0;
130-
position.z = 5.0 * ellipsoid.maximumRadius;
129+
position.y = -1.0;
130+
position.z = 1.0;
131+
position = Cartesian3.multiplyByScalar(Cartesian3.normalize(position, position), 5.0 * ellipsoid.maximumRadius, position);
131132

132-
Cartesian3.negate(Cartesian3.UNIT_Z, direction);
133-
Cartesian3.clone(Cartesian3.UNIT_Y, up);
133+
Cartesian3.negate(Cartesian3.normalize(position, direction), direction);
134+
Cartesian3.cross(Cartesian3.UNIT_X, direction, up);
134135
} else {
135136
var camera = scene.camera;
136137
if (this._previousMode === SceneMode.SCENE2D) {
@@ -694,48 +695,42 @@ define([
694695
var scene = transitioner._scene;
695696
var camera = scene.camera;
696697

697-
var startPos = Cartesian3.clone(camera.position, scratch3DToCVStartPos);
698-
var startDir = Cartesian3.clone(camera.direction, scratch3DToCVStartDir);
699-
var startUp = Cartesian3.clone(camera.up, scratch3DToCVStartUp);
700-
701698
var endPos = Cartesian3.clone(cameraCV.position, scratch3DToCVEndPos);
702699
var endDir = Cartesian3.clone(cameraCV.direction, scratch3DToCVEndDir);
703700
var endUp = Cartesian3.clone(cameraCV.up, scratch3DToCVEndUp);
704701

705-
var startRight = camera.frustum.right;
706-
var endRight = endPos.z * 0.5;
707-
708-
function update(value) {
709-
columbusViewMorph(startPos, endPos, value.time, camera.position);
710-
columbusViewMorph(startDir, endDir, value.time, camera.direction);
711-
columbusViewMorph(startUp, endUp, value.time, camera.up);
712-
Cartesian3.cross(camera.direction, camera.up, camera.right);
713-
Cartesian3.normalize(camera.right, camera.right);
714-
715-
var frustum = camera.frustum;
716-
frustum.right = CesiumMath.lerp(startRight, endRight, value.time);
717-
frustum.left = -frustum.right;
718-
frustum.top = frustum.right * (scene.drawingBufferHeight / scene.drawingBufferWidth);
719-
frustum.bottom = -frustum.top;
720-
721-
camera.position.z = 2.0 * scene.mapProjection.ellipsoid.maximumRadius;
722-
}
723-
var tween = scene.tweens.add({
724-
duration : duration,
725-
easingFunction : EasingFunction.QUARTIC_OUT,
726-
startObject : {
727-
time : 0.0
728-
},
729-
stopObject : {
730-
time : 1.0
731-
},
732-
update : update,
733-
complete : function() {
734-
scene._mode = SceneMode.MORPHING;
735-
morphOrthographicToPerspective(transitioner, duration, cameraCV, complete);
702+
scene._mode = SceneMode.MORPHING;
703+
morphOrthographicToPerspective(transitioner, 0.0, cameraCV, function() {
704+
camera.frustum = cameraCV.frustum.clone();
705+
706+
var startPos = Cartesian3.clone(camera.position, scratch3DToCVStartPos);
707+
var startDir = Cartesian3.clone(camera.direction, scratch3DToCVStartDir);
708+
var startUp = Cartesian3.clone(camera.up, scratch3DToCVStartUp);
709+
startPos.z = endPos.z;
710+
711+
function update(value) {
712+
columbusViewMorph(startPos, endPos, value.time, camera.position);
713+
columbusViewMorph(startDir, endDir, value.time, camera.direction);
714+
columbusViewMorph(startUp, endUp, value.time, camera.up);
715+
Cartesian3.cross(camera.direction, camera.up, camera.right);
716+
Cartesian3.normalize(camera.right, camera.right);
736717
}
718+
var tween = scene.tweens.add({
719+
duration : duration,
720+
easingFunction : EasingFunction.QUARTIC_OUT,
721+
startObject : {
722+
time : 0.0
723+
},
724+
stopObject : {
725+
time : 1.0
726+
},
727+
update : update,
728+
complete : function() {
729+
complete(transitioner);
730+
}
731+
});
732+
transitioner._currentTweens.push(tween);
737733
});
738-
transitioner._currentTweens.push(tween);
739734
}
740735

741736
var scratch3DToCVStartPos = new Cartesian3();

0 commit comments

Comments
 (0)