Hi,
I am evaluating the viability of project chrono for a robotics simulation application. As part of this, I need to import a large mesh (~1.3 million faces) into my simulation. The whole thing uses the same, single color visual material.
auto body= std::make_shared<ChBodyEasyMesh>(
filename,
7000,
true,
true,
false,
std::make_shared<ChMaterialSurfaceSMC>());
This works fine. However, it really slows down my camera sensor. I have a single camera sensor (ChCameraSensor) facing the mesh.
auto cam = chrono_types::make_shared<ChCameraSensor>(floorBody,
40,
pose,
width,
height,
1.4,
1,
CameraLensModelType::PINHOLE,
false);
Rendering a frame (specifically, the ChSensorManager::Update() call) takes over 100ms, where it only takes a few milliseconds if I have some simple cubes in the frame.
I have tried the following things to speed it up:
1. Reduce camera resolution by 10x, this had no effect!
2. Add more cameras to see if it scales at all, this had no effect!
3. Increased MaxEngines on the SensorManager, no effect
4. Set RayRecursions on the SensorManager to 0, no effect
5. Adding no extra filters to the camera, no effect
6. Use ChVisualSystemIrrlicht to visualize, this performed even worse
7. Run on a powerful desktop with a high end GPU, this performed slightly better, but not by much
8. nvidia-smi shows that the GPU is not being utilized anywhere near 100%
I am really surprised by this, as the settings on the cameras do not seem to influence this at all. Is there something I can do about this, or can Chrono Sensors just not handle large meshes like that?
What is it the sensor manager doing with all this time?
Kind regards,
Patrick