转自:https://sanwen8.cn/p/1e6GQeK.html

今天给各位介绍的仿真平台是VR-Forces。VR-Forces是新加坡公司MAK的产品,前身是美国公司。在仿真平台领域里面,VR-Forces算得上是小兄弟了,年轻有好处也有坏处,下面听我慢慢道来。

1VR-Forces概述

VR-Forces是一套先进的分布式计算机兵力生成软件和工具包,从名字就可以看出VR-Forces是用来做兵力推演的,最初的VR-Forces仅仅是为了配合VR-Link而开发的一个简单的FOM对象管理工具而已,是为了更好的管理兵力推演中的大量HLA实体的。而VR-Link可以简单地认为是RTI的一个封装,比直接使用RTI简单。

接下来有必要说一下背景了。MAK公司是做RTI起家的,他家的RTI绝对是COTS RTI中最强悍和稳定的RTI,也是仿真交互组织力推的RTI之一。因此VR-Forces从产生开始就遵循了RTI和HLA的特点并根植于RTI,如松散式集成,基于RTI的服务,利用FOM管理对象等。

从上面的图里面可以看出,VR-Forces提供了的分布式战场态势仿真功能和二维战场地图显示图形用户界面(4.x版本支持三维),底层通信支持HLA、DIS和TENA网络构架,通过VR-Forces工具包可以扩展该软件的仿真功能和定制用户界面。其中对TENA的支持是禁运的,不过俺们团队搞到了,嘿嘿......

2VR-Forces技术架构分析

VR-Forces的技术架构如下图所示:

啊?又是这么简单?没搞错吧?是的,就是这样清爽!作为小弟的VR-Forces还是比较简单的,但它确实是遵循了MVC的新的建模思想,将界面、控制(引擎)和模型分开了。

从上图中可以看出,VR-Forces有两个执行文件组成,一个负责界面,一个负责引擎,分别通过各自的API与VR-Link相连。目前VR-Forces提供如下的API:

1)仿真API:用来定制或者扩展后台运行的仿真引擎;

2)界面API:用来定制或者扩展前台的图形用户界面,这是基于QT的,可以改造后部分支持中文。

3)远程控制API:从其他应用向VR-Forces后台引擎发送指令;

4)插件API:用来在现有的VR-Forces界面上开发新的补充功能,这种插件和PS的插件很相似,不能修改主界面和功能。

实体对象是VR-Forces中的核心对象,实体对象具有功能行为,可以执行任务。通过实体对象模型可以描述仿真实体的属性和行为。实体对象的属性对应仿真中实体的状态,实体对象的行为通过任务建模来实现。

VR-Forces对实体对象的描述借鉴了Agent的很多思想,一个实体对象的结构由四部分组成,如下图所示。

1) 传感器。负责模拟外部环境,涵盖了对复杂作战环境的探测、分类、识别和确认的全过程。

2) 控制器。控制器负责根据传感器的输入条件产生相应的动作或者任务,任务的传输是通过HLA的消息机制实现的。

3) 作动器。作动器表示了实体对象的物理模型,也就是模型自身的运动学或者动力学过程。作动器将控制器的指令输入后调用自身的计算模型完成作战使命。

4)实体状态。描述实体随着仿真推进而变化的本身的状态参数,通过与前面三个组件的交互使得实体状态得以不断更新。

3VR-Forces技术优缺点分析

VR-Forces作为仿真平台界的后来者,从根本上采用了面向对象的建模方法和软件工程的实现方法。这个年轻的平台优缺点同样突出:

1)VR-Forces从内核里面就支持HLA,因此是HLA开发的强有力工具,但是对单机的支持就弱了,且不说RTIEXEC配置的复杂性,就是在单机也启动VR-LINK就够烦的了。

2)MVC架构加上大量设计模式的使用使得VR-Forces成为目前架构最先进的仿真框架之一。可惜的是MAK公司的战略注重在对外国用户的技术服务上,对国内应用现状了解太少,试问在国内的军方和工业部门的工科设计员中会熟练使用工厂类的人有几个?据小编了解,在国外MAK以技术服务为主,即为用户开发定制产品居多,但这一套拿到国内来就水土不服了。

3)二次定制和开发工作量巨大。VR-Forces内置的模型、实体对象均是美俄装备,而且按照DIS的命名规范组织,拿到国内来几乎没有用处,基本上全部需要定制开发。怪异的是MAK竟然连一个基本的类向导工具都没提供,只能按照例子自己修改,加上除了C++外还要学**MAK自己的脚本语言(STAGE也有),开发难度可想而知。

4)这点是我最不能忍受的——MAK产品更改的随意性!一个VR-Forces发展到4.X版本变化之大令人惊叹!在VR-Forces的升级中基本不考虑老用户的感受,API向下不兼容是常事,而且动不动架构也变化,连可视化内核也经历了从VP到OSG的巨变,可以说基本上没有延续性。这个问题对于一个年轻的平台来说尤为重要,哪个开发者愿意每次升级就要重新学**一边API的?

[转] VR-FORCES 介绍的更多相关文章

  1. 一些有意思的VR设备介绍

    1.计算机(Computers) 不久以前,一个VR系统需要百万美元的超级计算机:而如今顶级的VR系统正在使用桌面便携式计算机簇,极大的降低了价格和维护成本. 2.跟踪器(Tracking) 为了能与 ...

  2. 《VR入门系列教程》之6---VR硬件介绍及DK1

    第二章 VR硬件介绍     本章主要介绍当前比较流行的消费版VR设备,包括VR头显以及应用运行的PC和手机平台.     即使是在这工业高速发展的时代,一些大厂(比如Facebook的Oculus ...

  3. 《图说VR入门》——DK2入门及其资源汇总

    本文章由cartzhang编写,转载请注明出处. 全部权利保留. 文章链接:http://blog.csdn.net/cartzhang/article/details/53174895 作者:car ...

  4. GTC China 2016观感

    上周二在北京参加了GTC China 2016,最大的感受就是一个字,“冷”!黄教主一如既往坚持机车皮夹克装,9月中旬的北京还没有那么的冷啊,感觉全场的空调简直是为他而开...好的,以上吐槽完毕,接着 ...

  5. VR全景项目外包团队— VR/AR相关领域介绍和VR全景案例

    VR/AR相关领域这里我要说的一点就是硬件.诚然,硬件的确很难搞,国内在这方面就是荒漠,所以,如果你有信心,完全可以开拓一片蓝海.注意我是说真正的硬件,那些把Google的纸盒子拿来改改就能融资千万的 ...

  6. VR介绍

    VR(Virtual Reality,即虚拟现实,简称VR),是由美国VPL公司创建人拉尼尔在20世纪80年代初提出的.其具体内涵是:综合利用计算机图形系统和各种现实及控制等接口设备,在计算机上生成的 ...

  7. 关于Daydream VR的最直白的介绍

    虚拟现实(Virtual Reality),简称虚拟技术,也称虚拟环境,是利用电脑模拟产生一个三度空间的虚拟世界,提供用户关于视觉等感官的模拟,让用户如同身历其境一般,电脑可以立即进行复杂的运算,将精 ...

  8. 面试题 -AR VR MR以及CR的简单介绍

    AR 增强现实技术(Augmented Reality,简称 AR),是一种实时地计算摄影机影像的位置及角度并加上相应图像.视频.3D模型的技术,这种技术的目标是在屏幕上把虚拟世界套在现实世界并进行互 ...

  9. VR/AR 非技术总结

    VR/AR 非技术总结 **欢迎转载~转载请注明Erma的博客 http://www.cnblogs.com/Erma-king/** 都说2016是VR/AR的元年,上半年我随着新技术的潮流进入了V ...

  10. iOS-多线程介绍

    一.前言部分 最近在面试,重新温习了一遍多线程,希望加深一遍对于多线程的理解. 1.什么是进程? 1).要了解线程我们必须先了解进程,通俗来讲进程就是在系统中运行的一个应用程序. 2).每个线程之间是 ...

随机推荐

  1. mysql 把表中某一列的内容合并为一行

    1,把表中某一列的内容合并为一行 select province,CONCAT('[\"全部\",\"',GROUP_CONCAT(city ORDER BY cityI ...

  2. 编程中,static的用法详解

    C++的static有两种用法:面向过程程序设计中的static和面向对象程序设计中的static.前者应用于普通变量和函数,不涉及类:后者主要说明static在类中的作用.一.面向过程设计中的sta ...

  3. 08.Curator缓存

        可以利用ZooKeeper在集群的各个节点之间缓存数据.每个节点都可以得到最新的缓存的数据.Curator提供了三种类型的缓存方式:Path Cache,Node Cache 和Tree Ca ...

  4. 170615、spring不同数据库数据源动态切换

    spring mvc+mybatis+多数据源切换 选取Oracle,MySQL作为例子切换数据源.mysql为默认数据源,在测试的action中,进行mysql和oracle的动态切换. 1.web ...

  5. 使用Navicat连接Mysql报错:can not get hostname for your address

    以管理员的身份使用cmd命令运行netsh winsock reset即可!

  6. python提取相对路径

    原理: 用绝对路径,截断根目录的路径,就得到了相对路径. 代码 方法1:字符串替换(用字符串函数)推荐 import os print('==========1===========') abspat ...

  7. thinkphp5手动注册命名空间

    手动注册 命名空间.利用application/config.php配置文件来注册命名空间1:在application目录同级创建一个myExtend文件夹,里面再创建一个myTest文件夹.里面放一 ...

  8. HDU5086:Revenge of Segment Tree(规律题)

    http://acm.hdu.edu.cn/showproblem.php?pid=5086 #include <iostream> #include <stdio.h> #i ...

  9. Deep Learning(4)

    四.拓展学习推荐 Deep Learning 经典阅读材料: The monograph or review paper Learning Deep Architectures for AI (Fou ...

  10. soapUI-DataSource Loop

    1.1.1  DataSource Loop 当我们需要遍历某DataSource中的所有内容时.需要在TestCase中添加DataSource Loop步骤,然后双击它进行配置,如下图所示: Op ...