设为首页收藏本站

最大的系统仿真与系统优化公益交流社区

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 1576|回复: 1

Demo3D 三维可视化开发新平台

[复制链接]
发表于 2016-12-6 18:57:07 | 显示全部楼层 |阅读模式

Demo3D 三维可视化开发新平台


王岩峰 博士  刃之砺信息科技(上海)有限公司

版权所有,引述请注明出处


在我们对自动化物流系统集成商关于三维仿真平台的应用调查时,发现不同的应用需求,主要包括(图表1
1)通过三维仿真平台展示逼真、直观的方案,助力营销;
2)通过三维模型对方案进行评估和优化,找到瓶颈和合理的资源配置;
3)通过三维模型和PLC信号互联互通,在设计早期就可以开始进行电控调试;
4)通过三维模型和信息系统集成,实现三维可视化浏览和监控;
5)通过三维模型发现设计缺陷,找到合适的设计参数;
(6)通过三维模型和主流虚拟现实(增强现实)平台对接,实现更逼真的效果。
Demo3D 系列产品是少数可以满足全部需求的一体化仿真平台。以其领先的虚拟现实(增强现实)技术、真实的物理特性、逼真的细节表现力、丰富的设备库、灵活的二次开发能力、以及便捷的PLC调试功能,获得主流物流集成企业和咨询企业的青睐,在医药、烟草、钢铁、电商、汽配、邮政、智能制造等领域发挥积极的作用。
在这篇文章中,我们重点介绍Demo3D三维可视化开发功能。

MESWMS 等信息系统前端,嵌入三维可视化展示窗口,可以跟随后台数据变化而变化,是目前很多信息系统升级换代的重要工作之一。但这个过程说起来容易,做起来可能非常繁琐。需要考虑的问题包括
1)是否方便快速搭建和调整场景。这部分往往涉及到三维建模、模型简化、格式导入导出、内存管理等问题。
2)模型是否可以和后台数据建立实时对应关系。这部分往往涉及数据库集成、数据刷新和数据同步等问题。
3)在后台数据离散化、跳跃化更新的情况下,如何让三维可视化显得平滑。这部分往往涉及到动画的连续化处理,缺失数据的填补等问题。
4)模型本身的逻辑开发。这部分涉及当数据满足条件时,模型内部的运作逻辑符合现场规则和业务要求。
5)架构问题。这部分涉及到三维可视化平台如何和信息系统融合,采用何种技术路线或者三维引擎。
很多企业采用基于Unity3D 或者其他游戏引擎的方法,好处是可以从底层进行开发,但缺点是面对不同场景时,需要花费大量时间重构新的场景,几乎要重写一遍监控程序。
Demo3D作为多用途仿真平台,在快速搭建任何场景的同时,提供了过渡到 B/S, C/S 架构的三维可视化子系统的扩展功能。
(一)工作原理
Demo3D 是基于 .NET 平台的多用途仿真平台。借助 Demo3D 逼真的三维展示能力、丰富的模块库、开放灵活的逻辑扩展能力,可以迅速建立现场布局模型,然后和后台数据库、PLC 信号进行连通,就可以直接产生和现场互动的模型。
之后,Demo3D机器可以变成一个网络服务器,通过SOAP协议,让外部程序对模型进行展示和控制。一方面用户可以打开浏览器,输入服务器IP地址和端口,在网页中同步观察模型的运行,并进行互动;另外,可以集成到客户端开发中(例如 WPF),作为客户端的一个展示控件。Demo3D 提供了这二种方式的扩展方法。
无论B/S, C/S 架构,客户端都采用和虚拟现实相同的技术进行模型的光影处理,使模型更逼真,更有吸引力,同时尽量减少模型的内存消耗。
(二)C/S 架构开发举例
我们以 WPF 中嵌入 Demo3D 模型为例进行说明。在WPF程序界面中可通过嵌入Demo3DVR.exe(是Demo3D 安装目录下的自带程序)来展示Demo3D模型,实现Demo3D在其他windows 客户端系统上的集成。Windows客户端也可以通过向Demo3D软件平台发送命令来控制模型的运行状态。包括启动模型,停止模型,重置模型等,通过命令也可以对模型中的元素进行控制。
本案例通过一个简单的程序来展示Demo3D软件与WPF客户端之间的交互,主要功能包括对Demo3D模型的展示和控制,切换不同的IP和端口来展示不同的模型,以及对细节元素的控制。程序的主界面如下图表2。整个界面分为两个大块,上方的是对Demo3DVR.exe窗口的嵌入引用。Demo3D的模型通过该窗口进行呈现。下方是按钮区,共有五个按钮,对应了不同的交互功能,play,stop和reset分别对应了对模型的启动,停止和重置的功能。toggle motor和change model对应的是对模型元素的操作以及切换Demo3D展示模型的操作。
1)Demo3DVR.exe窗体加载:Demo3DVR.exe窗口是通过WindowsFormHost加载到程序界面中。
2)Play-Stop-Reset命令实现:示例中,程序对Demo3D模型通过Client. UploadValues()方法,将控制参数上传到http://localhost:9080/console.html网页上,实现对Demo3D模型的运行,停止和重置的控制。控制的命令格式是Demo3D的控制代码的字符串化,如app.Reset()等。因此,在Demo3D软件支持的基础上,可定制化不同的命令来控制不同的模型。
3)Toggle MotorToggle Motor功能展示了示例程序对Demo3D软件的细节控制,该按钮控制弹出一个新的窗口,如图表3所示。在框中输入在模型中已存在的conveyor的名字,通过开关按钮就可以实现对所选conveyormotor的控制。对模型的细节控制同样是通过Client. UploadValues()方法来向Demo3D软件提交控制命令。对细节元素的识别,是通过名称字符串来识别。控制命令的格式是名称.命令,如conv1.MotorOn()


4)Change ModelChange Model功能是对加载Demo3DVR.exe窗口功能的一个扩展。默认加载Demo3DVR.exe窗口时,Demo3DVR.exe通过扫描localhost:9080的端口上的Demo3D的软件来确定加载的模型信息。若用户需要将视口切换到远端设备或者另一个端口上的模型,可用到该功能。Change model可弹出如图表4的窗口,在IP中输入远端IPlocalhost,在port中输入端口号,之后便可以将视口切换到所需的模型上。实现此功能是在启动Demo3D.exe时,在传入参数后添加了“+url ip:port”,使得Demo3DVR.exe可以载入指定IPport下的模型。
(三)B/S 架构开发举例
建立好模型之后,打开网络服务,选择菜单工具”- Browse WebGL 就可以打开一个网页,看到模型同步运行。用鼠标左键和滚轮进行视角变化。其他机器的浏览器可以通过输入IP地址和对应端口,通过浏览器同步做同样的事情。用户可以对网页进行扩展开发,增加按钮,嵌入到信息系统中等。
Demo3D通过基于SOAP协议的Webservice,提供模型在网页上的浏览和操作功能。用户通过浏览器访问Demo3D软件平台所在端口时,Demo3D软件平台将请求导向安装目录下的WebRoot文件夹。
根据B/S的访问机制,默认加载index.html文件。在index文件通过ajax方式请求模型数据,在浏览器端使用Unity3D引擎解析加载三维模型。为实现从浏览器端对Demo3D软件的控制,Demo3D还提供了console.html文件。通过加载该文件,并在表格中提交相应的命令字符串,可实现从浏览器端控制Demo3D软件的目的。
感兴趣的用户可以向我们索取案例。更多Demo3D 的资料,可以参考 www.demo3d.cn

发表于 2016-12-8 07:57:15 | 显示全部楼层
分析的很全面
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|Archiver|手机版|SimulWay 道于仿真    

GMT+8, 2019-11-14 16:26 , Processed in 0.040509 second(s), 16 queries .

Powered by Discuz! X3.4 Licensed

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表