added vbd schemas - #71
Conversation
Codecov Report✅ All modified and coverable lines are covered by tests. 📢 Thoughts on this report? Let us know! |
andrewkaufman
left a comment
There was a problem hiding this comment.
Thanks @Milad-Rakhsha-NV, I didn't comment on attribute names & values much, I'll leave that to the VDB experts.
|
Thanks for the great effort! All relevant parameters are there for the demos we run in IsaacLab (so far). For the rigid contact, there is another potentially useful boolean to expose: rigid_contact_hard. Do you think this one could make sense? |
Hi Mike we can add it but the authors of VBD was in favor of not exposing it since it will be removed in the future, @jumyungc for visibility |
| doc = "Provides Newton's VBD (Vertex Block Descent) solver configuration." | ||
| ) | ||
| { | ||
| uniform float newton:vbd:frictionEpsilon = 0.01 ( |
There was a problem hiding this comment.
@AnkaChan is this global? Should we key it off the contact_friction_gain parameter we added to the contact schema?
| } | ||
| ) | ||
|
|
||
| uniform bool newton:vbd:particle:selfContactEnabled = false ( |
There was a problem hiding this comment.
I think a big question here is what to do when we move self contact and triangle based contact out of VBD and into the collision pipeline object.
There was a problem hiding this comment.
Thanks Miles I think based on JC's input we will remove this for the initial design and will add it later on if needed
|
Fixes #30 |
|
FYI, I added a minimal, starting set of rigid/AVBD params to carry over (#30). It'll need to expand later. |
Thanks JC, will update soon. |
1551165 to
873ecc6
Compare
Co-authored-by: Andrew Kaufman <akaufman@nvidia.com> Signed-off-by: Milad-Rakhsha-NV <167464435+Milad-Rakhsha-NV@users.noreply.github.com>
There was a problem hiding this comment.
The rigid-body side looks good to me overall - thanks!.
I only added a few small comments to tighten up the doc.
Just in case, please don’t forget to update the changelog.
This needs further testing, but after thinking about it more, we may not need joint_Linear/Angular_Ke/Kd. contactHistory may also be unnecessary. To keep the schema conservative and minimal, I'd suggest not shipping any rigid-specific parameters for now.
Description
Adds
NewtonVbdSceneAPI, a single-apply API schema that extendsNewtonSceneAPIwith configuration for Newton's VBD (Vertex Block Descent) solver, including its AVBD rigid-body path. Applying it implicitly appliesNewtonSceneAPI, and it can only be applied to aPhysicsScene.Parameters are grouped by prefix:
newton:vbd:— common solver parametersnewton:vbd:particle:— cloth/particle self-contact parametersnewton:vbd:rigid:— rigid-body AVBD penalty/stabilization parametersAddresses #30.
Design
Attributes are included based on whether they describe the simulation or the run. Parameters that control how the engine executes rather than what is simulated — memory preallocation (contact buffer sizes), backend acceleration toggles (tile solve), and solver-wiring flags (external rigid integration) — are left to application-level configuration and excluded.
iterationsis not duplicated; it maps to the existingnewton:maxSolverIterationsonNewtonSceneAPI.Override attributes that fall back to another parameter use a
-infsentinel meaning "inherit the solver default":avbdJointAlpha/avbdContactAlphainheritavbdAlpha, andavbdLinearBeta/avbdAngularBetainheritavbdBeta. These usesoftlimits so the sentinel stays valid.Defaults, ranges, and units were taken from the VBD/AVBD solver source:
alpha/gammain[0, 1]; betas, stiffness seeds, ceilings, and damping>= 0).k = min(k_max, k + beta * |C|), soavbdLinearBetahas unitsforce / distance²andavbdAngularBetahas unitstorque / radian².K_eff = k * (1 + kd/dt), sojointLinearKdandjointAngularKdare stiffness-proportional Rayleigh coefficients with units of seconds.Attributes
newton:vbd:frictionEpsilonnewton:vbd:particle:selfContactEnabled,selfContactRadius,selfContactMargin,conservativeBoundRelaxation,collisionDetectionInterval,edgeParallelEpsilon,topologicalContactFilterThreshold,restShapeContactExclusionRadiusnewton:vbd:rigid:avbdAlpha,avbdJointAlpha,avbdContactAlpha,avbdBeta,avbdLinearBeta,avbdAngularBeta,avbdGamma,contactHistory,contactStickMotionEps,contactStickFreezeTranslationEps,contactStickFreezeAngularEps,contactKStart,jointLinearKe,jointAngularKe,jointLinearKStart,jointAngularKStart,jointLinearKd,jointAngularKdExcluded from the schema
integrate_with_external_rigid_solver— solver wiring, not a scene propertyparticle_enable_tile_solve— backend acceleration toggleparticle_vertex_contact_buffer_size,particle_edge_contact_buffer_size,rigid_body_contact_buffer_size,rigid_body_particle_contact_buffer_size— memory preallocationparticle_external_vertex_contact_filtering_map,particle_external_edge_contact_filtering_map— element-level collision filtering; belongs to a dedicated element collision filter schemarigid_enable_dahl_friction— deprecated; controlled by model attributesOpen questions
collisionDetectionIntervalis exposed as a tri-state integer; should the "once" / "twice" / "every n" behavior instead split into a token plus interval?Checklist