为方便查阅,此文是原网站文档翻译,如有侵权,请与本人联系。
Visualization system
可视化资源表示可附着到刚体以进行可视化的可选对象。 Chrono可视化系统允许定义可视化模型、形状和材料。 各种具体的实现是可用的(例如,基于Irrlicht或OpenGL),并且正在开发基于VulkanSceneGraph(VSG)ius的新系统。 Chrono是引擎不可知论者。事实上,如果使用IRRLICHT模块,则由IRRLICHT模块将可视化资产转换为可以呈现的内容。同样,如果使用POSTPROCESS模块,则该单元预计会将可视化资产转换为具有POVray渲染工具形状的脚本。 一旦构建了可视化系统,就可以将Chrono系统连接到其上,以进行运行时或后处理渲染。 可视化系统的主要组件如下:
- 可视化材质(chrono::ChVisualMaterial)定义颜色(漫反射、环境光、镜面反射和发射)、纹理和其他相关财产。
- 可视化形状(chrono::ChVisualShape)是具有一个或多个相关可视化材质的几何图形(基本体、曲线、曲面或三角形网格)。如果形状没有关联的材质,则使用默认材质。
- 可视化模型(chrono::ChVisualModel)是形状的集合(指向)和指定相对于模型参考框架的形状位置的变换。模型中的可视化形状保存在
ShapeInstance
的向量中(这只是一个typedef,用于包含指向ChVisualShape
和ChFrame
的共享指针的对)。请注意,当前无法将可视化模型实例放置在另一个可视化模型中,但将来可能会添加该实例。 - 可视化模型实例(chrono::ChVisualModelInstance)是对具有相关物理项的可视化模型的引用。物理项可以具有关联的可视化模型实例。
chrono::ChVisualSystem为可能的具体运行时可视化系统定义了一个基类,并提供了最少的公共功能。使用ChVisualSystem::AttachSystem
将ChSystem连接到视觉系统。然后,Chrono物理系统将根据需要触发可视化系统的自动更新,具体取决于正在进行的特定类型的分析.可视化系统的设置方式使得派生类可以允许同时渲染多个Chrono系统;目前只有ChVisualSystemOpenGL支持此功能。
Visualization models
Chrono物理项目的可视化形状和材料定义机制在以下片段中进行了阐述:
// Create a visual material and set properties
auto vis_mat = chrono_types::make_shared<ChVisualMaterial>();
vis_mat->SetDiffuseColor(ChColor(0.9f, 0.4f, 0.2f));
// set other material properties
// Create a visual shape and add one or more materials
auto vis_sphere = chrono_types::make_shared<ChSphereShape>();
sphere->GetSphereGeometry().rad = 0.5;
sphere->AddMaterial(vis_mat);
// Create a visual model and add one or more shapes
auto vis_model = chrono_types::make_shared<ChVisualModel>();
vis_model->AddShape(vis_sphere);
// add more visual shapes to the model
// Attach an instance of a visual model to a physics item
body->AddVisualModel(vis_model);
Visualization shapes
有许多现成的资源可以定义可视化形状。请注意,可以将多个可视化形状附加到一个可视化模型。
可视化资产继承自一个名为ChVisualShape的基类。有关API详细信息,请参见chrono::ChVisualShape。
每个形状都具有相对于其所有者视觉模型的参考框架定义的平移和旋转。然后,通过指定相对于REF主体框架的平移和旋转,将视觉模型附着到所有者主体(请注意,这不是COG框架,如下图所示)。
可视化资产示例:
- chrono::ChSphereShape
- chrono::ChBoxShape
- chrono::ChCylinderShape
- chrono::ChEllipsoidShape
- chrono::ChConeShape
- chrono::ChCapsuleShape
请参见demo_irr_assets以了解在Chrono系统中定义与实体相关的各种视觉形状的示例。