为方便查阅,此文是原网站文档翻译,如有侵权,请与本人联系。
官网
Chrono::Vehicle 为运行时交互式模拟提供可视化支持,以及用于生成动画的高质量后处理渲染,目前,运行时模拟支持扩展到用于顺序模拟的Chrono::Irrlicht底层模块,或用于涉及大规模细粒度地形表示的并行模拟的计算效率更高但更有限的Chrono::OpenGL模块,通过实用程序函数提供对单个模拟帧的光线跟踪渲染的支持,这些实用程序函数可以在模拟循环中调用,以导出具有当前可视化资产信息的数据文件,以及可以批量处理这些文件以生成帧图像的POV ray脚本。
基于Irrlicht的运行时可视化
基于Irrlicht的车辆运行时可视化分别针对轮式车辆和履带式车辆使用定制的Irrlicht应用程序ChWheeledVehicleIrrApp和ChTrackedVehicle IrrApp。
这些是基础ChIrrApp应用程序的扩展,允许:
- 使用以车辆为中心的摄像头位置(视点)
- 显示附加(车辆特定)统计信息,如车速、当前驾驶员输入、动力传动系统扭矩、车轮和链轮扭矩等。
- 指定接触力的呈现(履带车辆)
以下图像是 Chrono::Vehicle模拟的快照
基于OpenGL的运行时可视化
Chrono::Vehicle模拟也可以在运行时使用Chrono::OpenGL模块进行可视化。
这提供了更快速、计算更高效的可视化,尤其是对于大规模模拟(例如涉及车辆与颗粒地形交互的模拟)。
以下图像是 Chrono::Vehicle模拟的快照
使用POV Ray进行离线渲染
离线渲染需要以下步骤:
- 在每个要渲染的帧处收集系统数据
- 可以选择以特定于所需渲染引擎的格式准备网格数据文件
- 后期处理数据文件以在每帧渲染场景
- 可以选择将多个帧图像组合到一个动画中
Chrono::Vehicle对此工作流模型和POV光线跟踪程序提供有限的支持。
准备输出数据文件
- 在每个需要后期处理的模拟帧上,调用函数WriteVisualizationAssets
- 此函数将输出一个逗号分隔值(CSV)文件,其中包含用户提供的名称。
- 输出文件包含Chrono系统中所有实体(位置和方向)、所有关联的可视化资源(位置、方向、类型和资源特定参数)以及选定的关节类型的信息。请注意,网格可视化资源通过其各自的网格名称进行标识。
准备网格数据文件
对于使用POV Ray进行渲染,必须将与网格可视化资源相对应的Wavefront OBJ文件转换为POV Ray输入文件中的宏。这可以通过
- 使用函数WriteMeshPovray
- 使用专用工具,如PoseRay
如果使用下面描述的渲染脚本,则这些网格宏POV Ray输入文件的名称应与相应的网格名称相同。此外,这样的网格POV-Ray输入文件必须定义单个宏(与网格名称同名);因此,PoseRay生成的文件需要手动编辑(参见Chrono发行版提供的示例,例如data/vehvehicle/hmmv/POV-Ray/hmmv_schassis.inp
)。
使用POV Ray后期处理文件
Chrono发行版包括(在src/demos/vehicle/
目录中)一个示例POV-Ray脚本(renderZ.pov
),该脚本可用于(批量)处理WriteVisualizationAssets生成的格式的输出数据文件。该脚本假设所有数据都是在Z向上的右手帧(ISO参考帧)中提供的,并对POV Ray的Y向上左手帧执行所有所需的转换。
此脚本提供以下用户控件:
- 渲染单个帧或帧序列(批处理)
- 打开/关闭实体参照系的渲染
- 启用/禁用全局参照系的渲染
- 启用/禁用资源渲染
- 打开/关闭固定到地面的资产的渲染
- 启用/禁用受支持关节的渲染
- 打开/关闭弹簧和减震器的渲染
- 指定表示关节的几何形状的尺寸
- 摄像机位置和视点
- 启用/禁用阴影
- 可选地渲染环境(地面和天空)
请注意,renderZ.pov
脚本仅作为起点提供。POV Ray可以使用更复杂的材料和环境生成更复杂、更逼真的图像。
最后,类似的工作流可以用于使用不同的引擎(POV Ray除外)进行渲染。例如,下面的图像是使用WriteVisualizationAssets生成的数据文件生成的,但使用了Mitsuba引擎。
欢迎交流,一起学习,Q群:902809729