So I found that my Primitive code worked if I added the following to both the initial declaration of the primitive and in the new primitive that is created to "updated" the old (and now deleted) primitive.
releaseGeometryInstances: false, in the following code:
viewer.scene.primitives.add(new Cesium.GroundPrimitive({
geometryInstances: instance,
appearance: new Cesium.PerInstanceColorAppearance(),
releaseGeometryInstances: false,
asynchronous: false
}));
As for using an entity and updating its shape here is a sandcastle with the given problem. The swathe is being drawn to the left of the Great Lakes. Put the clock on x350 to see the issue as the polygon shape is supposed to update every minute of cesium clock time.
I also see that if you change the clock to x5000 or greater, it shows sort of how I need the update to look like. I just need it to look like that at any speed.
https://cesiumjs.org/Cesium/Build/Apps/Sandcastle/#c=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
var viewer = new Cesium.Viewer('cesiumContainer');
// holds all the data for a single UAV with a simple conic sensor. The swathe shows roughly where that sensor sees on the ground
var vehicles = [{ name:"UAV", id:"1a150f73-717b-4985-b2b8-f7409de89acd", waypointsOculus:[{order:1, name:"Waypoint", id:"399e8d28-4273-450e-b30e-0ca337739ed0",uavId:"1a150f73-717b-4985-b2b8-f7409de89acd",latitude:43.3117,longitude:-93.69754,altitude:10000,groundSpeed:200,rateOfClimb:0},{order:2,name:"Waypoint 2",id:"9ae9ead3-0854-42c2-aee3-bb69cef0f641",uavId:"1a150f73-717b-4985-b2b8-f7409de89acd",latitude:41.24664,longitude:-91.96659,altitude:10000,groundSpeed:200,rateOfClimb:0},{order:3,name:"Waypoint 3",id:"3e72259b-efe0-413d-9190-4950f4282b23",uavId:"1a150f73-717b-4985-b2b8-f7409de89acd",latitude:41.17983,longitude:-94.80914,altitude:10000,groundSpeed:200,rateOfClimb:0}],returnToStart:true,sensor:{coneHalfAngle:25,platformID:null,name:"Simple Conic Sensor: Sensor 1",type:1,radius:Infinity},swathe:{item1:["2019-02-19T11:08:00Z","2019-02-19T11:09:00Z","2019-02-19T11:10:00Z","2019-02-19T11:11:00Z","2019-02-19T11:12:00Z","2019-02-19T11:13:00Z","2019-02-19T11:14:00Z","2019-02-19T11:15:00Z","2019-02-19T11:16:00Z","2019-02-19T11:17:00Z","2019-02-19T11:18:00Z","2019-02-19T11:19:00Z","2019-02-19T11:20:00Z","2019-02-19T11:21:00Z","2019-02-19T11:22:00Z","2019-02-19T11:23:00Z","2019-02-19T11:24:00Z","2019-02-19T11:25:00Z","2019-02-19T11:26:00Z","2019-02-19T11:27:00Z","2019-02-19T11:28:00Z","2019-02-19T11:29:00Z","2019-02-19T11:30:00Z","2019-02-19T11:31:00Z","2019-02-19T11:32:00Z","2019-02-19T11:33:00Z","2019-02-19T11:34:00Z","2019-02-19T11:35:00Z","2019-02-19T11:36:00Z","2019-02-19T11:37:00Z","2019-02-19T11:38:00Z","2019-02-19T11:39:00Z","2019-02-19T11:40:00Z","2019-02-19T11:41:00Z","2019-02-19T11:42:00Z","2019-02-19T11:43:00Z","2019-02-19T11:44:00Z","2019-02-19T11:45:00Z","2019-02-19T11:46:00Z","2019-02-19T11:47:00Z","2019-02-19T11:48:00Z","2019-02-19T11:49:00Z","2019-02-19T11:50:00Z","2019-02-19T11:51:00Z","2019-02-19T11:52:00Z","2019-02-19T11:53:00Z","2019-02-19T11:54:00Z","2019-02-19T11:55:00Z","2019-02-19T11:56:00Z","2019-02-19T11:57:00Z","2019-02-19T11:58:00Z","2019-02-19T11:59:00Z","2019-02-19T12:00:00Z","2019-02-19T12:01:00Z","2019-02-19T12:02:00Z","2019-02-19T12:03:00Z","2019-02-19T12:04:00Z","2019-02-19T12:05:00Z","2019-02-19T12:06:00Z","2019-02-19T12:07:00Z","2019-02-19T12:08:00Z","2019-02-19T12:09:00Z","2019-02-19T12:10:00Z","2019-02-19T12:11:33.0733632Z"], item2:[-298551.02212218475,-4635511.566947003,4356104.348196525,-302091.52183639864,-4635709.4892738955,4355652.655589143,-304263.1819076564,-4637582.151526664,4353521.859902124,-303796.0732331637,-4640027.7125567915,4350965.138953235,-297811.6330796229,-4647364.255316106,4343592.132443942,-291826.1534670838,-4654684.36273009,4336203.649550307,-285839.6555481943,-4661988.008550037,4328799.71625515,-279852.1604801085,-4669275.166584215,4321380.358597322,-273863.6894244116,-4676545.8106979765,4313945.602671607,-267874.26354703866,-4683799.914813848,4306495.474628642,-261883.90401821435,-4691037.452911641,4299030.000674835,-255892.63201236576,-4698258.399028544,4291549.207072277,-249900.46870805437,-4705462.727259222,4284053.120138667,-243907.43528790827,-4712650.411755929,4276541.766247207,-237913.55293853517,-4719821.42672859,4269015.17182654,-231918.8428504549,-4726975.746444919,4261473.363360644,-225923.3262180276,-4734113.345230502,4253916.367388765,-219927.0242393772,-4741234.197468905,4246344.210505319,-213929.95811631618,-4748338.277601773,4238756.919359804,-207932.14905427283,-4755425.560128928,4231154.520656725,-201933.61826221802,-4762496.019608463,4223537.041155501,-195934.3869525859,-4769549.630656855,4215904.507670369,-189934.47634120224,-4776586.36794904,4208256.9470703155,-183933.9076472113,-4783606.206218537,4200594.386278977,-177932.70209301118,-4790609.120257524,4192916.852274555,-171930.88090414528,-4797595.084916955,4185224.372089726,-170592.31022816946,-4796499.530294717,4186525.8816784467,-182587.29006669673,-4796187.813848242,4186378.042725879,-194581.6253557358,-4795859.158735981,4186215.341120658,-206575.2737626789,-4795513.566110171,4186037.7774341274,-218568.19295727604,-4795151.037182121,4185845.3522898196,-230560.34061177692,-4794771.573222221,4185638.066363448,-242551.67440107316,-4794375.17555992,4185415.920382922,-254542.15200284796,-4793961.845583734,4185178.915128336,-266531.73109771207,-4793531.584741244,4184927.051431954,-278520.36936935346,-4793084.394539072,4184660.3301782347,-290508.0245046815,-4792620.276542907,4184378.7523038005,-302494.65419396665,-4792139.232377471,4184082.3187974505,-314480.2161309922,-4791641.263726528,4183771.0307001607,-326464.66801318846,-4791126.37233288,4183444.8891050653,-338447.9675417859,-4790594.559998355,4183103.895157463,-350430.0724219537,-4790045.828583802,4182748.0500548203,-362410.94036294526,-4789480.180009092,4182377.3550467505,-374390.52907824185,-4788897.616253104,4181991.8114350243,-386368.7962856993,-4788298.139353721,4181591.4205735573,-398345.6997076881,-4787681.7514078235,4181176.1838684143,-395816.0461279093,-4787686.922973826,4181408.9249679735,-390948.00451959803,-4780665.486714553,4189835.1736817043,-386078.56361914636,-4773627.126828197,4198246.480861144,-381207.7407025825,-4766571.868637169,4206642.816872868,-376335.5530500216,-4759499.737522611,4215024.152138298,-371462.01794560254,-4752410.758924297,4223390.457133815,-366587.15267742216,-4745304.958340529,4231741.702390839,-361710.97453747777,-4738182.361328047,4240077.858495936,-356833.50082159456,-4731042.993501916,4248398.896090909,-351954.74882938527,-4723886.880535431,4256704.785872903,-347074.7358641612,-4716714.048160018,4264995.498594485,-342193.479232892,-4709524.522165132,4273271.005063753,-337310.9962461285,-4702318.328398149,4281531.276144426,-332427.3042179451,-4695095.492764275,4289776.282755943,-327542.4204658889,-4687856.041226437,4298005.995873547,-322656.362310897,-4680599.999805181,4306220.386528398,-317769.1470772515,-4673327.3945785845,4314419.425807643,-312880.79209251533,-4666038.251682125,4322603.084854537,-307991.3146874534,-4658732.597308611,4330771.334868511,-303100.73219599435,-4651410.457708056,4338924.147105283,-295512.20343215443,-4640019.629773424,4351540.359887921,-295408.0606761849,-4637572.81665719,4354137.480684811,-297858.33225147845,-4635704.772547448,4355947.221198001,-301427.77750088566,-4635514.7902224455,4355904.150869566,-304018.16133653355,-4637114.464135809,4354033.675693556,-311606.6916458678,-4648505.316362364,4341417.485638447,-316497.2751559629,-4655827.471693188,4333264.688052514,-321386.7535972357,-4663133.141852149,4325096.452688722,-326275.10963581025,-4670422.300589208,4316912.8082911465,-331162.32594097144,-4677694.921711538,4308713.783660145,-336048.38518521376,-4684950.979083637,4300499.407652255,-340933.27004430717,-4692190.446627404,4292269.709180122,-345816.9631973675,-4699413.298322271,4284024.717212379,-350699.4473269041,-4706619.50820528,4275764.460773573,-355580.7051188938,-4713809.0503712045,4267488.968944059,-360460.7192628389,-4720981.898972638,4259198.270859909,-365339.4724518206,-4728138.0282201,4250892.395712818,-370216.94738257804,-4735277.412382137,4242571.3727500085,-375093.1267555604,-4742400.025785422,4234235.231274133,-379967.993274989,-4749505.842814858,4225884.000643177,-384841.5296489156,-4756594.83791368,4217517.7102703685,-389713.7185892967,-4763666.985583549,4209136.389624078,-394584.5428120452,-4770722.260384663,4200740.06822772,-399453.9850370982,-4777760.636935843,4192328.7756596636,-404322.02798847394,-4784782.089914647,4183902.5415531257,-398419.1030428742,-4793832.081719427,4174163.5339569203,-386442.19962243387,-4794448.471998046,4174578.772685739,-374463.9324040378,-4795047.951147116,4174979.1654987256,-362484.3436657325,-4795630.517069722,4175364.7109897872,-350503.47569007927,-4796196.167727945,4175735.407804977,-338521.37076401425,-4796744.901142867,4176091.2546425057,-326538.0711787015,-4797276.715394588,4176432.250252731,-314553.6192293895,-4797791.60862223,4176758.393438159,-302568.05721526546,-4798289.5790239265,4177069.6830534763,-290581.4274393173,-4798770.624856849,4177366.118005519,-278593.7722081795,-4799234.7444372075,4177647.697253293,-266605.1338320001,-4799681.936140248,4177914.419807982,-254615.55462428782,-4800112.198400263,4178166.2847329364,-242625.0769017734,-4800525.5297105955,4178403.2911436907,-230633.7429842645,-4800921.9286236465,4178625.438207957,-218641.59519449653,-4801301.393750875,4178832.725145628,-206648.6758579969,-4801663.923762815,4179025.1512287785,-194655.02730293467,-4802009.51738905,4179202.715781683,-182660.69185997878,-4802338.1734182555,4179365.418180794,-170665.71186215564,-4802649.890698177,4179513.257854758,-163857.45801719945,-4794673.441034807,4188870.1864769547,-169859.27835214874,-4787687.45402561,4196562.647139618,-175860.4830266515,-4780684.517713442,4204240.161623132,-181861.05081526886,-4773664.657247381,4211902.702895104,-187860.96049572097,-4766627.897835282,4219550.243977604,-193860.19084898103,-4759574.26474366,4227182.757947276,-199858.72065933215,-4752503.783297607,4234800.217935412,-205856.52871445686,-4745416.478880677,4242402.597128052,-211853.59380549868,-4738312.376934807,4249989.8687660545,-217849.89472714523,-4731191.502960202,4257562.006145194,-223845.4102777062,-4724053.882515245,4265118.982616248,-229840.11925916714,-4716899.541216395,4272660.771585077,-235834.00047728652,-4709728.504738089,4280187.346512716,-241827.0327416613,-4702540.79881264,4287698.680915463,-247819.19486579997,-4695336.449230139,4295194.748364953,-253810.46566719338,-4688115.481838359,4302675.5224882625,-259800.8239673996,-4680877.922542653,4310140.976967967,-265790.2485921052,-4673623.797305851,4317591.085542257,-271778.718371208,-4666353.13214816,4325025.822004999,-277766.21213888814,-4659065.953147069,4332445.160205834,-283752.70873368287,-4651762.286437242,4339849.074050256,-289738.1869985562,-4644442.158210427,4347237.537499691,-295722.6257809786,-4637105.594715341,4354610.524571598]}, show:true}];
// update dates to sandcastle sim dates.
var startTime = viewer.clock.startTime;
var clockChange = viewer.clock.startTime;
// using this function instead of Cesium.JulianDate.addMinutes() because use of that function
// resulted in the startTime being added only. Weird. So I used this.
function addMinutes(date, minutes) {
return new Date(date.getTime() + minutes*60000);
}
// This allows the swathe dates to be current with the sim time of your sandcastle instance.
// The dates in vehicles before the below code come from sample data from the project I am working on.
vehicles[0].swathe.item1 = [];
for (var i = 0; i < 64; i++) {
var startDate = Cesium.JulianDate.toDate(startTime);
var newDate = addMinutes(startDate, i);
vehicles[0].swathe.item1.push(Cesium.JulianDate.fromDate(newDate));
}
// add the entity initially to the viewer's entities.
// it is important to note that most of this was pulled out of a project and therefore
// hardcoded in this sandcastle (such as the entity id)
viewer.entities.add({
id: '1a150f73-717b-4985-b2b8-f7409de89acd',
name: 'swathe',
polygon: {
hierarchy: new Cesium.CallbackProperty(callbackSwathe, false),
material: Cesium.Color.GREEN.withAlpha(0.5),
height: 0,
outline: true // height is required for outline to display
}
});
// add onTick event to handle scrubbing of timeline in sim
viewer.clock.onTick.addEventListener(
// Runs on each tick.
// update the callback to allow a non static return
function onSimulationClockChange() {
// run every 60 seconds of simulation
var currentTime = viewer.clock.currentTime;
// Go through all the vehicles
// in this case we only have one. In my project, I have several
for (var i = 0; i < vehicles.length; i++) {
if (vehicles[i].swathe !== null) {
if (Cesium.JulianDate.compare(currentTime, vehicles[i].swathe.item1[vehicles[i].swathe.item1.length - 1]) <= 0 && viewer.entities.getById(vehicles[i].id).polygon.hierarchy.isConstant) {
// this is to optimize the amount of return data. So this essential allows the callback to return
// changing values each time. In the call back, I set this to true so that I reduce the computation
// when possible
viewer.entities.getById(vehicles[i].id).polygon.hierarchy.setCallback(callbackSwathe, false);
clockChange = currentTime;
}
}
}
},
this
);
// callback to update the swathe to the current time and also update the callback to keep the final swathe shown if the current time is after the flight end time
function callbackSwathe() {
var currentTime = viewer.clock.currentTime;
var swathe = vehicles[0].swathe;
var fullSwathe;
var currentSwathe;
var timeDifference = Cesium.JulianDate.secondsDifference(currentTime, clockChange);
// run every 60 seconds of simulation or if the user has scrubbed back to an earlier time
if (timeDifference >= parseFloat(60) || timeDifference < 0) {
clockChange = currentTime;
// check if the flight is in progress, therefore requiring us to update the swathe
if (Cesium.JulianDate.compare(currentTime, swathe.item1[swathe.item1.length - 1]) <= 0) {
// get the vehicle's full swathe
fullSwathe = Cesium.Cartesian3.unpackArray(swathe.item2);
// get the date to show up to;
var dateToIndex = binarySearchSwatheTime(swathe.item1, currentTime); // just returns an index
// get the vehicle's to date swathe
currentSwathe = new Cesium.PolygonHierarchy(fullSwathe.slice(0, dateToIndex + 4).concat(fullSwathe.slice(fullSwathe.length - dateToIndex - 1)))
return currentSwathe;
} else { // update the callback so we can optimize computation time
if (!this.isConstant) {
this.setCallback(callbackSwathe, true);
fullSwathe = Cesium.Cartesian3.unpackArray(swathe.item2);
return new Cesium.PolygonHierarchy(fullSwathe);
}
}
}
}
// Custom binary search to find the proper swathe time
function binarySearchSwatheTime(items, match) {
var low = 0;
var high = items.length - 1;
while (low <= high) {
if (high - low < 2) {
return low;
} else {
var mid = parseInt((low + high) / 2);
// result = pos if currentTime (match) is after the time in the index
// result = neg if currentTime (match) is before the time in the index
// result = neg if currentTime (match) is equal to the time in the index
var result = Cesium.JulianDate.compare(match, items[mid]);
if (result < 0) {
high = mid - 1;
} else if (result > 0) {
low = mid + 1;
} else {
return mid;
}
}
}
return -1;
}