举荐:将 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 建模学习工作室翻译整顿,转载请表明出处!