在webgl平台开发3d可视化场景应用时,总会有一些很常见的问题,有的十分简单就能解决,有的想破脑袋也不知道怎么搞定,尤其是当你在使用一个只有部分人在使用的技术,能在网上查到的资料也没那么多,有时候对于熟练者来说可能是基础的知识,对于初学者来说却摸不着头脑,甚至有时候连描述都无法描述出来,所以很多时候,大神们写的博客或随笔就能在关键时刻助我们一臂之力。在这里,我们就讲讲webgl平台ThingJS中Picker的作用。
Picker是thingjs中为拾取制作的一个类,主要是用于拾取物体,同时也有框选拾取的功能,让使用者在多选模型时候更为便捷,同时也更好操作。
使用app.picker.objects我们可以获取当前帧系统默认拾取物体集合(执行物体过滤处理后) - var sel = app.picker.objects;
复制代码
使用pickedResultFunc 设置拾取结果回调函数,返回的对象即为拾取对象; - app.picker.pickedResultFunc = function (object) {
- return object;
- }
复制代码
使用previousObjects 获取上一帧拾取物体集合(执行物体过滤处理后) - var sel = app.picker.previousObjects;
复制代码
使用results 获取当前帧原生拾取物体集合(忽略物体过滤处理) - var sel = app.picker.results;
复制代码
使用endAreaPickin()结束框选
使用startAreaPickin()开始框选 其中 Name | Type | Description |
---|
params | Object | 参数列表 PropertiesName | Type | Description |
---|
x | Number | 屏幕 x 坐标 | y | Number | 屏幕 y 坐标 | realTimePicking? | Boolean | 是否实时框选(速度较慢) | drawRegion? | Boolean | 是否绘制框选区域 |
|
- /**
- * 说明: 拾取物体
- */
-
- var app = new THING.App({
- url: 'https://www.thingjs.com/static/models/storehouse'
- });
-
- app.on('load', function () {
- // 鼠标拾取物体显示边框
- app.on(THING.EventType.MouseEnter, '.Thing', function(ev) {
- ev.object.style.outlineColor = '#FF0000';
- });
- // 鼠标离开物体边框取消
- app.on(THING.EventType.MouseLeave, '.Thing', function(ev) {
- ev.object.style.outlineColor = null;
- });
-
- // 每一帧判断拾取的物体是否发生变化
- app.on('update', function () {
- if (app.picker.isChanged()) {
- console.clear();
- // 打印当前被pick的物体
- if (app.picker.objects[0]) {
- console.log('当前拾取的物体 ' + app.picker.objects[0].name);
- }
- // 打印之前被pick的物体
- if (app.picker.previousObjects[0]) {
- console.log('之前拾取的物体 ' + app.picker.previousObjects[0].name);
- }
- }
- });
- });
复制代码
在webgl可视化平台ThingJS中有着十分详细的官方文档,其中有关于如何使用ThingJS的API,也有着如何开始搭建一个3D可视化有用的流程,同时在ThingJS的资源中心中也有着视频教程,从模型制作到webgl应用开发,可以说是“一条龙服务”。ThingJS,开创属于你的物联网可视化时代! |