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

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

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

  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. 【刷题】BZOJ 1211 [HNOI2004]树的计数

    Description 一个有n个结点的树,设它的结点分别为v1, v2, -, vn,已知第i个结点vi的度数为di,问满足这样的条件的不同的树有多少棵.给定n,d1, d2, -, dn,编程需要 ...

  2. 谈谈 Java 类加载机制

    概述 类加载器主要分为两类,一类是 JDK 默认提供的,一类是用户自定义的. JDK 默认提供三种类加载器: Bootstrap ClassLoader 启动类加载器:每次执行 java 命令时都会使 ...

  3. Java进程配置文件Reload

    我们在开发Java程序的时候,很多常量信息都存在配置文件中,比如数据库连接信息.ip黑名单,事件的超时时间等等.当需要该这些配置的值时都需要重新启动进程,改动的配置才会生效,有时候线上的应用不能容忍这 ...

  4. 《Linux内核设计与实现》第5章读书笔记

    第五章 系统调用 一.系统调用概述 系统调用在Linux中称为syscall,返回的值是long型变量:如果出错,C库会将错误代码写入errno全局变量(通过调用perror()函数可以把该变量翻译成 ...

  5. C++中添加配置文件读写方法

    比如有一个工程,一些变量有可能需要不时的修改,这时候可以通过从配置文件中读取该数值,需要修改时只需要修改配位文件即可. 比如有一个这样的变量m_nTest; 我么可以写两个函数ReadConfig() ...

  6. 洛谷P1937 [USACO10MAR]仓配置Barn Allocation

    题目描述 Farmer John recently opened up a new barn and is now accepting stall allocation requests from t ...

  7. P3620 [APIO/CTSC 2007]数据备份

    P3620 [APIO/CTSC 2007]数据备份 题目描述 你在一家 IT 公司为大型写字楼或办公楼(offices)的计算机数据做备份.然而数据备份的工作是枯燥乏味的,因此你想设计一个系统让不同 ...

  8. sql like参数化查询

    如下例所示,这样做了后再也不担心sql注入了.... public static DataTable GetProPriEEfocusNew(string ProName) { StringBuild ...

  9. Tensorflow模型变量保存

    Tensorflow:模型变量保存 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考文献Tensorflow实战Google深度学习框架 实验平台: Tensorflow1.4.0 pyt ...

  10. ndk如何将代码放在jni之外

    LOCAL_PATH := $(call my-dir)SDK_PATH := ../../.. include $(CLEAR_VARS)LOCAL_MODULE := libiconv_stati ...