var viewer = new Cesium.Viewer('cesiumContainer', { infoBox : false, selectionIndicator : false, shadows : true, shouldAnimate : true});viewer.scene.debugShowFramesPerSecond = true;
//Create a model at the specified location function createModel(url, lon,lat,height) { var position = Cesium.Cartesian3.fromDegrees(lon, lat, height); var heading = Cesium.Math.toRadians(135); var pitch = 0; var roll = 0; var hpr = new Cesium.HeadingPitchRoll(heading, pitch, roll); var orientation = Cesium.Transforms.headingPitchRollQuaternion(position, hpr);
var entity = viewer.entities.add({ name : url, position : position, orientation : orientation, model : { uri : url, minimumPixelSize : 128, maximumScale : 20000 } });}
//Create a specified number of models with random locationsfunction addModel(count){ for (var i=0;i<count;i++){ var lon = Math.random()*120.0 - 60.0;//(-60,60) var lat = Math.random()*120.0 - 60.0;//(60,60) var url = "../../SampleData/models/CesiumAir/Cesium_Air.glb"; var entity = createModel(url,lon,lat, 50000.0); }}
addModel(5000);var rectangle = new Cesium.Rectangle(Cesium.Math.toRadians(-60), Cesium.Math.toRadians(-60), Cesium.Math.toRadians(60), Cesium.Math.toRadians(60));viewer.scene.camera.flyTo({destination: rectangle});
var viewer = new Cesium.Viewer('cesiumContainer', { infoBox : false, selectionIndicator : false,
shadows : false, shouldAnimate : false});viewer.scene.debugShowFramesPerSecond = true;viewer._cesiumWidget._creditContainer.style.display="none";
var url = "../../../../Apps/SampleData/models/CesiumAir/Cesium_Air.glb";var count = 5000;//entity numbervar collection;var useCollection = false;var context = viewer.scene.context;var instancedArraysExtension = context._instancedArrays;
//generate a random number(n,m)function rd(n,m){ var c = m-n+1; return Math.floor(Math.random() * c + n);
}
//Create a model at the specified location function createModel(url, lon,lat,height) { var position = Cesium.Cartesian3.fromDegrees(lon, lat, height); var heading = Cesium.Math.toRadians(135); var pitch = 0; var roll = 0; var hpr = new Cesium.HeadingPitchRoll(heading, pitch, roll); var orientation = Cesium.Transforms.headingPitchRollQuaternion(position, hpr);
var entity = viewer.entities.add({ name : url, position : position, orientation : orientation, model : { uri : url, minimumPixelSize : 128, maximumScale : 20000 } });}
//Create a specified number of models with random locations
function addModel(){
for (var i=0;i<count;i++){
var lon =rd(90,130);//(90,130) var lat =rd(20,55);//(20,55)
var entity = createModel(url,lon,lat, 50000.0); }}
function reset() { if(collection){ viewer.scene.primitives.remove(collection); }else{ viewer.entities.removeAll(); } if(useCollection){ addCollection(); }else{ addModel(); }}
//Collectionfunction addCollection() { var instances = []; for(var i=0;i<count;++i){ var lon =rd(90,130);//(90,130) var lat =rd(20,55);//(20,55) var position = Cesium.Cartesian3.fromDegrees(lon, lat, 50000); var heading = Math.random(); var pitch = Math.random(); var roll = Math.random(); var scale = (Math.random() + 1.0)/2.0; scale = 20000; var modelMatrix = Cesium.Transforms.headingPitchRollToFixedFrame(position, new Cesium.HeadingPitchRoll(heading, pitch, roll)); Cesium.Matrix4.multiplyByUniformScale(modelMatrix, scale, modelMatrix);
instances.push({ modelMatrix : modelMatrix }); }
collection = viewer.scene.primitives.add(new Cesium.ModelInstanceCollection({ url : url, instances : instances }));}
addModel();
var rectangle = new Cesium.Rectangle(Cesium.Math.toRadians(90), Cesium.Math.toRadians(20), Cesium.Math.toRadians(130), Cesium.Math.toRadians(55));viewer.scene.camera.flyTo({destination: rectangle});
Sandcastle.addToolbarMenu([ { text : 'entity', onselect : function() { useCollection = false; reset(); }}, { text : 'instances', onselect : function() { context._instancedArrays = instancedArraysExtension; useCollection = true; reset(); }}]);