Viewer-孪生世界
  lG7RE7vNF4mc 2023年11月02日 69 0

Viewer-孪生世界_Group



推荐:将 NSDT场景编辑器 加入你的3D开发工具链

​Viewer​​ 是描述孪生世界的顶层对象,提供场景绘制和交互的画布。

场景如下:

Viewer-孪生世界_图层_02


构造函数

Viewer(element)

在参数​​element​​指定的 DOM 元素中创建孪生世界场景。

示例代码:

//import { Viewer } from 'nsdt@ted'                    //引入Viewer类

const viewer = new Viewer('container') //在id为container的元素内创建孪生世界
const sceneId = "63a13d2d39c45778ba1bedd0"; //要加载的场景的id
viewer.loadScene(sceneId,() => { //加载场景数据
console.log('completed!')
})

属性

.canvas: HTMLCanvasElement

当前场景 canvas 容器。

.scene: THREE.Scene

孪生世界的 THREE.JS scene 场景。

.camera: Camera

孪生世界中的摄像机。

.objectGroup: THREE.Object3D[]

孪生世界中所有可拾取的 Object3d 对象。

方法

.addLayer(layer: Layer): Void

在孪生世界中创建数据图层。

示例代码:

//import DT from 'nsdt@ted'
const modelLayer = new DT.layer.ModelLayer("models"); //创建一个图层
viewer.addLayer(modelLayer);

.removeLayer(layer: Layer): Void

在孪生世界中删除数据图层。

.hasLayer(layer: Layer): Boolean

查询图层是否存在。

.getLayer(id: string): Layer | undefined

通过图层 id 获取图层。

.getLayers(): Layer[]

获取全部图层。

.getTwins(id: String): Overlay

通过挛生体 id 获取挛生体。

.getWorldTree(): JSON

获取世界大纲树。

参数

说明

children

图层组中的挛生体

id

图层组 id

label

图层组名字

type

图层组类型

visible

是否显示

CHILDREN参数

说明

id

挛生体 id

layerId

图层组 id

label

挛生体名字

type

挛生体类型

visible

是否显示

.pickupCoord(event:MouseEvent): THREE.Vector3 | null

拾取与平面交点的坐标。

.pickup(event:MouseEvent): Object | null

拾取孪生世界 包含在 objectGroup 中的模型。

.setActiveOverlays(overlay: Overlay[] | string[]): Void | null

传入挛生体实例对象或挛生体id,批量设置挛生体的包围框。

.clearActive(): Void | null

清空所有挛生体的包围框。

.destroy(): Void

销毁场景。

.statistics(): { element: String, vertices: String, triangles: String }

统计场景中的 mesh 数量、顶点数和面数。

.loadScene(sceneId: string, cb: Function) Void

通过场景 id 加载孪生世界场景。

viewer.loadScene(sceneId,() => {
console.log('completed!')
})

.getRoamingList(sceneId: string, cb: Function) Void

通过场景 id 获取孪生世界的漫游列表。

viewer.getRoamingList(sceneId, (res) => {
const roamData = res[0].points
const roaming = DT.RoamingPath.createRoamingPath(roamData, () => {
console.log("complete");
});
roaming.start();
});

.setObjectGroup() THREE.Object3D[]

重新设置 objectGroup 数组,筛选出可拾取的 Object3d 对象。

.on(event: String, handler: Function, context?:Any): Void 绑定孪生世界事件的监听处理器。

.off(event: String, handler: Function): Void

解绑孪生世界事件的监听处理器。

.trigger(event: String): Void

触发绑定的孪生世界事件。

事件

目前支持的事件如下:

事件

说明

DT.MouseEventType.CLICK

当鼠标点击场景时触发

DT.MouseEventType.DB_CLICK

当鼠标双击场景时触发

DT.MouseEventType.MOUSE_DOWN

当鼠标摁下时触发

DT.MouseEventType.MOUSE_UP

当鼠标抬起时触发

DT.MouseEventType.MOUSE_MOVE

当鼠标移动时触发

DT.MouseEventType.RIGHT_CLICK

当鼠标右击时触发

示例代码:

//监听鼠标单击事件
viewer.mouseEvent.on(DT.MouseEventType.CLICK, (e) => {
console.log(e) //打印鼠标信息
});

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  4yu2JdefgeRW   2023年11月02日   64   0   0 Groupphp
lG7RE7vNF4mc