资讯专栏INFORMATION COLUMN

基于WebGL架构的3D可视化平台ThingJS—让粮仓“智慧”升级

aaron / 2459人阅读

摘要:随着信息化技术发展,全国各地开始智慧粮仓的建设,我们可以通过一个视频看一下使用可视化平台做的可视应用,可视一体化,让粮仓智慧升级。构建粮仓内粮情的监控预警诊断分析一体化的可视化平台。

首先我们先了解一下基于WebGL架构的3D可视化平台——ThingJS是什么?

ThingJS是优锘科技开发的一套面向物联网应用的在线3D可视化应用开发及运营PaaS平台,以“ ThingJS云视PaaS服务”形式面向广大物联网企业提供全生命周期在线3D可视化服务。

ThingJS平台包括可视能力层和功能应用层。

可视能力层由ThingJS云视PaaS服务、ThingJS开发平台和ThingJS配套组件组成。ThingJS云视PaaS服务提供便捷的应用部署,Thing JS开发平台和配套组件让3D开发变得简单高效,让3D可视化交互能力在多种物联网场景中得以应用。

可以从下图中了解ThingJS和传统3D开发的区别

下面我们来聊一聊什么是智慧粮仓

正所谓“国以民为本,民以食为天”。粮食既是关系国计民生和国家经济安全的重要战略物资,也是人民群众最基本的生活资料。其中粮仓是粮食建设的根基,对保障粮食安全尤为重要。随着信息化技术发展,全国各地开始智慧粮仓的建设,我们可以通过一个视频看一下使用ThingJS3D可视化平台做的3D可视应用,ThingJS—可视一体化,让粮仓“智慧”升级。

视频查看:https://v.qq.com/x/page/m0767...

慧农业3D可视化视频介绍:

"数字粮仓3D可视化系统“是ThingJS智慧粮仓行业应用系列产品之一,实现了粮库的库区、仓库、设备、的逐级可视。以粮仓监控为重点,集成储备粮管理、粮食通风、粮情监测控制、熏蒸监测等系统,实现粮仓、粮情、动环、仓容、能耗、告警、出入库等信息:

可视:粮仓的园区、仓区、仓库、设备的3D可视;

可查:3D场景内查看粮情、动环、仓容、能耗、视频监控、出入库等信息;

可控:3D场景内控制仓门、仓窗、通风口、风机、空调等设备设施的开关状态;

可防:系统通过集成数据,提前预知粮食霉菌、虫害的产生与生长趋势,提早制定防治措施,实现粮食绿色、生态储藏。

构建粮仓内粮情的监控、预警、诊断、分析一体化的3D可视化平台。

我们通过ThingJS3D可视化平台做了个粮仓3D可视化Demo,包含了粮仓的库区,工厂,宿舍等逐级可视,同时也包含了粮仓的温度、空间剩余等功能的显示。点击查看DEMO即可预览。

我们在文末附上完整的代码,大家可以直接在ThingJS3D可视化平台体验。

查看DEMO:http://www.thingjs.com/guide/...

粮仓的全景预览

宿舍区域

粮仓区域

粮仓信息

完整代码

//加载场景代码
var app = new THING.App({
    // 场景地址
    "url": "http://www.thingjs.com/./uploads/wechat/S2Vyd2lu/scene/CB20190228115320",
    //背景设置
    "skyBox": "BlueSky"
});

var toolbar2 = new THING.widget.Panel({ width: "250px", captionPos: "hover" });
toolbar2.position = [10, 10];

// 数据对象
var dataObj = {
    area01: false,
    area02: false,
    area03: false,
    overall: true,

}

THING.Utils.dynamicLoad(["lib/iconfont.js"], function () {

    var button1 = toolbar2.addImageBoolean(dataObj, "area01").caption("宿舍区域").url("#momoda_lc-icontubiao22");
    var button2 = toolbar2.addImageBoolean(dataObj, "area02").caption("工厂区域").url("#momoda_lc-icontubiao10");
    var button3 = toolbar2.addImageBoolean(dataObj, "area03").caption("粮仓区域").url("#momoda_lc-icontubiao21");
    var button4 = toolbar2.addImageBoolean(dataObj, "overall").caption("全景预览").url("#momoda_lc-icontubiao28");

    button1.on("change", function (ev) {
        dataObj.area02 = false;
        dataObj.area03 = false;
        dataObj.overall = false;
        app.camera.flyTo({
            "position": [-22.356943810261143, 13.20176112267712, 28.19482648304762],
            "target": [-53.24507055455286, 0.6162378602394785, 6.3743932170050375],
            "time": 2000,
            "complete": function () {
                app.camera.inputEnabled = false;
            }
        });
    });

    button2.on("change", function (ev) {
        dataObj.area01 = false;
        dataObj.area03 = false;
        dataObj.overall = false;
        // 摄像机飞行到某位置
        app.camera.flyTo({
            "position": [-2.8177753324747767, 16.090400887405227, 19.94073098974482],
            "target": [-2.685240969328181, -1.3204502556714408, 3.6209106265430773],
            "time": 2000,
            "complete": function () {
                app.camera.inputEnabled = false;
            }
        });

    });

    button3.on("change", function (ev) {
        dataObj.area01 = false;
        dataObj.area02 = false;
        dataObj.overall = false;
        // 摄像机飞行到某位置
        app.camera.flyTo({
            "position": [33.313117413004846, 20.17892561437951, 30.105105312212782],
            "target": [50.84710727906235, -1.7298146965736394, 10.602912178089504],
            "time": 2000,
            "complete": function () {
                app.camera.inputEnabled = false;
            }
        });

    });

    button4.on("change", function (ev) {
        dataObj.area01 = false;
        dataObj.area02 = false;
        dataObj.area03 = false;
        // 摄像机飞行到某位置
        app.camera.flyTo({
            "position": [-18.079999999999977, 80.427, 101.051],
            "target": [13.422, 2.597, 2.226],
            "time": 2000,
            "complete": function () {
                app.camera.inputEnabled = true;
            }
        });


    });


});

var panel;
app.on("SingleClick", function (ev) {

    if (ev.button == 2) {
        if (panel) {
            panel.destroy();
            panel = null;
        }
        if (curObject) {
            curObject.playAnimation("close");
            curObject = null;
            app.camera.flyTo({
                "position": [33.313117413004846, 20.17892561437951, 30.105105312212782],
                "target": [50.84710727906235, -1.7298146965736394, 10.602912178089504],
                "time": 2000,
                "complete": function () {
                    app.camera.inputEnabled = false;
                }
            });
        }
        return;
    }

    var object = ev.object;
    if (object == null || object.name == "field")
        return;
    if (panel != null) {
        panel.destroy();
        panel = null;
    }
    panel = new THING.widget.Panel({
        width: "200px",
        cornerType: "polyline"
    })
    var data = {
        type: "小米",
        admin: "Kerwin",
        surplus: Math.round(Math.random() * 100) + "%",
        temperature: Math.round(Math.random() * 10) + "°"
    }
    // 绑定物体身上相应的属性数据
    panel.addString(object, "id").caption("仓库编号");
    panel.addString(data, "admin").caption("管理员");
    panel.addString(data, "type").caption("库存种类");
    panel.addString(data, "surplus").caption("剩余空间");
    panel.addString(data, "temperature").caption("仓库温度");
    panel.position = [500, 50];
    //创建UIAnchor面板
    var uiAnchor = app.create({
        type: "UIAnchor",
        parent: object,
        element: panel.domElement,
        localPosition: [0, -49, 0],
        pivot: [-0.2, 2.1]
    });

    uiAnchor["panel"] = panel;

    return uiAnchor;
});

var curObject;
app.on("dblclick", function (ev) {
    if (ev.button == 2)
        return;
    if (curObject) {
        curObject.playAnimation("close");
        curObject = null;
    }
    var object = ev.object;
    curObject = object;
    curObject.playAnimation("open");
    app.camera.flyTo({
        object: curObject,
    });
});

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/103241.html

相关文章

  • IOTE 2019国际物联网博览会—优锘科技受邀参展,ThingJS提供最佳产品体验

    摘要:国际物联网博览会苏州站于月日日苏州国际博览中心顺利举行。优锘科技非常荣幸地受邀,带着最高性能的产品亮相此次展会,优质的商务接待及专业技术展示,为广大行业客户带来最佳的产品体验。 IOTE 2019国际物联网博览会--苏州站于3月13日-15日苏州国际博览中心顺利举行。优锘科技非常荣幸地受邀,带着最高性能的ThingJS产品亮相此次展会,优质的商务接待及专业技术展示,为广大行业客户带来最...

    wanghui 评论0 收藏0
  • 从“智能”楼宇到“智慧”楼宇—ThingJS助力“智慧升级

    摘要:智慧楼宇可视化系统是综合上述手段打造出的智慧楼宇可查可管可控的一体化可视平台。智能环境可视化展示楼宇内水电气冷风等的管线含流向及设备的空间分布。集成停车引导系统,高亮展示最佳停车位及到车位的最佳路线。 智慧楼宇大势所趋,从智能 到智慧,一字之差,它到底有多智慧? 我们可以看一下智慧楼宇3D可视应用视频:https://v.qq.com/x/page/h0767... 基于ThingJS...

    hqman 评论0 收藏0
  • ThingJS物联网3D视化平台——智慧城市应用

    摘要:说起物联网,大家的第一反应就是智慧城市。在物联网的帮助下,得以让我们居住的城市正变得越来越有智慧。作为面向物联网的可视化开发平台有广阔的行业应用场景。 随着科技的发展,5G网络的到来,将开启万物即插即慧的新时代。这就是物联网,当网络不再是阻碍,万物互联,万物可视,把数字世界带入每个人、每个家庭、每个组织,构建万物互联的智能世界。 说起物联网,大家的第一反应就是智慧城市。在物联网的帮助下...

    eccozhou 评论0 收藏0
  • 数字孪生技术——ThingJS助力工业制造智慧化建设

    摘要:网络的预商用,物联网应用加速到来,我们将在优锘云中实现数字孪生。数字孪生的起源术语数字孪生是由密歇根大学的博士在到年期间定义的。数字孪生体现了软件硬件和物联网回馈的机制。 近期中国联通正式公布了其5G全新品牌标识——5Gⁿ,据了解5Gⁿ表达了5G的多场景应用和无限可能,包括融媒体、智慧医疗、智能网联、智慧教育、智能制造、智慧体育、智慧安防等。5G网络的预商用,物联网应用加速到来,我们将...

    jiekechoo 评论0 收藏0
  • 阿里云携手优锘发布智慧园区视化产品

    摘要:峰会上,阿里云与优锘科技联合发布了智慧园区可视化产品。优锘科技受邀参加此次峰会,峰会上,阿里云与优锘科技联合发布了智慧园区可视化产品,并在物联网专场论坛构建四位一体的数字园区运营体系进行了专题分享。 2019年3月21日,2019阿里云峰会在北京国家会议中心如期举行。峰会上,阿里云与优锘科技联合发布了智慧园区可视化产品。 本次峰会中,围绕十年再出发的主题,阿里云首次进行全面战略解读,并...

    codeKK 评论0 收藏0

发表评论

0条评论

aaron

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<