需要用Cesuim做一个斜圆锥的可视化;新上手,在网上查了些资料。 drawredCone(){
let redCone = that.currentmap.currentviewer.entities.add({
name : 'white cone',
position: Cesium.Cartesian3.fromDegrees(108.93, 34.27, 1000000),
cylinder : {//圆锥
HeightReference: Cesium.HeightReference.CLAMP_TO_GROUND,
length : 2000000,
topRadius : 0.0,
bottomRadius : 1000000 / 2,
material: Cesium.Color.WHITE.withAlpha(.3),
outline: false,
numberOfVerticalLines: 0,
outlineColor: Cesium.Color.WHITE.withAlpha(.3)
}
});
画正圆锥,但是斜圆锥不知怎么搞。求赐教!
本文由 superfog 创作,采用 知识共享署名 3.0 中国大陆许可协议 进行许可。 可自由转载、引用,但需署名作者且注明文章出处。
这个viewer.entities
应该不能满足,可以使用scene.primitives
。只要给位置矩阵设置旋转就行。
示例地址(需要npm run build
编译源码后可见):
http://localhost:8080/Apps/Sandcastle/index.html?src=development/Cylinder.html&label=Development
我简单修改了官方源码,只加了一行代码:
//在 41 行后加上
Cesium.Matrix4.multiplyByMatrix3(modelMatrix,
Cesium.Matrix3.fromRotationY(Math.PI/4),//绕Y轴旋转 π/4
modelMatrix);
https://sogrey.top/Cesium-start-Example/examples/model/development_Cylinder.html
最新的文档上看到 entity 可以设置方向了,https://cesium.com/learn/cesiumjs/ref-doc/Entity.html#.ConstructorOptions ,注意 orientation
<可选> 指定实体方向的属性。
官网文有提:
https://cesium.com/learn/cesiumjs-learn/cesiumjs-creating-entities/#3d-models
默认情况下,模型是直立面向东的。通过Quaternion 为Entity.orientation属性指定 a来控制模型的方向。这控制了模型的航向、俯仰和滚动。
var viewer = new Cesium.Viewer('cesiumContainer');
var position = Cesium.Cartesian3.fromDegrees(-123.0744619, 44.0503706);
var heading = Cesium.Math.toRadians(45.0);
var pitch = Cesium.Math.toRadians(15.0);
var roll = Cesium.Math.toRadians(0.0);
var orientation = Cesium.Transforms.headingPitchRollQuaternion(position, new Cesium.HeadingPitchRoll(heading, pitch, roll));
var entity = viewer.entities.add({
position : position,
orientation : orientation,
model : {
uri : '../../../../Apps/SampleData/models/GroundVehicle/GroundVehicle.glb'
}
});
viewer.trackedEntity = entity;