Class: ModelTransformTool

ModelTransformTool

new ModelTransformTool(layer, callback)

engineExtensions/tools/ModelTransformTool.js, line 31

模型变换工具集

Name Type Description
layer Cesium.MapGISM3DSet | Cesium.Cesium3DTileset | undefined 可选

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

callback function 可选

模型编辑工具编辑后的回调函数 模型对象为空时,需要在调用具体的变换接口时指定要变换的模型。 推荐在调用变换接口时指定模型。

See:
Example
// 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://10.10.130.72: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)
})

Methods

activeRotationEditor(options)

engineExtensions/tools/ModelTransformTool.js, line 1041

可视化旋转工具

Name Type Description
options Object
Name Type Description
model Cesium.MapGISM3DSet | Cesium.MapGISM3D | Cesium.Cesium3DTileset 可选

要控制的模型 详见《Cesium.MapGISM3DSet》 《Cesium.MapGISM3D》 《Cesium.Cesium3DTileset》

activeScaleEditor(options)

engineExtensions/tools/ModelTransformTool.js, line 1095

可视化缩放工具

Name Type Default Description
options Object {} 可选

工具参数

Name Type Default Description
singleScale boolean false 可选

是否单轴缩放,true:单轴缩放,false:三轴同时缩放

model Cesium.MapGISM3DSet | Cesium.MapGISM3D | Cesium.Cesium3DTileset 可选

要控制的模型 详见《Cesium.MapGISM3DSet》 《Cesium.MapGISM3D》 《Cesium.Cesium3DTileset》

activeTranslationEditor(options)

engineExtensions/tools/ModelTransformTool.js, line 1067

可视化平移工具

Name Type Description
options Object
Name Type Description
model Cesium.MapGISM3DSet | Cesium.MapGISM3D | Cesium.Cesium3DTileset 可选

要控制的模型 详见《Cesium.MapGISM3DSet》 《Cesium.MapGISM3D》 《Cesium.Cesium3DTileset》

deactivate()

engineExtensions/tools/ModelTransformTool.js, line 1119

取消激活可视化工具

destroy()

engineExtensions/tools/ModelTransformTool.js, line 1129

销毁工具

getEulerFromTransform(transformInLocal, model, rotationPoint)

engineExtensions/tools/ModelTransformTool.js, line 463

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

Name Type Description
transformInLocal Cesium.Matrix4
model Cesium.MapGISM3DSet | Cesium.MapGISM3D | Cesium.Cesium3DTileset 可选

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

rotationPoint Cesium.Cartesian3 可选

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

initModelEditor(viewer)

engineExtensions/tools/ModelTransformTool.js, line 900

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

Name Type Description
viewer Viewer

Cesium的viewer对象

reset()

engineExtensions/tools/ModelTransformTool.js, line 1146

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

rotateLocal(options)

engineExtensions/tools/ModelTransformTool.js, line 355

控制模型在本地空间下做旋转变换(绕指定的旋转中心旋转)

Name Type Description
options Object
Name Type Description
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旋转。

Example
var modelTransformTool = new zondy.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)

engineExtensions/tools/ModelTransformTool.js, line 890

设置模型缩放(缩放中心点为模型局部坐标系的原点)。计划废弃,请使用 setLocalScale 代替

Name Type Description
options Object
Name Type Description
size Cesium.Cartesian3 可选

缩放矢量

model Cesium.MapGISM3DSet | Cesium.MapGISM3D | Cesium.Cesium3DTileset 可选

要被平移的模型, 置空时将从构造函数的layer中取M3D模型。不推荐置空。 详见《Cesium.MapGISM3DSet》 《Cesium.MapGISM3D》 《Cesium.Cesium3DTileset》

Example
var modelTransformTool = new zondy.cesium.ModelTransformTool();
modelTransformTool.initModelEditor(viewer);
modelTransformTool.setLocalScala({
    size: new Cesium.Cartesian3(2, 2, 2),
    // 从SceneLayer图层中获取MapGISM3DSet
    model: layer._m3dLayerMap.values()[0]
})

setLocalScale(options)

engineExtensions/tools/ModelTransformTool.js, line 843

设置模型缩放(缩放中心点为模型局部坐标系的原点)

Name Type Description
options Object
Name Type Description
size Cesium.Cartesian3 可选

缩放矢量

model Cesium.MapGISM3DSet | Cesium.MapGISM3D | Cesium.Cesium3DTileset 可选

要被平移的模型, 置空时将从构造函数的layer中取M3D模型。不推荐置空。 详见《Cesium.MapGISM3DSet》 《Cesium.MapGISM3D》 《Cesium.Cesium3DTileset》

Example
var modelTransformTool = new zondy.cesium.ModelTransformTool();
modelTransformTool.initModelEditor(viewer);
modelTransformTool.setLocalScale({
    size: new Cesium.Cartesian3(2, 2, 2),
    // 从SceneLayer图层中获取MapGISM3DSet
    model: layer._m3dLayerMap.values()[0]
})

setPositionWorld(options)

engineExtensions/tools/ModelTransformTool.js, line 576

设置M3D模型在笛卡尔世界坐标系下位置(将模型外包球中心平移到指定的位置)

Name Type Description
options Object
Name Type Description
position Cesium.Cartesian3 可选

位置 笛卡尔坐标系

model Cesium.MapGISM3DSet | Cesium.MapGISM3D | Cesium.Cesium3DTileset 可选

要被设置的模型, 置空时将从构造函数的layer中取M3D模型。不推荐置空。 详见《Cesium.MapGISM3DSet》 《Cesium.MapGISM3D》 《Cesium.Cesium3DTileset》

Example
var modelTransformTool = new zondy.cesium.ModelTransformTool();
modelTransformTool.initModelEditor(viewer);
modelTransformTool.setPositionWorld({
    position: Cesium.Cartesian3.fromDegrees(113.0750, 30, 100),
    // 从SceneLayer图层中获取MapGISM3DSet
    model: layer._m3dLayerMap.values()[0]
})

setRotation(degree, axis)

engineExtensions/tools/ModelTransformTool.js, line 175

模型旋转(绕模型外包球中心旋转)

Name Type Default Description
degree Number 0 可选

旋转角度,单位度

axis String 'Z' 可选

旋转轴,X:X轴,Y:Y轴,Z:Z轴

setScala(x, y, z)

engineExtensions/tools/ModelTransformTool.js, line 820

模型缩放(缩放中心点为模型局部坐标系的原点)。计划废弃,请使用 setScale 代替。

Name Type Default Description
x Number 1 可选

x轴放大

y Number 1 可选

y轴放大

z Number 1 可选

z轴放大

Deprecated

setScale(x, y, z)

engineExtensions/tools/ModelTransformTool.js, line 769

模型缩放(缩放中心点为模型局部坐标系的原点)

Name Type Default Description
x Number 1 可选

x轴放大

y Number 1 可选

y轴放大

z Number 1 可选

z轴放大

Deprecated

setTranslation(longitude, latitude, height)

engineExtensions/tools/ModelTransformTool.js, line 263

将模型局部坐标系原点平移到指定的位置

Name Type Default Description
longitude Number 0 可选

经度

latitude Number 0 可选

纬度

height Number 0 可选

高度

translateWorld(options)

engineExtensions/tools/ModelTransformTool.js, line 644

设置M3D模型在笛卡尔世界坐标系下平移(将模型从当前位置平移指定的笛卡尔坐标距离)

Name Type Description
options Object
Name Type Description
vector Cesium.Cartesian3 可选

平移矢量 笛卡尔坐标系

model Cesium.MapGISM3DSet | Cesium.MapGISM3D | Cesium.Cesium3DTileset 可选

要被平移的模型, 置空时将从构造函数的layer中取M3D模型。不推荐置空。 详见《Cesium.MapGISM3DSet》 《Cesium.MapGISM3D》 《Cesium.Cesium3DTileset》

Example
var modelTransformTool = new zondy.cesium.ModelTransformTool();
modelTransformTool.initModelEditor(viewer);
modelTransformTool.translateWorld({
    vector: new Cesium.Cartesian3(5000, 0, 1000),
    // 从SceneLayer图层中获取MapGISM3DSet
    model: layer._m3dLayerMap.values()[0]
})