# new ModelTransformTool(layeropt, callbackopt)
模型变换工具集
参数:
名称 | 类型 | 描述 |
---|---|---|
layer |
Cesium.MapGISM3DSet | Cesium.Cesium3DTileset | undefined | |
callback |
function | 模型编辑工具编辑后的回调函数 模型对象为空时,需要在调用具体的变换接口时指定要变换的模型。 推荐在调用变换接口时指定模型。 |
- See:
示例
// ES5引入方式
const { ModelTransformTool } = zondy.cesium
// ES6引入方式
import { ModelTransformTool } from "@mapgis/webclient-cesium-plugin"
import { Cesium3DTilesCacheLayer } from "@mapgis/webclient-common"
const cesium3DTilesCacheLayer = new Cesium3DTilesCacheLayer({
url: 'http://webclient.smaryun.com:8200/3DData/ModelCache/3DTileset/1.0/dayantaresult/tileset.json'
})
map.add(cesium3DTilesCacheLayer)
// 图层加载完毕
Cesium3DTilesCacheLayer.on('layerview-created', function (result) {
let layer = sceneView.getInnerLayer(result.layer)
//初始化js编辑工具
const transformEditor = new ModelTransformTool(layer)
//初始化图形化编辑工具
transformEditor.initModelEditor(viewer)
})
方法
# activeRotationEditor(options)
可视化旋转工具
参数:
名称 | 类型 | 描述 |
---|---|---|
options |
Object | |
model |
Cesium.MapGISM3DSet | Cesium.MapGISM3D | Cesium.Cesium3DTileset | 要控制的模型 详见《Cesium.MapGISM3DSet》 《Cesium.MapGISM3D》 《Cesium.Cesium3DTileset》 |
# activeScaleEditor(optionsopt)
可视化缩放工具
参数:
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
options |
Object | {} | 工具参数 |
singleScale |
boolean | false | 是否单轴缩放,true:单轴缩放,false:三轴同时缩放 |
model |
Cesium.MapGISM3DSet | Cesium.MapGISM3D | Cesium.Cesium3DTileset | 要控制的模型 详见《Cesium.MapGISM3DSet》 《Cesium.MapGISM3D》 《Cesium.Cesium3DTileset》 |
# activeTranslationEditor(options)
可视化平移工具
参数:
名称 | 类型 | 描述 |
---|---|---|
options |
Object | |
model |
Cesium.MapGISM3DSet | Cesium.MapGISM3D | Cesium.Cesium3DTileset | 要控制的模型 详见《Cesium.MapGISM3DSet》 《Cesium.MapGISM3D》 《Cesium.Cesium3DTileset》 |
# getEulerFromTransform(transformInLocal, modelopt, rotationPointopt)
根据模型的tansform矩阵获取欧拉角
参数:
名称 | 类型 | 描述 |
---|---|---|
transformInLocal |
Cesium.Matrix4 | |
model |
Cesium.MapGISM3DSet | Cesium.MapGISM3D | Cesium.Cesium3DTileset | 模型对象; 详见《Cesium.MapGISM3DSet》 《Cesium.MapGISM3D》 《Cesium.Cesium3DTileset》 |
rotationPoint |
Cesium.Cartesian3 | 旋转中心;缺省时旋转中心默认为模型外包球中心 |
# rotateLocal(options)
控制模型在本地空间下做旋转变换
参数:
名称 | 类型 | 描述 |
---|---|---|
options |
Object | |
rotation |
Cesium.Cartesian3 | Cesium.HeadingPitchRoll | 旋转角度; HeadingPitchRoll类型为弧度制,Cartesian3类型为角度制。 |
model |
Cesium.MapGISM3DSet | Cesium.MapGISM3D | Cesium.Cesium3DTileset | 要被旋转的模型; 置空时将从构造函数的layer中取M3D模型。不推荐置空。 详见《Cesium.MapGISM3DSet》 《Cesium.MapGISM3D》 《Cesium.Cesium3DTileset》 |
rotationPoint |
Cesium.Cartesian3 | 旋转中心; 缺省时绕模型自身的原点旋转;旋转的是SceneLayer图层时,SceneLayer下的所有图层绕第一个MapGISM3DSet的boundingSphere.center旋转。 |
示例
var modelTransformTool = new Cesium.ModelTransformTool();
// 从SceneLayer图层中获取MapGISM3DSet
var model = layer._m3dLayerMap.values()[0];
modelTransformTool.initModelEditor(viewer);
// 通过角度控制
modelTransformTool.rotateLocal({
// 绕Z轴旋转90度
rotation: new Cesium.Cartesian3(0, 0, 90),
model: model,
rotationPoint: model.boundingSphere.center
})
// 通过headingpitchroll控制
modelTransformTool.rotateLocal({
// 绕Z轴旋转90度
rotation: new Cesium.HeadingPitchRoll(Cesium.Math.toRadians(90), 0, 0),
model: model,
rotationPoint: model.boundingSphere.center
})
# setLocalScala(options)
设置模型缩放
参数:
名称 | 类型 | 描述 |
---|---|---|
options |
Object | |
size |
Cesium.Cartesian3 | 缩放矢量 |
model |
Cesium.MapGISM3DSet | Cesium.MapGISM3D | Cesium.Cesium3DTileset | 要被平移的模型, 置空时将从构造函数的layer中取M3D模型。不推荐置空。 详见《Cesium.MapGISM3DSet》 《Cesium.MapGISM3D》 《Cesium.Cesium3DTileset》 |
示例
var modelTransformTool = new Cesium.ModelTransformTool();
modelTransformTool.initModelEditor(viewer);
modelTransformTool.setLocalScala({
size: new Cesium.Cartesian3(2, 2, 2),
// 从SceneLayer图层中获取MapGISM3DSet
model: layer._m3dLayerMap.values()[0]
})
# setPositionWorld(options)
设置M3D模型在笛卡尔世界坐标系下位置
参数:
名称 | 类型 | 描述 |
---|---|---|
options |
Object | |
position |
Cesium.Cartesian3 | 位置 笛卡尔坐标系 |
model |
Cesium.MapGISM3DSet | Cesium.MapGISM3D | Cesium.Cesium3DTileset | 要被设置的模型, 置空时将从构造函数的layer中取M3D模型。不推荐置空。 详见《Cesium.MapGISM3DSet》 《Cesium.MapGISM3D》 《Cesium.Cesium3DTileset》 |
示例
var modelTransformTool = new Cesium.ModelTransformTool();
modelTransformTool.initModelEditor(viewer);
modelTransformTool.setPositionWorld({
position: Cesium.Cartesian3.fromDegrees(113.0750, 30, 100),
// 从SceneLayer图层中获取MapGISM3DSet
model: layer._m3dLayerMap.values()[0]
})
# setRotation(degreeopt, axisopt)
模型旋转
参数:
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
degree |
Number | 0 | 旋转角度,单位度 |
axis |
String | 'Z' | 旋转轴,X:X轴,Y:Y轴,Z:Z轴 |
# setScala(xopt, yopt, zopt)
模型缩放
参数:
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
x |
Number | 1 | x轴放大 |
y |
Number | 1 | y轴放大 |
z |
Number | 1 | z轴放大 |
- Deprecated:
# setTranslation(longitudeopt, latitudeopt, heightopt)
模型平移
参数:
名称 | 类型 | 默认值 | 描述 |
---|---|---|---|
longitude |
Number | 0 | 经度 |
latitude |
Number | 0 | 纬度 |
height |
Number | 0 | 高度 |
# translateWorld(options)
设置M3D模型在笛卡尔世界坐标系下平移
参数:
名称 | 类型 | 描述 |
---|---|---|
options |
Object | |
vector |
Cesium.Cartesian3 | 平移矢量 笛卡尔坐标系 |
model |
Cesium.MapGISM3DSet | Cesium.MapGISM3D | Cesium.Cesium3DTileset | 要被平移的模型, 置空时将从构造函数的layer中取M3D模型。不推荐置空。 详见《Cesium.MapGISM3DSet》 《Cesium.MapGISM3D》 《Cesium.Cesium3DTileset》 |
示例
var modelTransformTool = new Cesium.ModelTransformTool();
modelTransformTool.initModelEditor(viewer);
modelTransformTool.translateWorld({
vector: new Cesium.Cartesian3(5000, 0, 1000),
// 从SceneLayer图层中获取MapGISM3DSet
model: layer._m3dLayerMap.values()[0]
})