Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Clamping to 3D Tiles #6934

Merged
merged 42 commits into from
Sep 28, 2018
Merged
Show file tree
Hide file tree
Changes from 30 commits
Commits
Show all changes
42 commits
Select commit Hold shift + click to select a range
ab1ed46
pick from ray functions
lilleyse Jul 19, 2018
62d6658
Removed Clamp to Tileset demo
lilleyse Sep 6, 2018
5e133ff
Add development demos
lilleyse Sep 6, 2018
318821f
Add clamp to 3d tiles demo
lilleyse Sep 6, 2018
236c850
Partial updates
lilleyse Sep 10, 2018
3e58014
Fixed sampleHeight to work with entities and updated Sandcastle example
lilleyse Sep 11, 2018
59570f5
Rename
lilleyse Sep 12, 2018
55734c7
Expand on documentation
lilleyse Sep 13, 2018
3001c5b
Organize pick tests into folders
lilleyse Sep 13, 2018
e111e3f
Merge branch 'master' into pick-ray-2
lilleyse Sep 13, 2018
e6688e8
Combine pick and pickPosition from ray functions together. Update doc
lilleyse Sep 15, 2018
653fe19
Tests
lilleyse Sep 15, 2018
3a1566c
Remove sun visibility demo
lilleyse Sep 15, 2018
4e079b7
Add warnings to Sandcastle demos
lilleyse Sep 15, 2018
1e26b8b
Renames in PickSpec
lilleyse Sep 15, 2018
1c98b5d
Merge branch 'translucent-pick-fix' into pick-ray-2
lilleyse Sep 15, 2018
d8490eb
eslint fixes
lilleyse Sep 15, 2018
7c787c7
Add initialTilesLoaded helper and cleanup sandcastle demo
lilleyse Sep 17, 2018
7799cd0
Renamed Ground Clamping to Clamp to Terrain
lilleyse Sep 17, 2018
9a8f03d
Add Clamp to 3D Model demo
lilleyse Sep 17, 2018
ffc35c6
Cleanup updates
lilleyse Sep 17, 2018
9abdbb6
Added test for initialTilesLoaded event
lilleyse Sep 17, 2018
a37ad74
Add label to Clamp to 3D Model demo
lilleyse Sep 17, 2018
9f547b4
Revert ae0a4c15 (uniform splits in 3D orthographic) which seems to be…
lilleyse Sep 17, 2018
7671f71
Added back clamping to the globe and wrote tests for checking the globe
lilleyse Sep 17, 2018
d4f6dae
Update CHANGES.md
lilleyse Sep 17, 2018
6f0b8f9
Merge branch 'master' into pick-ray-2
lilleyse Sep 18, 2018
d57b749
Merge branch 'master' into pick-ray-2
lilleyse Sep 19, 2018
45a77b3
Remove unused useLogDepthDirty
lilleyse Sep 21, 2018
7e54834
Cleanup in prep for offscreen picking
lilleyse Sep 21, 2018
9465e34
Merge branch 'master' into pick-ray-2
lilleyse Sep 25, 2018
faafedf
Add comment about writing translucent depth in pick pass and don't re…
lilleyse Sep 25, 2018
def0ddd
Attempt to fix failing Travis tests
lilleyse Sep 25, 2018
6afb0d0
Fix eslint
lilleyse Sep 26, 2018
59df7ed
Merge branch 'master' into pick-ray-2
lilleyse Sep 26, 2018
e253de6
Move hide/show objects outside of drill pick
lilleyse Sep 26, 2018
9c8c800
Update Sandcastle demo to not trigger infinite loop
lilleyse Sep 26, 2018
8209e29
Expand excludes object test
lilleyse Sep 26, 2018
1cda2e1
Revert "Update Sandcastle demo to not trigger infinite loop"
lilleyse Sep 28, 2018
7da184d
Revert "Move hide/show objects outside of drill pick"
lilleyse Sep 28, 2018
e67aaa4
Merge branch 'master' into pick-ray-2
lilleyse Sep 28, 2018
eaab71c
Add sampleHeightSupported check to demo
lilleyse Sep 28, 2018
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
41 changes: 41 additions & 0 deletions Apps/SampleData/ClampToGround.czml
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
[
{
"id": "document",
"version": "1.0",
"clock": {
"interval": "2018-07-19T15:18:00Z/2018-07-19T15:18:30Z",
"currentTime": "2018-07-19T15:18:00Z",
"multiplier": 5,
"range": "LOOP_STOP",
"step": "SYSTEM_CLOCK_MULTIPLIER"
}
},
{
"id": "CesiumMilkTruck",
"model": {
"gltf": "models/CesiumMilkTruck/CesiumMilkTruck.glb"
},
"position": {
"interpolationAlgorithm": "LINEAR",
"forwardExtrapolationType": "HOLD",
"cartesian": [
"2018-07-19T15:18:00Z",
1216348.1632364073,
-4736348.958775471,
4081284.5528982095,
"2018-07-19T15:18:30Z",
1216369.1229444197,
-4736377.467107148,
4081240.888485707
]
},
"orientation": {
"unitQuaternion": [
0.3084011337938999,
0.3210181022701266,
-0.45850421987074924,
0.7686388857813198
]
}
}
]
102 changes: 102 additions & 0 deletions Apps/Sandcastle/gallery/Clamp to 3D Model.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
<meta name="description" content="Clamp a point and label to a model using the sampleHeight function.">
<meta name="cesium-sandcastle-labels" content="Showcases">
<title>Cesium Demo</title>
<script type="text/javascript" src="../Sandcastle-header.js"></script>
<script type="text/javascript" src="../../../ThirdParty/requirejs-2.1.20/require.js"></script>
<script type="text/javascript">
if(typeof require === 'function') {
require.config({
baseUrl : '../../../Source',
waitSeconds : 120
});
}
</script>
</head>
<body class="sandcastle-loading" data-sandcastle-bucket="bucket-requirejs.html">
<style>
@import url(../templates/bucket.css);
</style>
<div id="cesiumContainer" class="fullSize"></div>
<div id="loadingOverlay"><h1>Loading...</h1></div>
<div id="toolbar"></div>
<script id="cesium_sandcastle_script">
function startup(Cesium) {
'use strict';
//Sandcastle_Begin
var viewer = new Cesium.Viewer('cesiumContainer', {
infoBox : false,
selectionIndicator : false,
shadows : true,
shouldAnimate : true
});
viewer.scene.globe.depthTestAgainstTerrain = true;

var longitude = -2.1480545852753163;
var latitude = 0.7688240036937101;
var range = 0.000002;
var duration = 4.0;

var entity = viewer.entities.add({
position : Cesium.Cartesian3.fromRadians(longitude, latitude),
model : {
uri : '../../SampleData/models/GroundVehicle/GroundVehicle.glb'
}
});

var point = viewer.entities.add({
position : new Cesium.CallbackProperty(updatePosition, false),
point : {
pixelSize : 10,
color : Cesium.Color.YELLOW,
disableDepthTestDistance : Number.POSITIVE_INFINITY
},
label : {
show : false,
showBackground : true,
font : '14px monospace',
horizontalOrigin : Cesium.HorizontalOrigin.LEFT,
verticalOrigin : Cesium.VerticalOrigin.BOTTOM,
pixelOffset : new Cesium.Cartesian2(5, 5),
disableDepthTestDistance : Number.POSITIVE_INFINITY
}
});

var objectsToExclude = [point];
var cartographic = new Cesium.Cartographic();

function updatePosition(time, result) {
var offset = (time.secondsOfDay % duration) / duration;
cartographic.longitude = longitude - range + offset * range * 2.0;
cartographic.latitude = latitude;

var height = viewer.scene.sampleHeight(cartographic, objectsToExclude);

if (Cesium.defined(height)) {
cartographic.height = height;
point.label.text = Math.abs(height).toFixed(2).toString() + ' m';
point.label.show = true;
} else {
cartographic.height = 0.0;
point.label.show = false;
}

return Cesium.Cartographic.toCartesian(cartographic, Cesium.Ellipsoid.WGS84, result);
}
viewer.trackedEntity = entity;
//Sandcastle_End
Sandcastle.finishedLoading();
}
if (typeof Cesium !== 'undefined') {
startup(Cesium);
} else if (typeof require === 'function') {
require(['Cesium'], startup);
}
</script>
</body>
</html>
Binary file added Apps/Sandcastle/gallery/Clamp to 3D Model.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
83 changes: 83 additions & 0 deletions Apps/Sandcastle/gallery/Clamp to 3D Tiles.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
<!DOCTYPE html>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is missing the thumbnail? Perhaps gallery/development/Clamp to Tileset.jpg is in the wrong location?

<html lang="en">
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

For Sandcastle examples:

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Added Clamp to 3D Model.

Renamed Ground Clamping to Clamp to Terrain. I added a checkbox for fixing any broken links when the next release happens.

<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, minimum-scale=1, user-scalable=no">
<meta name="description" content="Clamp a model to a 3D Tileset using the clampToHeight function.">
<meta name="cesium-sandcastle-labels" content="Showcases, 3D Tiles">
<title>Cesium Demo</title>
<script type="text/javascript" src="../Sandcastle-header.js"></script>
<script type="text/javascript" src="../../../ThirdParty/requirejs-2.1.20/require.js"></script>
<script type="text/javascript">
if(typeof require === 'function') {
require.config({
baseUrl : '../../../Source',
waitSeconds : 120
});
}
</script>
</head>
<body class="sandcastle-loading" data-sandcastle-bucket="bucket-requirejs.html">
<style>
@import url(../templates/bucket.css);
</style>
<div id="cesiumContainer" class="fullSize"></div>
<div id="loadingOverlay"><h1>Loading...</h1></div>
<div id="toolbar"></div>
<script id="cesium_sandcastle_script">
function startup(Cesium) {
'use strict';
//Sandcastle_Begin
var viewer = new Cesium.Viewer('cesiumContainer', {
terrainProvider : Cesium.createWorldTerrain()
});
var scene = viewer.scene;
var clock = viewer.clock;

if (!scene.clampToHeightSupported) {
console.log('This browser does not support clampToHeight.');
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

To make this example easier to follow, just return here instead of having the later if statements? Does it matter if it doesn't load everything else when clamping isn't supported? What value does that bring and how often?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The only thing that happens is Sandcastle gets stuck on the loading screen if returning early. I think it's preferable to try to avoid that, but maybe it doesn't matter if the demo wouldn't work anyways.

loading

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

OK, let's keep it so the example doesn't get stuck.

return;
}

var entity;
var positionProperty;
var dataSourcePromise = Cesium.CzmlDataSource.load('../../SampleData/ClampToGround.czml');
viewer.dataSources.add(dataSourcePromise).then(function(dataSource) {
entity = dataSource.entities.getById('CesiumMilkTruck');
positionProperty = entity.position;
});

var tileset = scene.primitives.add(
new Cesium.Cesium3DTileset({
url: Cesium.IonResource.fromAssetId(6074)
})
);

viewer.camera.setView({
destination: new Cesium.Cartesian3(1216403.8845586285, -4736357.493351395, 4081299.715698949),
orientation: new Cesium.HeadingPitchRoll(4.2892217081808806, -0.4799070147502502, 6.279789177843313),
endTransform : Cesium.Matrix4.IDENTITY
});

tileset.initialTilesLoaded.addEventListener(start);

function start() {
clock.shouldAnimate = true;
var objectsToExclude = [entity];
scene.postRender.addEventListener(function() {
var position = positionProperty.getValue(clock.currentTime);
entity.position = scene.clampToHeight(position, objectsToExclude);
});
}
//Sandcastle_End
Sandcastle.finishedLoading();
}
if (typeof Cesium !== 'undefined') {
startup(Cesium);
} else if (typeof require === 'function') {
require(['Cesium'], startup);
}
</script>
</body>
</html>
Binary file added Apps/Sandcastle/gallery/Clamp to 3D Tiles.jpg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
154 changes: 0 additions & 154 deletions Apps/Sandcastle/gallery/development/Clamp to Tileset.html

This file was deleted.

Binary file not shown.
Loading