U3D模拟仿真实现
最近在做一个模拟仿真系统,数据源是一个实时数据库,场景中包含一些监测点。监测点给信号的方式是有物体到了监测点给上料信号,物体离开了监测点给下料信号;注意,如果有多个物体到达或离开监测点,那给信号的时间是所有物体都到达或都离开。这点约定是后续仿真模拟的前提和基础。
目前基本已经完成了前期的准备及实现工作,等待上线采集实际数据。在没有实际数据可供采集的情况下,采用如下结构来实现:

在实现过程中,主要有如下难点:
- 构造运动驱动XML数据时,要想实现长时间的运动驱动,但又不希望一直去构造数据,那就只有构造闭环数据,使驱动数据能够循环运作,从而达到无限长时间的数据信号供应;而如何构建闭环数据,这个其实简单,但是需要有耐心,仔细寻找驱动信号的规律;
- 实际上,最先是没有上图中的左边两部分的,而是直接构建实时数据库信号,即一条一条造;花了半天时间,构造了一两个物体很小一段的运动信号,实在沮丧,此方式不可取!后来想办法,实在无赖时冒出的用一个模拟场景来写数据的偷懒方法被采用,形成了上面的结构;
- 采集程序写如DB时,需要注意存料和上下料,且必须有时间这样的字段来标识;模拟场景初始化时是根据存料的,而存料是由前面所有的上下料信号积累形成的;T0时刻的存料初始化场景后,只能取T0时刻以后的上下料信号来驱动运动;
- 对于多个物体上下料的情形,目前给信号的方式存在天然的缺陷,因为上下料结束才给信号,那模拟必然至少延迟上下料时间T1;而这段时间如果长一些,完全可能形成如下的信号形式:物体A在单元UNIT1中还未下料,但是已经有A在UNIT2上料的信号了;此信号合理且符合实际,但是在处理上就复杂麻烦了。因为普通情况下,我们理解这种信号为“跳帧”,即中间有信号遗失,需要额外处理;但是偏偏它又不是“跳帧”。。。折磨了良久,最后的解决方式是在UNIT2上料的之前模拟一条UNIT1的下料信号,等到真的下料信号来的时候——不处理!
- 还需要考虑的一个难点是,客户端可能有很多,时时刻刻都会连服务器进行运动的模拟,不同客户端间应尽可能的同步,就像网游,不同人的视角虽然不同,但至少怪物的位置需要一致,但目前我们还没能做到这一点,不知道有什么好方案,求给力推荐!
U3D模拟仿真实现的更多相关文章
- LVGL 模拟仿真(Windows+CodeBlocks)
一.准备材料 Code Blocks官网:https://www.codeblocks.org/ Code Blocks 汉化包:链接: https://pan.baidu.com/s/12zB5bD ...
- 基于Modelsim的视频捕获模拟仿真
一.前言 针对牟新刚编著的<基于FPGA的数字图像处理原理及应用>中第五章系统仿真中关于视频捕获模拟的例子进行补充和仿真验证,简言之,吊书袋子. 2020-02-27 21:09:05 二 ...
- 好久不发帖,转一下公司技术美术独立完成的U3D模拟暗黑泰瑞尔翅膀物理运动效果
想入公司倍培养成为优秀的技术型美术,欢迎call我! Max制作翅膀模型部分 新建一个片面,模型给一些段数,赋予一张左右二方连续贴图. 加个FFD 4*4*4,并稍微拉出一点弧度. 将头尾的Alpha ...
- NS网络仿真,小白起步版,双节点之间的模拟仿真(基于TCP和FTP流)
set ns [new Simulator] set tracefd [open one.tr w] #开启跟踪文件,记录分组传送的过程 $ns trace-all $tracefd set namt ...
- c# C++接口封装 汽车模拟仿真
struct PinCamParIn//用户输入的针孔相机参数结构体{ char CameraName[512]; float Offset[3]; float Angle[3]; ...
- 常见信号的模拟仿真(matlab)(spike signal)
1. 一维信号 构造离散时间向量: Fs = 1000; % sampling frequency,采样频率 T = 1/Fs; % sampling period,采样周期 L = 1000; % ...
- NS网络仿真,小白起步版,模拟仿真之间注意的事项
FTP是基于TCP的,所以FTP应用不可以绑定UDP发送代理 FTP和CBR属于应用流,他们用来绑定TCP和UDP发送代理 TCP用于发送代理时,接收代理为TCPSink,可以绑定FTP应用.CBR流 ...
- Bug2算法的实现(RobotBASIC环境中仿真)
移动机器人智能的一个重要标志就是自主导航,而实现机器人自主导航有个基本要求--避障.之前简单介绍过Bug避障算法,但仅仅了解大致理论而不亲自动手实现一遍很难有深刻的印象,只能说似懂非懂.我不是天才,不 ...
- qemu 模拟-arm-mini2440开发板-启动u-boot,kernel和nfs文件系统
qemu 本文介绍了如何编译u-boot.linux kernel,然后用qemu启动u-boot和linux kernel,达到与开发板上一样的学习效果! 虽然已经买了2440开发板,但是在实际学习 ...
随机推荐
- 信息收集利器——Nmap
环境:kali2.0 常用的Nmap命令总结: 1.扫描单个IP地址 nmap 192.168.56.1 2.扫描一个网络中IP地址范围 nmap 192.168.56.1-255 3.扫描目标主机的 ...
- bzoj3192: [JLOI2013]删除物品(树状数组)
既然要从一个堆的堆顶按顺序拿出来放到第二个堆的堆顶,那么我们就可以把两个堆顶怼在一起,这样从一个堆拿到另一个堆只需要移动指针就好了. 换句话说,把1~n倒着,n+1到n+m正着,用一个指针把两个序列分 ...
- poj 1273 裸 网络流 (dinic)
Description Every time it rains on Farmer John's fields, a pond forms over Bessie's favorite clover ...
- Codeforces 311.E Biologist
E. Biologist time limit per test 1.5 seconds memory limit per test 256 megabytes input standard inpu ...
- 洛谷P1029 最大公约数和最小公倍数问题
题目描述 输入二个正整数x0,y0(2<=x0<100000,2<=y0<=1000000),求出满足下列条件的P,Q的个数 条件: 1.P,Q是正整数 2.要求P,Q以x0为 ...
- P1967 货车运输 树链剖分
题目描述 AA国有nn座城市,编号从 11到nn,城市之间有 mm 条双向道路.每一条道路对车辆都有重量限制,简称限重.现在有 qq 辆货车在运输货物, 司机们想知道每辆车在不超过车辆限重的情况下,最 ...
- linux的进程1:rootfs与linuxrc
在内核启动的最后阶段启动了三个进程 进程0:进程0其实就是刚才讲过的idle进程,叫空闲进程,也就是死循环.进程1:kernel_init函数就是进程1,这个进程被称为init进程.进程2:kthre ...
- 《转》sklearn参数优化方法
sklearn参数优化方法 http://www.cnblogs.com/nolonely/p/7007961.html 学习器模型中一般有两个参数:一类参数可以从数据中学习估计得到,还有一类参 ...
- input file 图片上传展示重新上传
html <div> <label class="imgMark">说明:</label> <div class="erWeiM ...
- 前端PHP入门-018-内置函数之文件包含函数
在实际开发中,常常需要把程序中的公用代码放到一个文件中,使用这些代码的文件只需要包含这个文件即可.这种方法有助于提高代码的重用性,给代码的编写与维护带来很大的便利. 在PHP中, 有require.r ...