|  
 ArtiSynth Home
 
  Downloads
 Installation Instructions
 Learning Java
 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 RoadmapGeneral GoalsDeployment
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
 
 TasksUpdated May 16, 2022
  indicates high priorityindicates 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
 |