类名 ModelTransformTool

# new ModelTransformTool(layeropt, callbackopt)

模型变换工具集

参数:

名称 类型 描述
layer Cesium.MapGISM3DSet | Cesium.Cesium3DTileset | undefined

模型对象, 详见《Cesium.MapGISM3DSet》 《Cesium.Cesium3DTileset》

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》

# deactivate()

取消激活可视化工具

# destroy()

销毁工具

# getEulerFromTransform(transformInLocal, modelopt, rotationPointopt)

根据模型的tansform矩阵获取欧拉角

参数:

名称 类型 描述
transformInLocal Cesium.Matrix4
model Cesium.MapGISM3DSet | Cesium.MapGISM3D | Cesium.Cesium3DTileset

模型对象; 详见《Cesium.MapGISM3DSet》 《Cesium.MapGISM3D》 《Cesium.Cesium3DTileset》

rotationPoint Cesium.Cartesian3

旋转中心;缺省时旋转中心默认为模型外包球中心

# initModelEditor(viewer)

初始化可视化模型变换工具

参数:

名称 类型 描述
viewer Viewer

Cesium的viewer对象

# reset()

重置模型位置到初始状态,只会重置通过构造函数传入的模型。

# 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]
})
构造函数
成员变量
方法
事件