最近在做一个模拟仿真系统,数据源是一个实时数据库,场景中包含一些监测点。监测点给信号的方式是有物体到了监测点给上料信号,物体离开了监测点给下料信号;注意,如果有多个物体到达或离开监测点,那给信号的时间是所有物体都到达或都离开。这点约定是后续仿真模拟的前提和基础。

目前基本已经完成了前期的准备及实现工作,等待上线采集实际数据。在没有实际数据可供采集的情况下,采用如下结构来实现:

在实现过程中,主要有如下难点:

  1. 构造运动驱动XML数据时,要想实现长时间的运动驱动,但又不希望一直去构造数据,那就只有构造闭环数据,使驱动数据能够循环运作,从而达到无限长时间的数据信号供应;而如何构建闭环数据,这个其实简单,但是需要有耐心,仔细寻找驱动信号的规律;
  2. 实际上,最先是没有上图中的左边两部分的,而是直接构建实时数据库信号,即一条一条造;花了半天时间,构造了一两个物体很小一段的运动信号,实在沮丧,此方式不可取!后来想办法,实在无赖时冒出的用一个模拟场景来写数据的偷懒方法被采用,形成了上面的结构;
  3. 采集程序写如DB时,需要注意存料和上下料,且必须有时间这样的字段来标识;模拟场景初始化时是根据存料的,而存料是由前面所有的上下料信号积累形成的;T0时刻的存料初始化场景后,只能取T0时刻以后的上下料信号来驱动运动;
  4. 对于多个物体上下料的情形,目前给信号的方式存在天然的缺陷,因为上下料结束才给信号,那模拟必然至少延迟上下料时间T1;而这段时间如果长一些,完全可能形成如下的信号形式:物体A在单元UNIT1中还未下料,但是已经有A在UNIT2上料的信号了;此信号合理且符合实际,但是在处理上就复杂麻烦了。因为普通情况下,我们理解这种信号为“跳帧”,即中间有信号遗失,需要额外处理;但是偏偏它又不是“跳帧”。。。折磨了良久,最后的解决方式是在UNIT2上料的之前模拟一条UNIT1的下料信号,等到真的下料信号来的时候——不处理!
  5. 还需要考虑的一个难点是,客户端可能有很多,时时刻刻都会连服务器进行运动的模拟,不同客户端间应尽可能的同步,就像网游,不同人的视角虽然不同,但至少怪物的位置需要一致,但目前我们还没能做到这一点,不知道有什么好方案,求给力推荐!

U3D模拟仿真实现的更多相关文章

  1. LVGL 模拟仿真(Windows+CodeBlocks)

    一.准备材料 Code Blocks官网:https://www.codeblocks.org/ Code Blocks 汉化包:链接: https://pan.baidu.com/s/12zB5bD ...

  2. 基于Modelsim的视频捕获模拟仿真

    一.前言 针对牟新刚编著的<基于FPGA的数字图像处理原理及应用>中第五章系统仿真中关于视频捕获模拟的例子进行补充和仿真验证,简言之,吊书袋子. 2020-02-27 21:09:05 二 ...

  3. 好久不发帖,转一下公司技术美术独立完成的U3D模拟暗黑泰瑞尔翅膀物理运动效果

    想入公司倍培养成为优秀的技术型美术,欢迎call我! Max制作翅膀模型部分 新建一个片面,模型给一些段数,赋予一张左右二方连续贴图. 加个FFD 4*4*4,并稍微拉出一点弧度. 将头尾的Alpha ...

  4. NS网络仿真,小白起步版,双节点之间的模拟仿真(基于TCP和FTP流)

    set ns [new Simulator] set tracefd [open one.tr w] #开启跟踪文件,记录分组传送的过程 $ns trace-all $tracefd set namt ...

  5. c# C++接口封装 汽车模拟仿真

    struct PinCamParIn//用户输入的针孔相机参数结构体{    char CameraName[512];    float Offset[3];    float Angle[3];  ...

  6. 常见信号的模拟仿真(matlab)(spike signal)

    1. 一维信号 构造离散时间向量: Fs = 1000; % sampling frequency,采样频率 T = 1/Fs; % sampling period,采样周期 L = 1000; % ...

  7. NS网络仿真,小白起步版,模拟仿真之间注意的事项

    FTP是基于TCP的,所以FTP应用不可以绑定UDP发送代理 FTP和CBR属于应用流,他们用来绑定TCP和UDP发送代理 TCP用于发送代理时,接收代理为TCPSink,可以绑定FTP应用.CBR流 ...

  8. Bug2算法的实现(RobotBASIC环境中仿真)

    移动机器人智能的一个重要标志就是自主导航,而实现机器人自主导航有个基本要求--避障.之前简单介绍过Bug避障算法,但仅仅了解大致理论而不亲自动手实现一遍很难有深刻的印象,只能说似懂非懂.我不是天才,不 ...

  9. qemu 模拟-arm-mini2440开发板-启动u-boot,kernel和nfs文件系统

    qemu 本文介绍了如何编译u-boot.linux kernel,然后用qemu启动u-boot和linux kernel,达到与开发板上一样的学习效果! 虽然已经买了2440开发板,但是在实际学习 ...

随机推荐

  1. Unity3D for VR 学习(7): 360°全景照片

    在VR应用中,有一个相对简单的虚拟现实体验,那就是360°全景照片浏览器, 他可以使得手机拍照的”全景”照片,  得以”恢复”当时拍照的场景全貌,  这个创意的确比单纯的2d图片更有震撼力一些,故本文 ...

  2. ueditor上传图片配置

    1 去ueditor文件夹下 找 ueidtors/dialogs/image/image.html -- 配置位置大概如下: 107   utils.domReady(function(){ 108 ...

  3. 代码收藏系列--mysql--创建数据库、数据表、函数、存储过程命令

    创建mysql数据库 CREATE DATABASE IF NOT EXISTS `database_name` DEFAULT CHARSET utf8 COLLATE utf8_general_c ...

  4. 【数据结构】【平衡树】treap

    之前写treap的传送门 之前写的那个太毒瘤了,这次放一个更毒瘤的指针版上来 #include<cstdio> #include<iostream> #define rg re ...

  5. TopCoder SRM420 Div1 500pt RedIsGood

    桌面上有R 张红牌和B 张黑牌,随机打乱顺序后放在桌面上,开始一张一张地翻牌,翻到红牌得到1 美元,黑牌则付出1 美元.可以随时停止翻牌,在最优策略下平均能得到多少钱. R,B ≤ 100000. 输 ...

  6. SSH免密码登录,实现数据传输备份

    简单来说,就是通过ssh-keygen -t rsa命令来产生一组公私钥,私钥是id_rsa,公钥是id_rsa.pub,把公钥上传到另一台服务器对应账号的.ssh/authorized_keys,即 ...

  7. JS中的匿名函数自执行、函数声明与函数表达式

    先看一段jQuery源码中匿名函数自执行的例子: (function( window, undefined ) { // jquery code })(window); 另外一种常见的写法: +fun ...

  8. mac activemq

    安装 brew install maven 运行 To have launchd start activemq now and restart at login: brew services star ...

  9. Codeforces 807 C. Success Rate

    http://codeforces.com/problemset/problem/807/C C. Success Rate time limit per test 2 seconds memory ...

  10. c# windows server安装启动与卸载

    使用installutil.exe安装卸载服务时,由于需要指向服务的全路径,由于生成目录往往不是服务发布的最终目录,很不便利,下面介绍两种方式方便操作: 方式一: 项目中加入install.bat与u ...