当前位置: 首页 > news >正文

基于HTML5的燃气3D培训仿真系统

最近上线了的基于HTML5的燃气3D培训仿真系统,以前的老系统是采用基于C++和OpenGL的OpenSceneGraph引擎设计的,OSG引擎性能和渲染效果各方面还是不错的,但因为这次新产品需求要求能运行多移动终端,多年前基于MFC封装OSG的老系统架构也实在该退休了,这年头找能维护MFC这种古董级GUI的靠谱人也非易事。

系统最终采用HT for Web的3D框架实现,项目中的程序员也很高兴有这样的机会终于摆脱维护MFC老系统的宿命,虽然大家都只有C++的开发经验,对HTML/CSS/JS并不熟悉,但毕竟HT for Web已经做了极佳的组件封装,CSS和DOM、包括跨平台的兼容性等棘手问题交给HT框架透明处理,程序员只需要掌握基本的js用法就可以快速上手,按HT的说法类比与关系数据库ORM(Object-relational mapping)映射框架,HT提供的是OVM(Object-View mapping)的框架,只需要基本的面对对象的js操作即可驱动控制各种View组件,当然对于明白原理的人依然可以不受框架约束自如操作HTML的View层。

系统主要分为设备介绍、门站组装、业务培训和模拟考核四大部分:

让我感觉比较爽的是控制3D图元部分,以前不同的设备类型得体力活的写一堆代码,才能好不容易的实现些旋转移动等操作控制,界面控件和3D模型之间的数据同步也得费不少劲,现在用js这种动态语言真是非常灵活,界面都可以非常方面的动态生成,加上HT for Web统一的数据模型自动就能处理好3D图元与控件之间的数据绑定和联动,我干起活来就像搭积木一样轻松,脑子里想的就是业务功能和业务数据,不用再去折腾不同组件如何同步这些数据,控件也无需做什么特殊扩展。

当然目前项目还仅仅是初版移植,业务功能上还未有太大创新,但就目前的进度我们已经体会到HTML5的开发快速性,js语言也不是想象中那么弱,团队控制好一定的编码规范后js的灵活性带来的开发进度提高还是非常显著,刚开始选型大家还在争论OSG基于C++和OpenGL的性能会优于JS和WebGL的方案,但现在回头看我们还是走对路子了,毕竟我们这样的企业应用也不需要像游戏级别的渲染和性能的要求,产品发布轻量,开发可快速迭代更是我们需要追求的路线。

以下是一段平板上的操作视频供参考 http://v.youku.com/v_show/id_XNzA0NjE2MjY0.html

转载于:https://www.cnblogs.com/xhload3d/p/3695530.html

相关文章:

  • Android 解决ScrollView嵌入ListView | GridView | ScrollView显示问题
  • 万能写入sql语句,并且防注入
  • 进程通信
  • Delphi控制Excel
  • Tigase XMPP Server源码部署
  • 在iphone越狱机器中使用Hook
  • 报错:具有键...的ViewData项属于类型...,但它必须属于类型IEnumerableSelectListItem...
  • DELPHI7在WIN8和WIN10下安装和运行
  • mysql 如何选择随机行
  • 字符串通信协议解析函数
  • 虚拟机下host-only模式服务器之间通信
  • DATASNAP远程方法返回TSTREAM正解
  • 对比学习UIKit和AppKit--入门级
  • SVM算法入门
  • 分布函数(连续型连续型)
  • JavaScript 如何正确处理 Unicode 编码问题!
  • 2017年终总结、随想
  • ABAP的include关键字,Java的import, C的include和C4C ABSL 的import比较
  • Effective Java 笔记(一)
  • Java 内存分配及垃圾回收机制初探
  • MySQL数据库运维之数据恢复
  • October CMS - 快速入门 9 Images And Galleries
  • storm drpc实例
  • Vue2.x学习三:事件处理生命周期钩子
  • - 概述 - 《设计模式(极简c++版)》
  • 前端技术周刊 2018-12-10:前端自动化测试
  • 前端临床手札——文件上传
  • 删除表内多余的重复数据
  • 线上 python http server profile 实践
  • 一些css基础学习笔记
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • ​​​​​​​​​​​​​​Γ函数
  • ​Z时代时尚SUV新宠:起亚赛图斯值不值得年轻人买?
  • ​卜东波研究员:高观点下的少儿计算思维
  • ​水经微图Web1.5.0版即将上线
  • # .NET Framework中使用命名管道进行进程间通信
  • # C++之functional库用法整理
  • #if 1...#endif
  • $.ajax,axios,fetch三种ajax请求的区别
  • (1/2) 为了理解 UWP 的启动流程,我从零开始创建了一个 UWP 程序
  • (10)ATF MMU转换表
  • (12)Linux 常见的三种进程状态
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (4)(4.6) Triducer
  • (ros//EnvironmentVariables)ros环境变量
  • (附源码)spring boot球鞋文化交流论坛 毕业设计 141436
  • (十五)使用Nexus创建Maven私服
  • (四)docker:为mysql和java jar运行环境创建同一网络,容器互联
  • (一)Spring Cloud 直击微服务作用、架构应用、hystrix降级
  • (原創) 如何將struct塞進vector? (C/C++) (STL)
  • (转)Sql Server 保留几位小数的两种做法
  • .net FrameWork简介,数组,枚举
  • .NET/C# 使用反射调用含 ref 或 out 参数的方法
  • .Net的C#语言取月份数值对应的MonthName值