乐趣区

关于3d:NSDT编辑器Viewer孪生世界

举荐:将 NSDT 场景编辑器 退出你的 3D 开发工具链
Viewer 是形容孪生世界的顶层对象,提供场景绘制和交互的画布。

场景如下:

构造函数
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) // 打印鼠标信息
});
3D 建模学习工作室翻译整顿,转载请表明出处!

退出移动版