跳到主要内容
版本:v10.0

获取文件加载状态


状态

  1. 开始
  2. 结束
  3. 异常

进度

模型交互


  M3D封装了各平台下的键盘、鼠标输入事件以及移动设备的触摸输入事件,并提供统一的消息处理机制供其它模块使用。同时,M3D还提供了虚拟方向键等操作界面,使用户可以通过点按虚拟方向键等功能实现漫游操作。通过统一接口,M3D可以实现相机的旋转、缩放,模型的拾取、拖放,漫游场景下的前进、后退等操作功能。

鼠标交互

  我们约定:

  • 按下左键同时移动鼠标为旋转模型
  • 按下鼠标滚轮同时移动鼠标为移动模型
  • 滑动鼠标滚轮为缩放模型
  • 在相应模型零件位置单击鼠标左键拾取/取消拾取模型
  • 向前滑动鼠标滚轮为漫游状态下前进
  • 向后滑动鼠标滚轮为漫游状态下后退

  为实现上述操作,视口对象所属的canvas对象需要添加鼠标的按下、移动、抬起和中键的监听事件,同时还需要视口对象在相应的事件中来实现对应操作。在事件中开发者也可以增加自己的处理逻辑。示例代码如下:

window.load{
......
//绑定鼠标按下事件
renderCanvas.addEventListener("mousedown", (e) => {
var mep = new M3D.MouseEventArgs(M3D.InputEventType.INPUTEVENT_MOUSE_DOWN, e);
//Handle your own logic
viewport.input.mouseDown(ep);
});
//绑定鼠标移动事件
renderCanvas.addEventListener("mousemove", (e) => {
var mep = new M3D.MouseEventArgs(M3D.InputEventType.INPUTEVENT_MOUSE_MOVE, e);
viewport.input.mouseMove(ep);
});
// 绑定鼠标抬起事件
renderCanvas.addEventListener("mouseup", (e) => {
var mep = new M3D.MouseEventArgs(M3D.InputEventType.INPUTEVENT_MOUSE_UP, e);
viewport.input.mouseUp(ep);
});
// 绑定鼠标中键事件
renderCanvas.addEventListener("mousewheel", (e) => {
var mep = new M3D.MouseEventArgs(M3D.InputEventType.INPUTEVENT_MOUSE_DOWN, e);
viewport.input. mouseMove(ep);
});
}

键盘交互

  我们约定:

  • 上键(W):操作模型向上移动
  • 下键(S):操作模型向下移动
  • 左键(A):操作模型向左移动
  • 右键(D):操作模型向右移动

  为实现上述操作,视口对象所属的canvas对象需要对应按键的监听事件,同时还需要视口对象在相应的事件中来实现对应操作。在事件中开发者也可以增加自己的处理逻辑。示例代码如下:

window.load{
......
//绑定鼠标按下事件
renderCanvas.addEventListener("mousedown", (e) => {
var mep = new M3D.MouseEventArgs(M3D.InputEventType.INPUTEVENT_MOUSE_DOWN, e);
//Handle your own logic
viewport.input.mouseDown(ep);
});
//绑定鼠标移动事件
renderCanvas.addEventListener("mousemove", (e) => {
var mep = new M3D.MouseEventArgs(M3D.InputEventType.INPUTEVENT_MOUSE_MOVE, e);
viewport.input.mouseMove(ep);
});
// 绑定鼠标抬起事件
renderCanvas.addEventListener("mouseup", (e) => {
var mep = new M3D.MouseEventArgs(M3D.InputEventType.INPUTEVENT_MOUSE_UP, e);
viewport.input.mouseUp(ep);
});
// 绑定鼠标中键事件
renderCanvas.addEventListener("mousewheel", (e) => {
var mep = new M3D.MouseEventArgs(M3D.InputEventType.INPUTEVENT_MOUSE_DOWN, e);
viewport.input. mouseMove(ep);
});
}

触屏交互

拾取模型

移动模型

移动

旋转

缩放

变形

触屏交互

查看模型装配结构


  查看模型内部子件之间的装配关系,我们可以使用getSubModels()接口来组织装配数据。接口说明可参照[装配接口]

多角度观察模型


  不同应用的三维场景需要使用不同的观察方式,比如机械、工业设计领域常常采用正常模式, 建筑BIM行业往往需要进入到模型内部进行细致观察,则需要采用更贴近真实场景的漫游模式。

正常模式

  在M3D中提供了自由观察、动态观察、约束观察三种观察方式,通过调用[Viewport]

对象的setOrbitMode(int mode)接口来设置采用哪种模式进行观察。

  • 自由观察:允许沿任意方向进行观察
  • 动态观察:限制正方向观察角度,观察范围为-90°到+90°
  • 约束观察:只能绕屏幕垂直方向(也就是相机向上方向)旋转

漫游模式

  在漫游模式下距离相机近的模型大,距离相机远的模型小。跟我们在日常生活中,眼睛看到的场景是一致的。

  在M3D内部已做好漫游相关的计算,开发者仅需要调用setWalkThroughState()接口即可。还可通过设置漫游的相关接口来调整漫游的视角、相机距离、移动速度等。

绘制模式

M3D支持多种绘制模式,满足开发者不同的场景展示需求。绘制模式包括实体实体线框插画半透明XRay射线等模式。开发者可通过setDrawMode(int ModeType)接口来进行设置。

this.scene.getViewport().setDrawMode();

渲染特效

M3D支持多种渲染特效,如 阴影地面地面网格环境光遮蔽珠宝

视图


PMI


批注


测量


动画


爆炸


渲染特效