Bootstrap

Cesium 更新primitive矩阵,使primitive移动和旋转,不用每次删除再创建

let viewer = new Cesium.Viewer("cesiumContainer");
let scene = viewer.scene;

//旋转角度
let hpr = new Cesium.HeadingPitchRoll(0, 0, 0);
//位置点
let point = new Cesium.Cartesian3(110.0744619,30.0503706,100);
let origin = Cesium.Cartesian3.fromDegrees(point.x,point.y,point.z);
//初始的矩阵
const modelMatrix = Cesium.Transforms.headingPitchRollToFixedFrame(origin,hpr);

// 创建Geometry对象
var geometry = new Cesium.BoxGeometry.fromDimensions({
  dimensions: new Cesium.Cartesian3(50000.0, 50000.0, 50000.0)
});

// 创建Appearance对象
var appearance = new Cesium.MaterialAppearance({
  material: Cesium.Material.fromType('Color', {
	color: Cesium.Color.RED
  })
});
let instance = new Cesium.GeometryInstance({
  geometry: geometry
})

// 创建Primitive对象
var primitive = new Cesium.Primitive({
  geometryInstances: instance,
  appearance: appearance,
  modelMatrix: modelMatrix
});

// 添加Primitive对象到场景中
primitive = scene.primitives.add(primitive);

let rotateZ = 0;
setInterval(function(){
  rotateZ += 0.01;
  point.x += 0.01;
  origin = Cesium.Cartesian3.fromDegrees(point.x,point.y,point.z);
  hpr = new Cesium.HeadingPitchRoll(rotateZ, 0, 0);
  let temp = Cesium.Transforms.headingPitchRollToFixedFrame(origin,hpr);
  primitive.modelMatrix = temp;
},10);

;