

简介
VISSIM是德国PTV公司出品的微观交通仿真软件。该软件以Link-Connnector的形式表示路网,具有极高的描述精度,适用于交叉口或小区域路网的评价。当前VISSIM在国内交通界已有比较广泛的应用,使用VISSIM生成动画是一种常见的应用方式。VISSIM的本职工作是生成评价数据,虽然有一定的可视化能力,但是生成的动画非常粗糙。为了生成高质量的动画演示需要借助第三方的3D建模工具。
VISSIM从4.3版开始可以将仿真场景中的车辆轨迹保存为一个txt文件,同时提供将车辆轨迹文件导入3DMAX的脚本。3DMAX的价格很高,学习曲线陡峭,而开源的3D软件Blender不但完全免费,同时功能同样强大,完全可以取代3DMAX用来生成高质量的演示动画。
本文介绍如何实现导入VISSIM车辆轨迹文件的Blender脚本。
文件格式
VISSIM导出的车辆轨迹文件(后文简称轨迹文件)是一个文本文件。文本中的每行包含由逗号“,”分隔的区段。根据行的类型不同,包含的区段数量不等。轨迹文件中的行分为两类。一是Frame之间的分隔行,包含两个区段,第一个区段内容不详,第二个区段是该Frame对应的仿真时间。两个Frame分隔行之间的行表示该Frame中出现的车辆在空间中的广义坐标(位置,朝向),这种行包含若干个区段其中第1个是车辆ID,第3个是车辆种类,456是车辆的三维位置坐标,7是转向角。转向角以3点钟方向为0点,逆时针方向为正。8是车辆长度。
脚本结构
这个importor脚本的功能主要分成两个部分。第一个部分是parse轨迹文件,生成property和trajectory两个字典。其中property字典记录了各辆车的车种和长度;而trajectory字典记录了车辆在各个frame中的广义坐标构成的list。
第二个部分是根据之前parse得到的dict在blender场景中为各个车辆建立模型并设置关键帧。理想情况下对于不同种类的车辆要选取不同的模型,对多个同类车辆也要随机改变模型,但是在当前的实现中为了简化问题所有车辆都用方盒表示,同时所有的车辆Object共享一个方盒Mesh。
每个车辆Object都包含一个Ipo对象,而Ipo对象包含Locx,Locy,Locz,Rotz,Layer几条Ipo曲线,其中前四条对应车辆的广义坐标,Layer曲线用于控制车辆的出现和消失。比如当车辆需要出现时跳入Layer1,当车辆需要消失时跳入Layer2。
结果
这是导入车辆后的blender界面
这是渲染效果
没有评论:
发表评论