kdFlex 1.1.6 release


kdFlex 1.1.6 Code Changes Summary

API Changes

  • setNodalMatrix has been refactored into setRotationalNodalMatrix and setTranslationalNodalMatrix, and similarly for the getNodalMatrix method. This allows setting the respective units for each part of a flexible body nodal matrix. See setTranslationalNodalMatrix.
  • Reworked HuntCrossleyContactForce to use a “dissipation” parameter instead of the previous “kc”. This is more intuitive and easier to tune.
  • Removed the alpha field from Scene.Color. Opacity is now handled separately.
  • Now FrameToFrame::pframeObservedRelSpVel/Accel() return quantities. doc

New Features

  • Units for quantity types have been simplified to allow using Angle[Vec3] and Angle[float] notation for different sized data. doc
  • Added PhysicalBody::pruneChildren() and SubTree::pruneBodies() methods to simplify multibody model by absorbing rigidly attached children bodies into their parents (only for rigid parent and children bodies). doc
  • Added support for height field static geometries for more efficient collision detection for terrains and surfaces.
  • Improved the robustness and speed of contact dynamics via contact point refinement.

Enhancements

  • Updated installation process to use standard Python package process for Karana to simplify dependencies management. See the installation instructions for details.
  • Updated error handling for kc.discard to create a GUI for viewing the referrers of lingering Python references.
  • Added an opacity field to Scene.PhongMaterialInfo and Scene.PhysicalMaterialInfo to make the object transparent.
  • Added a Scene.WireframeMaterial to display a ScenePart as a wireframe.
  • Improved SubTree::displayModel() and SubTree::dumpTree() tabular output; they also now include an informative legend doc
  • Miscellaneous computational speed improvements.

Bug Fixes

  • Fixed loss of precision issues in the collision pipeline that degraded performance; now double-precision is used throughout.