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

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

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

  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. Java进程配置文件Reload

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

  2. 20135239 益西拉姆 linux内核分析 使用库函数API和C代码中嵌入汇编代码两种方式使用同一个系统调用

    https://drive.wps.cn/preview#l/759e32d65654419cb765da932cdf5cdc 本次直接在wps上写的,因为不能连同图片一起粘贴过来,一个一个粘比较费时 ...

  3. 网络协议之DHCP与Route20170330

    由于要使用网络通讯,所以不可避免的要用到dhcp.理想的网络通讯方式是下面3种都要支持: 1,接入已有网络.这便要求可以作为dhcp客户端. 2,作为DHCP服务器,动态分配IP. 3,指定固定IP ...

  4. gdb常用命令小结

    用了这么长时间gdb, 总结下常用用法: http://note.youdao.com/noteshare?id=4a2d1a34624f7197d8e2304c4beb4578

  5. pandans导出Excel并将数据保存到不同的Sheet表中

    数据存在mongodb中,按照类别导出到Excel文件,问题是想把同一类的数据放到一个sheet表中,最后只导出到一个excel文件中# coding=utf-8import pandas as pd ...

  6. Spring Boot 使用IntelliJ IDEA创建一个web开发实例(二)

    1. 创建一个Controller类 package com.example.demo; import org.springframework.web.bind.annotation.RequestM ...

  7. 庞老师集群.ziw

    2017年2月17日, 星期五 庞老师集群 链接:http://pan.baidu.com/s/1mhSw2TE 密码:hzz4   更改子网IP,及网关:     null

  8. Linux 中的变量

    echo  $PATH var =a echo $var export  var1=11 echo $var 访问关系: whereis yum  file /usr/bin/yum vi  /usr ...

  9. [php]require&require_once&include&include_once的用法与区别

    1.require和include是php引入php文件的两种方式,使用格式如下: require(include) 文件名; require(include) 变量(此变量存储的是文件名); 2.区 ...

  10. 【LIbreOJ】#6256. 「CodePlus 2017 12 月赛」可做题1

    [题意]定义一个n阶正方形矩阵为“巧妙的”当且仅当:任意选择其中n个不同行列的数字之和相同. 给定n*m的矩阵,T次询问以(x,y)为左上角的k阶矩阵是否巧妙.n,m<=500,T<=10 ...