Menu Main / Roadmap

ArtiSynth Home

Downloads Installation Instructions Documentation Tutorials Update Log

Application Demos Publications People Project Roadmap Code of Conduct

sidehead was Models package Models Package

Subscribe for updates

Related Links

* HCT ArtiSynth Site * Archived ArtiSynth Site Opportunities

Website problems? Contact us

edit SideBar

ArtiSynth Project Roadmap

General Goals

  • Deployment
    • Automate systems builds and tests based on Gradle
    • Faster release cycle, with releases generated directly for different architecture from GitHub repository
    • Remove dependency on Java 8
    • ARM processors: will need Intel compatibility mode, or ARM native compiles and MKL/Pardiso replacement
    • Increase separation between solvers and graphical interface
  • Easier model creation
    • Additional FEM mesh readers (ANSYS .cdb, HyperMesh, Gmsh?).
    • OpenSim importer to jump start model builds based on OpenSim model files
    • Subject-specific registration tools to quickly create models from generic templates
    • XML-based model description format
  • Additional documentation
    • Developer guide describing internal system architecture and indicating how new components should be added
    • New modeling guide material (see Documentation tasks below).
  • New simulation capabilities
    • Implicit integration for Coulomb friction (Nearly finished, Apr, 2022)
    • Implement poroelastic materials
    • Low DOF deformable bodies as a bridge between high DOF finite element models and low DOF multibody models
    • Continuous collision detection for shells (prototype in 2019 showed this to be difficult)
  • Web presence
    • Web site redesign - move from pmwiki to WordPress?
    • Set up user and developer forums
    • Tutorial videos
    • Community contribution instructions


Updated May 16, 2022

indicates high priority
indicates medium priority

  • Graphical interface and interaction
    • Per Scott Moisik: split the main viewer into multiple panels (for multiview movies); render movies off-screen
    • Movie maker: add progress bar and show messages in the movie panel DONE
    • (may not be possible): Make CMD/CTRL for multiple selection consistent for viewer, navPanel, and across platforms
    • Add model and script menu editor DONE
    • Create HOME/ArtiSynthConfig directory to store user settings DONE
    • Add preferences and settings editors DONE
    • Add a multifield widget for Vector with sliders; requested by Saeed as noted in "working with widget and slider" in the KTH folder.
    • Rationalize the use of dragger components. Specifically, clearly identify when the components should be transformed vs. simply having their state modified.
    • Make it possible to add control panel widgets for collections of objects.
    • Modernize look of the navigation panel DONE
    • Maybe add a "mode" button for inheritable composite properties. Note that inheritance for composite properties seems to work sort of - example: colorMap in FemModel3d and FemMeshComp.
    • Marker selection: allow us to add FEM markers using element widgets.
    • Add pan/zoom/rotate buttons
    • Allow fit to view from current eye position
    • Ability to set center of rotation to current view center
    • Subsurface draw tool: find features inside the surface; define a mesh from the sub surface to use in collisions, etc.
  • FEM simulation
    • Properly implement external force propagation onto quadratic elements. Do we need special support for computing point attachment weights?
    • Unify FemMarker attachment code with FemMesh.createEmbedded()
    • B-spline elements - properly integrate and document
    • Finish consistent mass matrix formulation DONE
    • Properly implement Node-to-integration point extrapolation for quad elements
    • Fem factory based on a sweep methods: curve and a cross section mesh
    • Computation of internal energy
    • Implement multithreading for matrix assembly?
    • For increased FEM stability: maybe add stiffness damping only to incompressible part of the matrix?
  • MultiBody simulation
    • Check to see if we need to consider joint limits in the projectToConstraint method of RigidBodyCoupling. Update: depending on when the projection is done, this may prevent the constraints from engaging at all. So we may need to project *only* is the constraint is engaged.
    • Inertia damping
    • Fix target vel/pos so that it tracks world vel/pos for points.
    • Make OpenSim custom joint components explicitly accessible
    • Add restitution to rigid body collisions
    • Reformulate AxialSpring Jacobians to be compatible with zero length springs
    • Have attachments also implement Constrainer? should be easy ...
  • Solvers
    • Integrate MUMPS solver as a backup to Pardiso and to allow for ARM architectures.
    • Finish integration of implicit friction solver.
    • Update Pardiso interface to allows solves with multiple right hand sides DONE
    • Sparse MLCP solver using Murty's method with block pivots and incremental basis updates DONE
    • Would be good to have an option that applies QR to the bilateral constraints, so as to handle over constrained systems. Not sure how expensive this would be.
    • Use non-stiff forces to properly complete the fullBackwardEuler. This will presumably require adding methods for computing and collecting non-stiff forces.
  • Documentation
    • Modeling guide
      • Custom rendering
      • How to control the pose of rigid bodies using probes
      • Describe SphericalLinear and SphericalCubic interpolation (per Michael Rainbow group need to animate frames)
      • Inverse modeling
      • Compliant contact: how to set damping DONE
      • FEM: materials, prestrain, voxelized and embedded support, node rest positions
      • More detail on how to set damping values
      • Improved detail on axial materials
      • collision handling: mention problems with redundant constraints and ways to fix this DONE
      • collision handling: issues with shell elements - closed contours, proper orientation
      • Persistent storage - how to ensure a model will properly save/load
    • UI Guide
      • How to edit model and script menus DONE
      • How to edit preferences and settings DONE
      • move Jython manual to the UI guide DONE
      • Jython scripting examples
      • mesh inspectors
      • update information about context-based editing
  • Persistent storage (ART files)
    • Fix getInitialState so that constraint forces are not zero. May have to get/set constraint forces on a per-component basis?
    • Improve scan times for FEM components (change node representations) DONE
    • Implement save/load for TrackingController
    • When saving files, do we want to assume that class aliases are portable? Or do we want to always write out the fully qualified class name?
    • Make components in core.renderables read/writable
    • Work out what to do about "attach()". Right now, we need to use attach to set things like viewer properties, which are reset after the model is loaded. Attach also lets us set things that aren't (currently) specified in a .art file. For viewer properties, one solution would be to reset the viewer *before* the model is loaded, so viewer props can be set in the build method, and then to also store viewer properties in the .art file.
  • Deployment
    • Implement Mathieu's request to place resource files under the class directory so they can be accessed from jar files
    • Refactor artisynth so that it can be run separately from the GUI
    • Implement automatic building and testing using Gradle
    • Move regression tests to core.test DONE
    • Make EXTERNAL_CLASSPATH editable from the application DONE
    • Change regression tests to check the state of all dynamic components, not just active ones.
  • Code cleanup
    • Remove constraint interface from FrameFem3dAttachment?
    • Remove set/getIndex() in FemNode3d
    • DynamicAttachmentWorker.reducedConstraints() - attachment blocks *should* be zeroed, but this causes problems because some attachments reused the blocks for other uses. Example: LinearPointConstraintTest.
    • Remove RigidCompositeBody
  • Small bugs and issues
    • Vertex3d.groupHalfEdgesByHardEdge = false causes hardEdgeNormalTest() and testIndicentHedgeSorting() to fail in PolygonalMeshTest.
    • Collision detection for rigid bodies does not always seem to resolve penetration as well as it can. See test/PlaneBoxContact. First contact does not correct as much as one might expect.
    • Fix attachment components so that backrefs and attachment settings are updated properly. This can fail if the slave component is not currently connected to the root model. Example: demos.test.FemSkinTest [ -twoFems ] fails to properly connect nodes of fem1 to fem0 if fem1 is not currently added to the mechmodel.
    • Need to figure out how to make FemModel3d call invalidateElementRotationData when position state changes.
    • When setting selection filter in code, using SelectionManager.addFilter(), the selection toolbar is not updated. Should be a way to do this.
    • Fix legacy behavior hack in FemModel3d(String name) that causes us to end up with softIncompMethod set to ELEMENT instead of AUTO
    • SparseBlockMatrix: need ability to remove rows and columns DONE