Don't connect the ApplyStiffnessDamping callback
if both stiffness and damping coefficients are
approximately zero, as this callback can take
a surprising amount of computation time when there
are lots of joints in a world.
Also, disable the callback of coefficients are
reset to zero.
Signed-off-by: Steve Peters <email address hidden>
This adds an approximation of a wheel plowing effect
by rotating contact points and normals forward to
approximate the normal pressure distribution when
plowing longitudinally through deformable soil.
This builds on the implementation of the plowing effect
from the aditya/contact_pts branch to implement a model
discussed in #3085.
* Collision::WorldLinearVel: account for pose offset
Signed-off-by: Steve Peters <email address hidden>
Add example world and models, plowing SDFormat tags
LensFlare: parameterize number of occlusion steps (#3234)
There is a significant amount of CPU time taken
when checking for occlusions in the LensFlare
compositor listener. This exposes the number
of steps taken when checking occlusions to allow
users to attempt to speed up this process.
* LensFlarePlugin: call SetCamera last
The SetCamera call passes the current parameters to
the compositor listener, so make sure that it is
called last.
Signed-off-by: Steve Peters <email address hidden>
Support shininess value for each Visual in a Model (#3235)
This moves the parsing of shininess values from
World::LoadModel to Link::UpdateVisualMsg and
stores the values by scoped Visual name rather
than by Model name. The per-model gz services
are also replaced by a single /shininess
service. A World::ShininessByScopedName method
for accessing the shininess map is provided, and
a mutex is used to protect access to the map.
Signed-off-by: Steve Peters <email address hidden>
* Add Visual::Shininess accessor and corresponding
visual_shininess integration test that confirms
shininess values are properly added to Visuals in
the shapes_shininess example world.
* Fix the test by reverting part of #3223, moving
the shininess service call back to Visual::Load.
A different fix for the PR2 tests is made by
checking for existence of shininess service
before calling.
Signed-off-by: Steve Peters <email address hidden>
The logic in World::LoadModel currently creates an empty
link in models without links by calling GetElement("link")
without checking if such an element exists. This checks
HasElement("link") before calling GetElement, which fixes
a nested model test.
* Move shininess service call to Visual::Init
The pr2 test was failing due to timeouts in the shininess
service call. Move the call from Visual::Load to Visual::Init
to allow the service advertisement in World::Load some
time to take effect.
* Require SDFormat 9.8
* conda CI: don't install dartsim for now
Workaround for an issue with libsdformat 9.8
Signed-off-by: Steve Peters <email address hidden>