Installation Guides
Installing and Running ArtiSynth on Windows
1 Overview
2 Prerequisites
3 The ArtiSynth installation folder
4 Java JDK Requirements
4.1 Ensuring the JDK is visible to your system
5 Installing a Precompiled Release
5.1 Running from the file browser
5.2 Running from a terminal window
6 Installing from GitHub
6.1 Installation using Eclipse
6.2 Installation using Git for Windows
7 Loading and Running Models
7.1 Other ways to load models
7.2 Viewing and interacting with models
7.3 Command line arguments
8 Creating and Adding Models
8.1 Model packages
8.2 Compiling models
8.3 Finding models in the model menu
9 Settings and the user configuration folder
10 Integrating external models
10.1 Making ArtiSynth visible to the compiler
10.1.1 Eclipse development
10.1.2 Command line development
10.2 Making external models visible to ArtiSynth
10.2.1 Running from Eclipse
10.2.2 Using the external classpath
10.2.3 Setting the CLASSPATH environment variable
10.2.4 Using the -cp option
11 Installing artisynth_models
11.1 Installing a precompiled release
11.2 Installing from GitHub
11.2.1 Installation using Eclipse
11.2.2 Installation using Git for Windows
12 Updating ArtiSynth
12.1 Library updates
13 The Eclipse IDE
13.1 Installing Eclipse
13.1.1 Setting Eclipse to use the correct Java JDK
13.1.2 Preventing excess resource copying
13.2 Importing external projects
13.3 Configuring environment variables
13.3.1 Setting environment variables
13.4 Command line and JVM arguments
13.4.1 Setting command line and JVM arguments
13.5 Adding projects to the build path
13.6 Adding projects to the ArtiSynth launch configuration
14 Additional Information
14.1 Adding Directories to the System Path
14.1.1 Windows 10
14.1.2 Windows 8 and earlier
14.2 Environment variables
14.2.1 Setting environment variables
14.2.2 Typical environment settings
14.2.3 GitBash environment settings
14.3 ArtiSynth Libraries
14.4 The EXTCLASSPATH File
14.5 Quick Git Summary
Installing and Running ArtiSynth on MacOS
1 Overview
2 Prerequisites
3 The ArtiSynth installation folder
4 Java JDK Requirements
4.1 Ensuring the JDK is visible to your system
5 Installing a Precompiled Release
5.1 Running from the file browser
5.2 Running from a terminal window
6 Installing from GitHub
6.1 Installation using Eclipse
6.2 Installation using the command line
7 Loading and Running Models
7.1 Other ways to load models
7.2 Viewing and interacting with models
7.3 Command line arguments
8 Creating and Adding Models
8.1 Model packages
8.2 Compiling models
8.3 Finding models in the model menu
9 Settings and the user configuration folder
10 Integrating external models
10.1 Making ArtiSynth visible to the compiler
10.1.1 Eclipse development
10.1.2 Command line development
10.2 Making external models visible to ArtiSynth
10.2.1 Running from Eclipse
10.2.2 Using the external classpath
10.2.3 Setting the CLASSPATH environment variable
10.2.4 Using the -cp option
11 Installing artisynth_models
11.1 Installing a precompiled release
11.2 Installing from GitHub
11.2.1 Installation using Eclipse
11.2.2 Installation from the command line
12 Updating ArtiSynth
12.1 Library updates
13 The Eclipse IDE
13.1 Installing Eclipse
13.1.1 Setting Eclipse to use the correct Java JDK
13.1.2 Preventing excess resource copying
13.2 Importing external projects
13.3 Configuring environment variables
13.3.1 Setting environment variables
13.4 Command line and JVM arguments
13.4.1 Setting command line and JVM arguments
13.5 Adding projects to the build path
13.6 Adding projects to the ArtiSynth launch configuration
14 Additional Information
14.1 Adding Directories to the System Path
14.2 Environment variables
14.2.1 Example environment set up for bash
14.2.2 Example environment setup for csh or tcsh
14.3 ArtiSynth Libraries
14.4 The EXTCLASSPATH File
14.5 Quick Git Summary
Installing and Running ArtiSynth on Linux
1 Overview
2 Prerequisites
3 The ArtiSynth installation folder
4 Java JDK Requirements
4.1 Ensuring the JDK is visible to your system
5 Installing a Precompiled Release
5.1 Running from a terminal window
6 Installing from GitHub
6.1 Installation using Eclipse
6.2 Installation using the command line
7 Loading and Running Models
7.1 Other ways to load models
7.2 Viewing and interacting with models
7.3 Command line arguments
8 Creating and Adding Models
8.1 Model packages
8.2 Compiling models
8.3 Finding models in the model menu
9 Settings and the user configuration folder
10 Integrating external models
10.1 Making ArtiSynth visible to the compiler
10.1.1 Eclipse development
10.1.2 Command line development
10.2 Making external models visible to ArtiSynth
10.2.1 Running from Eclipse
10.2.2 Using the external classpath
10.2.3 Setting the CLASSPATH environment variable
10.2.4 Using the -cp option
11 Installing artisynth_models
11.1 Installing a precompiled release
11.2 Installing from GitHub
11.2.1 Installation using Eclipse
11.2.2 Installation from the command line
12 Updating ArtiSynth
12.1 Library updates
13 The Eclipse IDE
13.1 Installing Eclipse
13.1.1 Setting Eclipse to use the correct Java JDK
13.1.2 Preventing excess resource copying
13.2 Importing external projects
13.3 Configuring environment variables
13.3.1 Setting environment variables
13.4 Command line and JVM arguments
13.4.1 Setting command line and JVM arguments
13.5 Adding projects to the build path
13.6 Adding projects to the ArtiSynth launch configuration
14 Additional Information
14.1 Adding Directories to the System Path
14.2 Environment variables
14.2.1 Example environment set up for bash
14.2.2 Example environment setup for csh or tcsh
14.3 ArtiSynth Libraries
14.4 The EXTCLASSPATH File
14.5 Quick Git Summary
Installing and Running ArtiSynth on Windows
1 Overview
2 Prerequisites
3 The ArtiSynth installation folder
4 Java JDK Requirements
4.1 Ensuring the JDK is visible to your system
5 Installing a Precompiled Release
5.1 Running from the file browser
5.2 Running from a terminal window
6 Installing from GitHub
6.1 Installation using Eclipse
6.2 Installation using Git for Windows
7 Loading and Running Models
7.1 Other ways to load models
7.2 Viewing and interacting with models
7.3 Command line arguments
8 Creating and Adding Models
8.1 Model packages
8.2 Compiling models
8.3 Finding models in the model menu
9 Settings and the user configuration folder
10 Integrating external models
10.1 Making ArtiSynth visible to the compiler
10.1.1 Eclipse development
10.1.2 Command line development
10.2 Making external models visible to ArtiSynth
10.2.1 Running from Eclipse
10.2.2 Using the external classpath
10.2.3 Setting the CLASSPATH environment variable
10.2.4 Using the -cp option
11 Installing artisynth_models
11.1 Installing a precompiled release
11.2 Installing from GitHub
11.2.1 Installation using Eclipse
11.2.2 Installation using Git for Windows
12 Updating ArtiSynth
12.1 Library updates
13 The Eclipse IDE
13.1 Installing Eclipse
13.1.1 Setting Eclipse to use the correct Java JDK
13.1.2 Preventing excess resource copying
13.2 Importing external projects
13.3 Configuring environment variables
13.3.1 Setting environment variables
13.4 Command line and JVM arguments
13.4.1 Setting command line and JVM arguments
13.5 Adding projects to the build path
13.6 Adding projects to the ArtiSynth launch configuration
14 Additional Information
14.1 Adding Directories to the System Path
14.1.1 Windows 10
14.1.2 Windows 8 and earlier
14.2 Environment variables
14.2.1 Setting environment variables
14.2.2 Typical environment settings
14.2.3 GitBash environment settings
14.3 ArtiSynth Libraries
14.4 The EXTCLASSPATH File
14.5 Quick Git Summary
Installing and Running ArtiSynth on MacOS
1 Overview
2 Prerequisites
3 The ArtiSynth installation folder
4 Java JDK Requirements
4.1 Ensuring the JDK is visible to your system
5 Installing a Precompiled Release
5.1 Running from the file browser
5.2 Running from a terminal window
6 Installing from GitHub
6.1 Installation using Eclipse
6.2 Installation using the command line
7 Loading and Running Models
7.1 Other ways to load models
7.2 Viewing and interacting with models
7.3 Command line arguments
8 Creating and Adding Models
8.1 Model packages
8.2 Compiling models
8.3 Finding models in the model menu
9 Settings and the user configuration folder
10 Integrating external models
10.1 Making ArtiSynth visible to the compiler
10.1.1 Eclipse development
10.1.2 Command line development
10.2 Making external models visible to ArtiSynth
10.2.1 Running from Eclipse
10.2.2 Using the external classpath
10.2.3 Setting the CLASSPATH environment variable
10.2.4 Using the -cp option
11 Installing artisynth_models
11.1 Installing a precompiled release
11.2 Installing from GitHub
11.2.1 Installation using Eclipse
11.2.2 Installation from the command line
12 Updating ArtiSynth
12.1 Library updates
13 The Eclipse IDE
13.1 Installing Eclipse
13.1.1 Setting Eclipse to use the correct Java JDK
13.1.2 Preventing excess resource copying
13.2 Importing external projects
13.3 Configuring environment variables
13.3.1 Setting environment variables
13.4 Command line and JVM arguments
13.4.1 Setting command line and JVM arguments
13.5 Adding projects to the build path
13.6 Adding projects to the ArtiSynth launch configuration
14 Additional Information
14.1 Adding Directories to the System Path
14.2 Environment variables
14.2.1 Example environment set up for bash
14.2.2 Example environment setup for csh or tcsh
14.3 ArtiSynth Libraries
14.4 The EXTCLASSPATH File
14.5 Quick Git Summary
Installing and Running ArtiSynth on Linux
1 Overview
2 Prerequisites
3 The ArtiSynth installation folder
4 Java JDK Requirements
4.1 Ensuring the JDK is visible to your system
5 Installing a Precompiled Release
5.1 Running from a terminal window
6 Installing from GitHub
6.1 Installation using Eclipse
6.2 Installation using the command line
7 Loading and Running Models
7.1 Other ways to load models
7.2 Viewing and interacting with models
7.3 Command line arguments
8 Creating and Adding Models
8.1 Model packages
8.2 Compiling models
8.3 Finding models in the model menu
9 Settings and the user configuration folder
10 Integrating external models
10.1 Making ArtiSynth visible to the compiler
10.1.1 Eclipse development
10.1.2 Command line development
10.2 Making external models visible to ArtiSynth
10.2.1 Running from Eclipse
10.2.2 Using the external classpath
10.2.3 Setting the CLASSPATH environment variable
10.2.4 Using the -cp option
11 Installing artisynth_models
11.1 Installing a precompiled release
11.2 Installing from GitHub
11.2.1 Installation using Eclipse
11.2.2 Installation from the command line
12 Updating ArtiSynth
12.1 Library updates
13 The Eclipse IDE
13.1 Installing Eclipse
13.1.1 Setting Eclipse to use the correct Java JDK
13.1.2 Preventing excess resource copying
13.2 Importing external projects
13.3 Configuring environment variables
13.3.1 Setting environment variables
13.4 Command line and JVM arguments
13.4.1 Setting command line and JVM arguments
13.5 Adding projects to the build path
13.6 Adding projects to the ArtiSynth launch configuration
14 Additional Information
14.1 Adding Directories to the System Path
14.2 Environment variables
14.2.1 Example environment set up for bash
14.2.2 Example environment setup for csh or tcsh
14.3 ArtiSynth Libraries
14.4 The EXTCLASSPATH File
14.5 Quick Git Summary
ArtiSynth Modeling Guide
Preface
How to read this guide
Chapter 1 ArtiSynth Overview
1.1 System structure
1.1.1 Model components
1.1.2 The RootModel
1.1.3 Component path names
1.1.4 Model advancement
1.1.5 MechModel
1.2 Physics simulation
1.3 Basic packages
1.3.1 maspack
1.3.2 artisynth.core
1.3.3 artisynth.demos
1.4 Properties
1.4.1 Querying and setting property values
1.4.2 Property handles and paths
1.4.3 Composite and inheritable properties
1.5 Creating an application model
1.5.1 Implementing the build() method
1.5.2 Making models visible to ArtiSynth
1.5.3 Loading and running a model
Chapter 2 Supporting classes
2.1 Vectors and matrices
2.2 Rotations and transformations
2.3 Points and Vectors
2.4 Spatial vectors and inertias
2.5 Meshes
2.5.1 Mesh creation
2.5.2 Setting normals, colors, and textures
2.5.3 Automatic creation of normals and hard edges
2.5.4 Vertex and feature coloring
2.5.5 Reading and writing mesh files
2.5.6 Reading and writing normal and texture information
2.5.7 Constructive solid geometry
2.6 Reading source relative files
2.7 Reading and caching remote files
Chapter 3 Mechanical Models I
3.1 Springs and particles
3.1.1 Axial springs and materials
3.1.2 Example: a simple particle-spring model
3.1.3 Dynamic, parametric, and attached components
3.1.4 Custom axial materials
3.1.5 Damping parameters
3.2 Rigid bodies
3.2.1 Frame markers
3.2.2 Example: a simple rigid body-spring model
3.2.3 Creating rigid bodies
3.2.4 Pose and velocity
3.2.5 Inertia and the surface mesh
3.2.6 Coordinate frames and the center of mass
3.2.7 Damping parameters
3.2.8 Rendering rigid bodies
3.2.9 Multiple meshes
3.2.10 Example: a composite rigid body
3.3 Joints and connectors
3.3.1 Joints and coordinate frames
3.3.2 Joint coordinates, constraints, and errors
3.3.3 Creating joints
3.3.4 Working with coordinates
3.3.5 Coordinate limits and locking
3.3.6 Example: a simple hinge joint
3.3.7 Constraint forces
3.3.8 Compliance and regularization
3.3.9 Example: an overconstrained linkage
3.3.10 Rendering joints
3.4 Joint components
3.4.1 Hinge joint
3.4.2 Slider joint
3.4.3 Cylindrical joint
3.4.4 Slotted hinge joint
3.4.5 Universal joint
3.4.6 Skewed universal joint
3.4.7 Gimbal joint
3.4.8 Spherical joint
3.4.9 Planar joint
3.4.10 Planar translation joint
3.4.11 Ellipsoid joint
3.4.11.1 OpenSim compatibility
3.4.12 Solid joint
3.4.13 Planar Connector
3.4.14 Segmented Planar Connector
3.4.15 Legacy Joints
3.5 Frame springs
3.5.1 Frame spring coordinate frames
3.5.2 Frame materials
3.5.3 Creating frame springs
3.5.4 Example: two bodies connected by a frame spring
3.6 Other point-based forces
3.6.1 Forces between points and planes or meshes
3.6.2 Example: point plane forces
3.6.3 Example: point mesh forces
3.7 Attachments
3.7.1 Point attachments
3.7.2 Example: model with particle attachments
3.7.3 Frame attachments
3.7.4 Example: model with frame attachments
3.8 Mesh components
3.8.1 Fixed mesh bodies
3.8.2 Example: adding mesh bodies to MechModel
Chapter 4 Mechanical Models II
4.1 Simulation control properties
4.1.1 Simulation step size
4.1.2 Integrator
4.1.3 Position stabilization
4.2 Units
4.2.1 Scaling units
4.3 Render properties
4.3.1 Render property taxonomy
4.3.2 Setting render properties
4.3.3 Texture mapping
4.4 Custom rendering
4.4.1 Component render() methods
4.4.2 Implementing custom rendering
4.4.3 Example: rendering body forces
4.4.4 The prerender() method
4.5 Point-to-point muscles, tendons and ligaments
4.5.1 Simple muscle materials
4.5.1.1 SimpleAxialMuscle
4.5.1.2 ConstantAxialMuscle
4.5.1.3 LinearAxialMuscle
4.5.1.4 PeckAxialMuscle
4.5.1.5 BlemkerAxialMuscle
4.5.2 Example: muscle attached to a rigid body
4.5.3 Equilibrium muscles
4.5.4 Equilibrium muscle materials
4.5.4.1 Millard2012AxialMuscle
4.5.4.2 Thelen2003AxialMuscle
4.5.5 Tendons and ligaments
4.5.5.1 Millard2012AxialTendon
4.5.5.2 Thelen2003AxialTendon
4.5.5.3 Blankevoort1991AxialLigament
4.5.6 Example: muscles with separate tendons
4.6 Distance Grids and Components
4.7 Transforming geometry
4.7.1 Nonlinear transformations
4.7.2 Example: the FemModelDeformer class
4.7.3 Implementation and behavior
4.7.4 Use in model registration
4.8 General component arrangements
4.8.1 Container components
4.8.2 Example: a net formed from balls and springs
4.8.3 Adding containers to other models
4.9 Custom Joints
4.9.1 Joint constraints
4.9.2 Unilateral constraint engagement
4.9.3 Implementing a custom joint
4.9.4 Implementing a custom coupling
4.9.5 Example: a simple custom joint
Chapter 5 Simulation Control
5.1 Control Panels
5.1.1 General principles
5.1.2 Example: Creating a simple control panel
5.1.3 Example: Controlling properties in multiple components
5.2 Custom properties
5.2.1 Adding properties to a component
5.2.2 Example: a visibility property
5.3 Controllers and monitors
5.3.1 Implementation
5.3.2 Example: A controller to move a point
5.4 Probes
5.4.1 Numeric probe structure
5.4.2 Creating probes in code
5.4.3 Example: probes connected to SimpleMuscle
5.4.4 Data file format
5.4.5 Adding probe data in-line
5.4.6 Smoothing probe data
5.4.7 Numeric monitor probes
5.4.8 Numeric control probes
5.5 Application-Defined Menu Items
Chapter 6 Finite Element Models
6.1 Overview
6.1.1 FemModel3d
6.1.2 Component Structure
6.1.2.1 Nodes
6.1.2.2 Elements
6.1.2.3 Shell elements
6.1.2.4 Meshes
6.1.3 Materials
6.1.4 Boundary conditions
6.2 FEM model creation
6.2.1 Factory methods
6.2.2 Loading external FEM meshes
6.2.3 Generating from surfaces
6.2.4 Building elements in code
6.2.5 Example: a simple beam model
6.3 FEM Geometry
6.3.1 Surface meshes
6.3.2 Embedding geometry within an FEM
6.3.3 Example: a beam with an embedded sphere
6.4 Connecting FEM models to other components
6.4.1 Connecting nodes to rigid bodies or particles
6.4.2 Example: connecting a beam to a block
6.4.3 Connecting nodes directly to elements
6.4.4 Example: connecting two FEMs together
6.4.5 Finding which nodes to attach
6.4.6 Selecting nodes in the viewer
6.4.7 Example: two bodies connected by an FEM ?spring?
6.4.8 Nodal-based attachments
6.4.9 Example: element vs. nodal-based attachments
6.5 FEM markers
6.5.1 Example: attaching an FEM beam to a muscle
6.6 Frame attachments
6.6.1 Example: attaching frames to an FEM beam
6.6.2 Adding joints to FEM models
6.6.3 Example: two FEM beams connected by a joint
6.7 Incompressibility
6.7.1 Volume regions and locking
6.7.2 Hard incompressibility
6.7.3 Soft incompressibility
6.7.4 Incompressibility and linear materials
6.7.5 Using incompressibility in practice
6.8 Varying and augmenting material behaviors
6.8.1 Example: FEM sheet with a stiff spine
6.9 Muscle activated FEM models
6.9.1 FemMuscleModel
6.9.1.1 Bundles
6.9.1.2 Exciters
6.9.2 Fibre-based muscles
6.9.3 Material-based muscles
6.9.4 Example: toy FEM muscle model
6.9.5 Example: comparison with two beam examples
6.10 Material types
6.10.1 Linear
6.10.1.1 LinearMaterial
6.10.1.2 TransverseLinearMaterial
6.10.1.3 AnisotropicLinearMaterial
6.10.2 Hyperelastic materials
6.10.2.1 St Venant-Kirchoff material
6.10.2.2 Neo-Hookean material
6.10.2.3 Incompressible neo-Hookean material
6.10.2.4 Mooney-Rivlin material
6.10.2.5 Ogden material
6.10.2.6 Fung orthotropic material
6.10.2.7 Yeoh material
6.10.2.8 Arruda-Boyce material
6.10.2.9 Veronda-Westmann material
6.10.2.10 Incompressible material
6.10.3 Muscle materials
6.10.3.1 Generic muscle
6.10.3.2 Blemker muscle
6.10.3.3 Full Blemker muscle
6.10.3.4 Simple force muscle
6.11 Stress, strain and strain energy
6.11.1 Computing nodal values
6.11.2 Scalar stress/strain measures
6.11.3 Strain energy
6.12 Rendering and Visualizations
6.12.1 Nodes
6.12.2 Elements
6.12.3 Surface and other meshes
6.12.4 FEM-based muscles
6.12.5 Color bars
6.12.6 Example: stress/strain plotting with color bars
6.12.7 Cut planes
6.12.8 Example: FEM model with a cut plane
Chapter 7 Fields
7.1 Grid fields
7.2 FEM fields
7.2.1 Nodal fields
7.2.2 Element fields
7.2.3 Sub-element fields
7.3 Mesh fields
7.3.1 Vertex fields
7.3.2 Face fields
7.4 Fields for VectorNd, MatrixNd and Vector3d
7.5 Binding material properties
7.5.1 Example: FEM with variable stiffness
7.5.2 Example: specifying FEM muscle directions
7.6 Visualizing fields
7.6.1 Scalar fields
7.6.2 Vector fields
7.6.3 Grid fields
7.6.4 Render meshes
7.6.5 Example: Visualizing a scalar nodal field
7.6.6 Examples: Visualizing other fields
Chapter 8 Contact and Collision
8.1 Enabling collisions
8.1.1 Collisions between specific bodies
8.1.2 Default collisions between groups
8.1.3 Example: collision with a plane
8.1.4 Collisions for FEM models
8.1.5 Example: FEM models and rigid bodies
8.2 Collision behaviors and collidability
8.2.1 Collision behaviors
8.2.2 Collidability
8.3 Collision meshes and compound collidables
8.3.1 Example: redefining a rigid body collision mesh
8.3.2 Compound collidables and self-collision
8.3.3 Example: FEM model with self-collision
8.3.4 Collidable bodies
8.3.5 Nested MechModels
8.4 Implementation
8.4.1 Contact methods
8.4.1.1 Contour region
8.4.1.2 Vertex penetration
8.4.1.3 Setting the contact method
8.4.2 Collider types
8.4.2.1 Collision meshes and signed distance grids
8.5 Contact rendering
8.5.1 Example: rendering normals and contours
8.5.2 Example: rendering a color map
8.5.3 Example: rendering contact pressures
8.6 Overconstrained contact
8.6.1 Constraint reduction
8.7 Contact regularization
8.7.1 Compliant contact
8.7.2 Contact force behaviors
8.7.2.1 Computing forces based on pressure
8.7.3 Elastic foundation contact
8.7.4 Example: elastic foundation contact of a ball in a bowl
8.7.5 Example: binding EFC properties to fields
8.8 Monitoring collisions
8.8.1 Collision responses
8.8.2 Available information
8.8.3 Example: monitoring contact forces
8.9 Tips and limitations
8.9.1 Contact jitter
8.9.2 Passing through objects
8.9.3 Stray vertices
8.9.4 Coulomb friction and stability
Chapter 9 Muscle Wrapping and Via Points
9.1 Via Points
9.1.1 Example: a muscle with via points
9.2 Obstacle Wrapping
9.2.1 Example: wrapping around a cylinder
9.3 General Surfaces and Distance Grids
9.3.1 Example: wrapping around a bone
9.4 Initializing the Wrap Path
9.4.1 Example: wrapping around a torus
9.5 Alternate Wrapping Surfaces
9.5.1 Example: wrapping for a finger joint
9.5.2 Example: toy muscle arm with wrapping
9.6 Tuning the Wrapping Behavior
Chapter 10 Inverse Simulation
10.1 Overview
10.1.1 Tracking controller operation
10.1.2 Motion tracking
10.1.2.1 Chase control
10.1.2.2 PD control
10.1.3 Generating excitations using a quadratic program
10.1.4 Force tracking
10.1.5 Incremental computation
10.1.6 Setting up the tracking controller
10.1.7 Example: moving a point with multiple Muscles
10.2 Tracking controller components
10.2.1 Exciters
10.2.1.1 Excitation coloring
10.2.2 Motion targets
10.2.2.1 Motion target term
10.2.2.2 Motion target rendering
10.2.3 Regularization
10.2.3.1 L2 Regularization
10.2.3.2 Excitation damping
10.2.4 Example: controlling ToyMuscleArm
10.2.5 Example: controlling an FEM muscle model
10.2.6 Force effector targets
10.2.6.1 Force effector term
10.2.7 Example: controlling tension in a spring
10.2.8 Target components
10.2.9 Point and frame exciters
10.2.10 Example: controlling ToyMuscleArm with FrameExciters
10.3 Tracking controller structure and settings
10.3.1 Controller structure
10.3.2 Controller properties
10.3.3 Motion term properties
10.3.4 Properties for other cost terms
10.4 Managing probes and control panels
10.4.1 Inverse simulation probes
10.4.2 Example: using InverseManager probes
10.4.3 Inverse control panel
10.5 Caveats and limitations
Chapter 11 Skinning
11.1 Implementation
11.2 Creating a skin mesh
11.2.1 Example: skinning over rigid bodies
11.3 Computing weights
11.3.1 Setting weights explicitly
11.4 Markers and point attachments
11.4.1 Markers
11.4.2 Point attachments
11.4.3 Example: skinning rigid bodies and FEM models
11.4.4 Mesh-based markers and attachments
11.5 Resolution and Limitations
11.6 Collisions
11.6.1 Example: collision with a cylinder
11.7 Application to muscle wrapping
11.7.1 Example: wrapping for a finger joint
Chapter 12 DICOM Images
12.1 The DICOM file format
12.2 The DICOM classes
12.2.1 DicomElement
12.2.2 DicomHeader
12.2.3 DicomPixelBuffer
12.2.4 DicomSlice
12.2.5 DicomImage
12.3 Loading a DicomImage
12.3.1 Time-dependent images
12.3.2 Image formats
12.4 The DicomViewer
12.5 DICOM example
Appendix A Mathematical Review
A.1 Rotation transforms
A.2 Rigid transforms
A.3 Affine transforms
A.4 Rotational velocity
A.5 Spatial velocities and forces
A.6 Spatial inertia
Bibliography
Preface
How to read this guide
Chapter 1 ArtiSynth Overview
1.1 System structure
1.1.1 Model components
1.1.2 The RootModel
1.1.3 Component path names
1.1.4 Model advancement
1.1.5 MechModel
1.2 Physics simulation
1.3 Basic packages
1.3.1 maspack
1.3.2 artisynth.core
1.3.3 artisynth.demos
1.4 Properties
1.4.1 Querying and setting property values
1.4.2 Property handles and paths
1.4.3 Composite and inheritable properties
1.5 Creating an application model
1.5.1 Implementing the build() method
1.5.2 Making models visible to ArtiSynth
1.5.3 Loading and running a model
Chapter 2 Supporting classes
2.1 Vectors and matrices
2.2 Rotations and transformations
2.3 Points and Vectors
2.4 Spatial vectors and inertias
2.5 Meshes
2.5.1 Mesh creation
2.5.2 Setting normals, colors, and textures
2.5.3 Automatic creation of normals and hard edges
2.5.4 Vertex and feature coloring
2.5.5 Reading and writing mesh files
2.5.6 Reading and writing normal and texture information
2.5.7 Constructive solid geometry
2.6 Reading source relative files
2.7 Reading and caching remote files
Chapter 3 Mechanical Models I
3.1 Springs and particles
3.1.1 Axial springs and materials
3.1.2 Example: a simple particle-spring model
3.1.3 Dynamic, parametric, and attached components
3.1.4 Custom axial materials
3.1.5 Damping parameters
3.2 Rigid bodies
3.2.1 Frame markers
3.2.2 Example: a simple rigid body-spring model
3.2.3 Creating rigid bodies
3.2.4 Pose and velocity
3.2.5 Inertia and the surface mesh
3.2.6 Coordinate frames and the center of mass
3.2.7 Damping parameters
3.2.8 Rendering rigid bodies
3.2.9 Multiple meshes
3.2.10 Example: a composite rigid body
3.3 Joints and connectors
3.3.1 Joints and coordinate frames
3.3.2 Joint coordinates, constraints, and errors
3.3.3 Creating joints
3.3.4 Working with coordinates
3.3.5 Coordinate limits and locking
3.3.6 Example: a simple hinge joint
3.3.7 Constraint forces
3.3.8 Compliance and regularization
3.3.9 Example: an overconstrained linkage
3.3.10 Rendering joints
3.4 Joint components
3.4.1 Hinge joint
3.4.2 Slider joint
3.4.3 Cylindrical joint
3.4.4 Slotted hinge joint
3.4.5 Universal joint
3.4.6 Skewed universal joint
3.4.7 Gimbal joint
3.4.8 Spherical joint
3.4.9 Planar joint
3.4.10 Planar translation joint
3.4.11 Ellipsoid joint
3.4.11.1 OpenSim compatibility
3.4.12 Solid joint
3.4.13 Planar Connector
3.4.14 Segmented Planar Connector
3.4.15 Legacy Joints
3.5 Frame springs
3.5.1 Frame spring coordinate frames
3.5.2 Frame materials
3.5.3 Creating frame springs
3.5.4 Example: two bodies connected by a frame spring
3.6 Other point-based forces
3.6.1 Forces between points and planes or meshes
3.6.2 Example: point plane forces
3.6.3 Example: point mesh forces
3.7 Attachments
3.7.1 Point attachments
3.7.2 Example: model with particle attachments
3.7.3 Frame attachments
3.7.4 Example: model with frame attachments
3.8 Mesh components
3.8.1 Fixed mesh bodies
3.8.2 Example: adding mesh bodies to MechModel
Chapter 4 Mechanical Models II
4.1 Simulation control properties
4.1.1 Simulation step size
4.1.2 Integrator
4.1.3 Position stabilization
4.2 Units
4.2.1 Scaling units
4.3 Render properties
4.3.1 Render property taxonomy
4.3.2 Setting render properties
4.3.3 Texture mapping
4.4 Custom rendering
4.4.1 Component render() methods
4.4.2 Implementing custom rendering
4.4.3 Example: rendering body forces
4.4.4 The prerender() method
4.5 Point-to-point muscles, tendons and ligaments
4.5.1 Simple muscle materials
4.5.1.1 SimpleAxialMuscle
4.5.1.2 ConstantAxialMuscle
4.5.1.3 LinearAxialMuscle
4.5.1.4 PeckAxialMuscle
4.5.1.5 BlemkerAxialMuscle
4.5.2 Example: muscle attached to a rigid body
4.5.3 Equilibrium muscles
4.5.4 Equilibrium muscle materials
4.5.4.1 Millard2012AxialMuscle
4.5.4.2 Thelen2003AxialMuscle
4.5.5 Tendons and ligaments
4.5.5.1 Millard2012AxialTendon
4.5.5.2 Thelen2003AxialTendon
4.5.5.3 Blankevoort1991AxialLigament
4.5.6 Example: muscles with separate tendons
4.6 Distance Grids and Components
4.7 Transforming geometry
4.7.1 Nonlinear transformations
4.7.2 Example: the FemModelDeformer class
4.7.3 Implementation and behavior
4.7.4 Use in model registration
4.8 General component arrangements
4.8.1 Container components
4.8.2 Example: a net formed from balls and springs
4.8.3 Adding containers to other models
4.9 Custom Joints
4.9.1 Joint constraints
4.9.2 Unilateral constraint engagement
4.9.3 Implementing a custom joint
4.9.4 Implementing a custom coupling
4.9.5 Example: a simple custom joint
Chapter 5 Simulation Control
5.1 Control Panels
5.1.1 General principles
5.1.2 Example: Creating a simple control panel
5.1.3 Example: Controlling properties in multiple components
5.2 Custom properties
5.2.1 Adding properties to a component
5.2.2 Example: a visibility property
5.3 Controllers and monitors
5.3.1 Implementation
5.3.2 Example: A controller to move a point
5.4 Probes
5.4.1 Numeric probe structure
5.4.2 Creating probes in code
5.4.3 Example: probes connected to SimpleMuscle
5.4.4 Data file format
5.4.5 Adding probe data in-line
5.4.6 Smoothing probe data
5.4.7 Numeric monitor probes
5.4.8 Numeric control probes
5.5 Application-Defined Menu Items
Chapter 6 Finite Element Models
6.1 Overview
6.1.1 FemModel3d
6.1.2 Component Structure
6.1.2.1 Nodes
6.1.2.2 Elements
6.1.2.3 Shell elements
6.1.2.4 Meshes
6.1.3 Materials
6.1.4 Boundary conditions
6.2 FEM model creation
6.2.1 Factory methods
6.2.2 Loading external FEM meshes
6.2.3 Generating from surfaces
6.2.4 Building elements in code
6.2.5 Example: a simple beam model
6.3 FEM Geometry
6.3.1 Surface meshes
6.3.2 Embedding geometry within an FEM
6.3.3 Example: a beam with an embedded sphere
6.4 Connecting FEM models to other components
6.4.1 Connecting nodes to rigid bodies or particles
6.4.2 Example: connecting a beam to a block
6.4.3 Connecting nodes directly to elements
6.4.4 Example: connecting two FEMs together
6.4.5 Finding which nodes to attach
6.4.6 Selecting nodes in the viewer
6.4.7 Example: two bodies connected by an FEM ?spring?
6.4.8 Nodal-based attachments
6.4.9 Example: element vs. nodal-based attachments
6.5 FEM markers
6.5.1 Example: attaching an FEM beam to a muscle
6.6 Frame attachments
6.6.1 Example: attaching frames to an FEM beam
6.6.2 Adding joints to FEM models
6.6.3 Example: two FEM beams connected by a joint
6.7 Incompressibility
6.7.1 Volume regions and locking
6.7.2 Hard incompressibility
6.7.3 Soft incompressibility
6.7.4 Incompressibility and linear materials
6.7.5 Using incompressibility in practice
6.8 Varying and augmenting material behaviors
6.8.1 Example: FEM sheet with a stiff spine
6.9 Muscle activated FEM models
6.9.1 FemMuscleModel
6.9.1.1 Bundles
6.9.1.2 Exciters
6.9.2 Fibre-based muscles
6.9.3 Material-based muscles
6.9.4 Example: toy FEM muscle model
6.9.5 Example: comparison with two beam examples
6.10 Material types
6.10.1 Linear
6.10.1.1 LinearMaterial
6.10.1.2 TransverseLinearMaterial
6.10.1.3 AnisotropicLinearMaterial
6.10.2 Hyperelastic materials
6.10.2.1 St Venant-Kirchoff material
6.10.2.2 Neo-Hookean material
6.10.2.3 Incompressible neo-Hookean material
6.10.2.4 Mooney-Rivlin material
6.10.2.5 Ogden material
6.10.2.6 Fung orthotropic material
6.10.2.7 Yeoh material
6.10.2.8 Arruda-Boyce material
6.10.2.9 Veronda-Westmann material
6.10.2.10 Incompressible material
6.10.3 Muscle materials
6.10.3.1 Generic muscle
6.10.3.2 Blemker muscle
6.10.3.3 Full Blemker muscle
6.10.3.4 Simple force muscle
6.11 Stress, strain and strain energy
6.11.1 Computing nodal values
6.11.2 Scalar stress/strain measures
6.11.3 Strain energy
6.12 Rendering and Visualizations
6.12.1 Nodes
6.12.2 Elements
6.12.3 Surface and other meshes
6.12.4 FEM-based muscles
6.12.5 Color bars
6.12.6 Example: stress/strain plotting with color bars
6.12.7 Cut planes
6.12.8 Example: FEM model with a cut plane
Chapter 7 Fields
7.1 Grid fields
7.2 FEM fields
7.2.1 Nodal fields
7.2.2 Element fields
7.2.3 Sub-element fields
7.3 Mesh fields
7.3.1 Vertex fields
7.3.2 Face fields
7.4 Fields for VectorNd, MatrixNd and Vector3d
7.5 Binding material properties
7.5.1 Example: FEM with variable stiffness
7.5.2 Example: specifying FEM muscle directions
7.6 Visualizing fields
7.6.1 Scalar fields
7.6.2 Vector fields
7.6.3 Grid fields
7.6.4 Render meshes
7.6.5 Example: Visualizing a scalar nodal field
7.6.6 Examples: Visualizing other fields
Chapter 8 Contact and Collision
8.1 Enabling collisions
8.1.1 Collisions between specific bodies
8.1.2 Default collisions between groups
8.1.3 Example: collision with a plane
8.1.4 Collisions for FEM models
8.1.5 Example: FEM models and rigid bodies
8.2 Collision behaviors and collidability
8.2.1 Collision behaviors
8.2.2 Collidability
8.3 Collision meshes and compound collidables
8.3.1 Example: redefining a rigid body collision mesh
8.3.2 Compound collidables and self-collision
8.3.3 Example: FEM model with self-collision
8.3.4 Collidable bodies
8.3.5 Nested MechModels
8.4 Implementation
8.4.1 Contact methods
8.4.1.1 Contour region
8.4.1.2 Vertex penetration
8.4.1.3 Setting the contact method
8.4.2 Collider types
8.4.2.1 Collision meshes and signed distance grids
8.5 Contact rendering
8.5.1 Example: rendering normals and contours
8.5.2 Example: rendering a color map
8.5.3 Example: rendering contact pressures
8.6 Overconstrained contact
8.6.1 Constraint reduction
8.7 Contact regularization
8.7.1 Compliant contact
8.7.2 Contact force behaviors
8.7.2.1 Computing forces based on pressure
8.7.3 Elastic foundation contact
8.7.4 Example: elastic foundation contact of a ball in a bowl
8.7.5 Example: binding EFC properties to fields
8.8 Monitoring collisions
8.8.1 Collision responses
8.8.2 Available information
8.8.3 Example: monitoring contact forces
8.9 Tips and limitations
8.9.1 Contact jitter
8.9.2 Passing through objects
8.9.3 Stray vertices
8.9.4 Coulomb friction and stability
Chapter 9 Muscle Wrapping and Via Points
9.1 Via Points
9.1.1 Example: a muscle with via points
9.2 Obstacle Wrapping
9.2.1 Example: wrapping around a cylinder
9.3 General Surfaces and Distance Grids
9.3.1 Example: wrapping around a bone
9.4 Initializing the Wrap Path
9.4.1 Example: wrapping around a torus
9.5 Alternate Wrapping Surfaces
9.5.1 Example: wrapping for a finger joint
9.5.2 Example: toy muscle arm with wrapping
9.6 Tuning the Wrapping Behavior
Chapter 10 Inverse Simulation
10.1 Overview
10.1.1 Tracking controller operation
10.1.2 Motion tracking
10.1.2.1 Chase control
10.1.2.2 PD control
10.1.3 Generating excitations using a quadratic program
10.1.4 Force tracking
10.1.5 Incremental computation
10.1.6 Setting up the tracking controller
10.1.7 Example: moving a point with multiple Muscles
10.2 Tracking controller components
10.2.1 Exciters
10.2.1.1 Excitation coloring
10.2.2 Motion targets
10.2.2.1 Motion target term
10.2.2.2 Motion target rendering
10.2.3 Regularization
10.2.3.1 L2 Regularization
10.2.3.2 Excitation damping
10.2.4 Example: controlling ToyMuscleArm
10.2.5 Example: controlling an FEM muscle model
10.2.6 Force effector targets
10.2.6.1 Force effector term
10.2.7 Example: controlling tension in a spring
10.2.8 Target components
10.2.9 Point and frame exciters
10.2.10 Example: controlling ToyMuscleArm with FrameExciters
10.3 Tracking controller structure and settings
10.3.1 Controller structure
10.3.2 Controller properties
10.3.3 Motion term properties
10.3.4 Properties for other cost terms
10.4 Managing probes and control panels
10.4.1 Inverse simulation probes
10.4.2 Example: using InverseManager probes
10.4.3 Inverse control panel
10.5 Caveats and limitations
Chapter 11 Skinning
11.1 Implementation
11.2 Creating a skin mesh
11.2.1 Example: skinning over rigid bodies
11.3 Computing weights
11.3.1 Setting weights explicitly
11.4 Markers and point attachments
11.4.1 Markers
11.4.2 Point attachments
11.4.3 Example: skinning rigid bodies and FEM models
11.4.4 Mesh-based markers and attachments
11.5 Resolution and Limitations
11.6 Collisions
11.6.1 Example: collision with a cylinder
11.7 Application to muscle wrapping
11.7.1 Example: wrapping for a finger joint
Chapter 12 DICOM Images
12.1 The DICOM file format
12.2 The DICOM classes
12.2.1 DicomElement
12.2.2 DicomHeader
12.2.3 DicomPixelBuffer
12.2.4 DicomSlice
12.2.5 DicomImage
12.3 Loading a DicomImage
12.3.1 Time-dependent images
12.3.2 Image formats
12.4 The DicomViewer
12.5 DICOM example
Appendix A Mathematical Review
A.1 Rotation transforms
A.2 Rigid transforms
A.3 Affine transforms
A.4 Rotational velocity
A.5 Spatial velocities and forces
A.6 Spatial inertia
Bibliography
ArtiSynth User Interface Guide
1 Introduction
1.1 User configuration folder
2 Loading, Simulating and Saving Models
2.1 Loading from the model menu
2.2 Loading directly by class
2.3 Loading from a file
2.4 Loading recent models
2.5 Setting a startup model
2.5.1 Specifying models from the command line
2.6 Simulating a model
2.7 Other toolbar controls
2.8 Saving a model
2.9 Setting the external classpath
2.10 The ArtiSynth working folder
3 The Viewer
3.1 Viewer Toolbar
3.2 Viewpoint control
3.3 Adding additional viewers
3.4 World coordinate axes
3.5 Orthographic vs. perspective projection
3.6 Viewer grid
3.6.1 Grid units
3.6.2 Axis labeling
3.6.3 Grid properties
3.7 Clipping planes
3.7.1 Adding and removing
3.7.2 Moving
3.7.3 Offsets
3.7.4 Enabling/disabling
3.7.5 Slicing mode
3.7.6 Other features
3.8 Indicating 3D positions with the mouse
3.9 Viewer properties
3.9.1 Viewer-specific properties
3.10 Mouse Bindings
3.11 Keyboard shortcuts
4 Component Navigation and Selection
4.1 The component hierarchy
4.1.1 Component names and numbers
4.1.2 Component path names
4.2 Navigation panel selection
4.2.1 Large numbers of nameless components
4.3 Viewer selection
4.3.1 Click and box selection
4.3.2 Elliptic selection
4.3.3 Selection filtering
4.4 Selection display
4.5 Selecting parent and ancestor components
4.6 Highlighting selected components
4.7 Selecting FEM nodes
5 Model Manipulation
5.1 Dragger fixtures
5.2 Transformer tools
5.2.1 Constrained transformation
5.2.2 Transformer repositioning
5.2.3 Changing the transformer base frame
5.2.4 Flipping transformer axes forward
5.2.5 Resizing transformers
5.3 Pull manipulation
5.4 Marker tool
6 Editing Properties
6.1 Property panels
6.1.1 Inheritable properties
6.2 Render properties
6.2.1 Render property settings
7 The Timeline
7.1 Probes and waypoints
7.2 Basic timeline structure
7.2.1 Play controls
7.2.2 Tracks
7.3 Viewing and setting waypoints
7.3.1 Waypoints
7.3.2 Breakpoints
7.3.3 Saving and loading
7.4 Tracks and probes
7.4.1 Creating, moving, and deleting tracks
7.4.2 Muting tracks
7.4.3 Expanding tracks
7.4.4 Grouping tracks
7.5 Numeric probe displays
7.5.1 Setting the range and display properties
7.5.2 Large displays
7.5.3 Cloning displays and exporting plots
7.5.4 Legends and visibility control
7.5.5 Editing and scaling data
7.5.6 Smoothing data
7.5.7 Interpolation control
8 Saving and Loading Probes
8.1 Saving and loading probe data
8.2 Exporting numeric probe data
8.3 Saving and loading all probes
9 Adding and Editing Numeric Probes
9.1 Adding output probes
9.1.1 Creating a simple probe
9.1.2 General output probes
9.1.3 Using the probe editor
9.2 Adding input probes
9.2.1 Creating a simple probe
9.2.2 General input probes
9.2.3 Using the probe editor
9.3 Setting probe properties
10 Point Tracing
11 Settings and Preferences
11.1 Settings
11.1.1 Interaction
11.1.2 Simulation
11.2 Preferences
11.3 Layout preferences
12 Jython Interaction and Scripting
12.1 Querying ArtiSynth structures and models
12.2 Object creation and importing classes
12.3 Running simulations and scripting
12.4 Using the script menu
12.5 Selecting a script file
12.6 Specifying scripts on the command line
12.7 Built-in functions
13 Customizing the Model and Script Menus
13.1 Model menu editor
13.2 Script menu editor
13.3 Menu entry types
13.3.1 Model
13.3.2 Package
13.3.3 Demo file
13.3.4 Script
13.3.5 Script folder
13.3.6 Submenu
13.3.7 Label
13.3.8 Separator
13.4 Command line options
13.5 Demo file text format
13.6 XML Menu Format
13.6.1 The root elements
13.6.2 Model element
13.6.3 Package element
13.6.4 DemoFile element
13.6.5 Script element
13.6.6 ScriptFolder element
13.6.7 Submenu element
13.6.8 Label element
13.6.9 Separator element
13.6.10 Hiding elements
14 Making Movies
14.1 Recorder tab
14.1.1 Region to capture
14.1.2 Record options
14.1.3 Other options
14.2 Encoder tab
14.2.1 Encoder options
14.2.2 Customizing the encoder command
14.3 Output size options
14.4 Advanced tab
14.5 Saving movie preferences
14.6 Installing FFmpeg
15 Control Panels
15.1 Creating control panels
15.1.1 Composite property widgets
15.1.2 Widgets for subproperties
15.2 Editing control panels
15.3 Live updating
16 Component Editing
16.1 Generic edit operations
16.1.1 Deletion
16.1.2 Duplication
16.1.3 Undo
16.2 Editing panels
16.3 Specifying position, orientation, and scaling
16.4 Editing MechModels
16.4.1 Adding finite element models
16.4.2 Adding rigid bodies
16.4.3 Adding frame markers
16.4.4 Adding particles
16.4.5 Adding axial springs and muscles
16.4.6 Adding rigid body connectors
16.4.7 Attaching particles to particles
16.4.8 Attaching particles to rigid bodies
16.4.9 Collision handling
16.5 Editing rigid bodies
16.5.1 Geometry and inertia
16.6 Editing FEM models
16.6.1 Adding FEM markers
16.6.2 Adding muscle bundles
16.7 Editing muscle bundles
16.7.1 Adding fibres
16.7.2 Adding element references
16.7.3 Automatically setting elements and directions
16.7.4 Removing fibres and element references
16.8 Editing muscle exciters
16.9 Editing root models
1 Introduction
1.1 User configuration folder
2 Loading, Simulating and Saving Models
2.1 Loading from the model menu
2.2 Loading directly by class
2.3 Loading from a file
2.4 Loading recent models
2.5 Setting a startup model
2.5.1 Specifying models from the command line
2.6 Simulating a model
2.7 Other toolbar controls
2.8 Saving a model
2.9 Setting the external classpath
2.10 The ArtiSynth working folder
3 The Viewer
3.1 Viewer Toolbar
3.2 Viewpoint control
3.3 Adding additional viewers
3.4 World coordinate axes
3.5 Orthographic vs. perspective projection
3.6 Viewer grid
3.6.1 Grid units
3.6.2 Axis labeling
3.6.3 Grid properties
3.7 Clipping planes
3.7.1 Adding and removing
3.7.2 Moving
3.7.3 Offsets
3.7.4 Enabling/disabling
3.7.5 Slicing mode
3.7.6 Other features
3.8 Indicating 3D positions with the mouse
3.9 Viewer properties
3.9.1 Viewer-specific properties
3.10 Mouse Bindings
3.11 Keyboard shortcuts
4 Component Navigation and Selection
4.1 The component hierarchy
4.1.1 Component names and numbers
4.1.2 Component path names
4.2 Navigation panel selection
4.2.1 Large numbers of nameless components
4.3 Viewer selection
4.3.1 Click and box selection
4.3.2 Elliptic selection
4.3.3 Selection filtering
4.4 Selection display
4.5 Selecting parent and ancestor components
4.6 Highlighting selected components
4.7 Selecting FEM nodes
5 Model Manipulation
5.1 Dragger fixtures
5.2 Transformer tools
5.2.1 Constrained transformation
5.2.2 Transformer repositioning
5.2.3 Changing the transformer base frame
5.2.4 Flipping transformer axes forward
5.2.5 Resizing transformers
5.3 Pull manipulation
5.4 Marker tool
6 Editing Properties
6.1 Property panels
6.1.1 Inheritable properties
6.2 Render properties
6.2.1 Render property settings
7 The Timeline
7.1 Probes and waypoints
7.2 Basic timeline structure
7.2.1 Play controls
7.2.2 Tracks
7.3 Viewing and setting waypoints
7.3.1 Waypoints
7.3.2 Breakpoints
7.3.3 Saving and loading
7.4 Tracks and probes
7.4.1 Creating, moving, and deleting tracks
7.4.2 Muting tracks
7.4.3 Expanding tracks
7.4.4 Grouping tracks
7.5 Numeric probe displays
7.5.1 Setting the range and display properties
7.5.2 Large displays
7.5.3 Cloning displays and exporting plots
7.5.4 Legends and visibility control
7.5.5 Editing and scaling data
7.5.6 Smoothing data
7.5.7 Interpolation control
8 Saving and Loading Probes
8.1 Saving and loading probe data
8.2 Exporting numeric probe data
8.3 Saving and loading all probes
9 Adding and Editing Numeric Probes
9.1 Adding output probes
9.1.1 Creating a simple probe
9.1.2 General output probes
9.1.3 Using the probe editor
9.2 Adding input probes
9.2.1 Creating a simple probe
9.2.2 General input probes
9.2.3 Using the probe editor
9.3 Setting probe properties
10 Point Tracing
11 Settings and Preferences
11.1 Settings
11.1.1 Interaction
11.1.2 Simulation
11.2 Preferences
11.3 Layout preferences
12 Jython Interaction and Scripting
12.1 Querying ArtiSynth structures and models
12.2 Object creation and importing classes
12.3 Running simulations and scripting
12.4 Using the script menu
12.5 Selecting a script file
12.6 Specifying scripts on the command line
12.7 Built-in functions
13 Customizing the Model and Script Menus
13.1 Model menu editor
13.2 Script menu editor
13.3 Menu entry types
13.3.1 Model
13.3.2 Package
13.3.3 Demo file
13.3.4 Script
13.3.5 Script folder
13.3.6 Submenu
13.3.7 Label
13.3.8 Separator
13.4 Command line options
13.5 Demo file text format
13.6 XML Menu Format
13.6.1 The root elements
13.6.2 Model element
13.6.3 Package element
13.6.4 DemoFile element
13.6.5 Script element
13.6.6 ScriptFolder element
13.6.7 Submenu element
13.6.8 Label element
13.6.9 Separator element
13.6.10 Hiding elements
14 Making Movies
14.1 Recorder tab
14.1.1 Region to capture
14.1.2 Record options
14.1.3 Other options
14.2 Encoder tab
14.2.1 Encoder options
14.2.2 Customizing the encoder command
14.3 Output size options
14.4 Advanced tab
14.5 Saving movie preferences
14.6 Installing FFmpeg
15 Control Panels
15.1 Creating control panels
15.1.1 Composite property widgets
15.1.2 Widgets for subproperties
15.2 Editing control panels
15.3 Live updating
16 Component Editing
16.1 Generic edit operations
16.1.1 Deletion
16.1.2 Duplication
16.1.3 Undo
16.2 Editing panels
16.3 Specifying position, orientation, and scaling
16.4 Editing MechModels
16.4.1 Adding finite element models
16.4.2 Adding rigid bodies
16.4.3 Adding frame markers
16.4.4 Adding particles
16.4.5 Adding axial springs and muscles
16.4.6 Adding rigid body connectors
16.4.7 Attaching particles to particles
16.4.8 Attaching particles to rigid bodies
16.4.9 Collision handling
16.5 Editing rigid bodies
16.5.1 Geometry and inertia
16.6 Editing FEM models
16.6.1 Adding FEM markers
16.6.2 Adding muscle bundles
16.7 Editing muscle bundles
16.7.1 Adding fibres
16.7.2 Adding element references
16.7.3 Automatically setting elements and directions
16.7.4 Removing fibres and element references
16.8 Editing muscle exciters
16.9 Editing root models
Maspack Reference Manual
Preface
Chapter 1 Properties
1.1 Accessing Properties
1.1.1 Why Property Handles?
1.2 Property Ranges
1.3 Obtaining Property Information
1.4 Exporting Properties from a Class
1.4.1 Read-only properties
1.4.2 Inheriting Properties from a superclass
1.5 Composite Properties
1.6 Reading and Writing to Persistent Storage
1.7 Inheritable Properties
1.8 Exporting Inheritable Properties
1.9 Inheritable and Composite Properties
Chapter 2 Rendering
2.1 Overview
2.1.1 Renderables and Viewers
2.1.2 A Complete Example
2.2 Viewers
2.2.1 Render lists
2.2.2 Prerendering and Rendering
2.2.3 Viewer renderables and external render lists
2.2.4 Coordinate frames and view point control
2.2.5 Lights
2.3 The Renderer Interface
2.3.1 Drawing single points and lines
2.3.2 Drawing single triangles
2.3.3 Colors and associated attributes
2.3.3.1 Highlighting
2.3.4 Drawing using draw mode
2.3.5 Drawing solid shapes
2.3.6 Shading and color mixing
2.3.7 Vertex coloring, and color mixing and interpolation
2.3.8 Changing the model matrix
2.3.9 Render properties and RenderProps
2.3.9.1 Drawing points and lines as 3D solid objects
2.3.9.2 RenderProps taxonomy
2.3.9.3 Renderer methods that use RenderProps
2.3.10 Screen information and 2D rendering
2.3.11 Depth offsets
2.3.12 Maintaining the graphics state
2.3.13 Text rendering
2.4 Render Objects
2.4.1 Building a render object
2.4.2 ?Current? attributes
2.4.3 Maintaining consistent attributes
2.4.4 Adding primitives in ?build? mode
2.4.5 Modifying render objects
2.4.6 Drawing RenderObjects
2.4.7 Multiple primitive groups
2.4.8 Drawing primitive subsets
2.5 Texture mapping
2.5.1 Texture mapping properties
2.5.2 Texturing example using draw mode
2.5.3 Texturing example using a render object
2.6 Mesh Renderers
2.7 Object Selection
2.7.1 Implementing custom selection
2.7.2 Selection Events
Preface
Chapter 1 Properties
1.1 Accessing Properties
1.1.1 Why Property Handles?
1.2 Property Ranges
1.3 Obtaining Property Information
1.4 Exporting Properties from a Class
1.4.1 Read-only properties
1.4.2 Inheriting Properties from a superclass
1.5 Composite Properties
1.6 Reading and Writing to Persistent Storage
1.7 Inheritable Properties
1.8 Exporting Inheritable Properties
1.9 Inheritable and Composite Properties
Chapter 2 Rendering
2.1 Overview
2.1.1 Renderables and Viewers
2.1.2 A Complete Example
2.2 Viewers
2.2.1 Render lists
2.2.2 Prerendering and Rendering
2.2.3 Viewer renderables and external render lists
2.2.4 Coordinate frames and view point control
2.2.5 Lights
2.3 The Renderer Interface
2.3.1 Drawing single points and lines
2.3.2 Drawing single triangles
2.3.3 Colors and associated attributes
2.3.3.1 Highlighting
2.3.4 Drawing using draw mode
2.3.5 Drawing solid shapes
2.3.6 Shading and color mixing
2.3.7 Vertex coloring, and color mixing and interpolation
2.3.8 Changing the model matrix
2.3.9 Render properties and RenderProps
2.3.9.1 Drawing points and lines as 3D solid objects
2.3.9.2 RenderProps taxonomy
2.3.9.3 Renderer methods that use RenderProps
2.3.10 Screen information and 2D rendering
2.3.11 Depth offsets
2.3.12 Maintaining the graphics state
2.3.13 Text rendering
2.4 Render Objects
2.4.1 Building a render object
2.4.2 ?Current? attributes
2.4.3 Maintaining consistent attributes
2.4.4 Adding primitives in ?build? mode
2.4.5 Modifying render objects
2.4.6 Drawing RenderObjects
2.4.7 Multiple primitive groups
2.4.8 Drawing primitive subsets
2.5 Texture mapping
2.5.1 Texture mapping properties
2.5.2 Texturing example using draw mode
2.5.3 Texturing example using a render object
2.6 Mesh Renderers
2.7 Object Selection
2.7.1 Implementing custom selection
2.7.2 Selection Events
ArtiSynth Reference Manual
1 Component Hierarchy
1.1 Model Components
1.2 Component References
1.3 Composite Components
1.4 CompositeComponentBase, ComponentList, and ComponentListImpl
2 Models
2.1 Models and State
2.2 Model Agents
2.2.1 Probes
2.2.2 Controllers and monitors
2.2.3 Models associated with agents
2.2.4 Model agent state
2.3 The Root Model
2.4 Advancing Models in Time
2.5 Adaptive Stepping
3 Writing and Scanning Components
3.1 Writing components
3.1.1 Writing references
3.1.2 Writing child components
3.2 Scanning components
3.2.1 Scanning references and post-scanning
3.2.2 Scanning child components
3.2.3 Post-scanning implementation
3.2.4 Post-scanning property values
3.2.5 Invoking the complete scan process
3.3 File and token structure
3.4 Debugging
3.5 Summary
1 Component Hierarchy
1.1 Model Components
1.2 Component References
1.3 Composite Components
1.4 CompositeComponentBase, ComponentList, and ComponentListImpl
2 Models
2.1 Models and State
2.2 Model Agents
2.2.1 Probes
2.2.2 Controllers and monitors
2.2.3 Models associated with agents
2.2.4 Model agent state
2.3 The Root Model
2.4 Advancing Models in Time
2.5 Adaptive Stepping
3 Writing and Scanning Components
3.1 Writing components
3.1.1 Writing references
3.1.2 Writing child components
3.2 Scanning components
3.2.1 Scanning references and post-scanning
3.2.2 Scanning child components
3.2.3 Post-scanning implementation
3.2.4 Post-scanning property values
3.2.5 Invoking the complete scan process
3.3 File and token structure
3.4 Debugging
3.5 Summary
Interfacing ArtiSynth to MATLAB
1 Introduction
2 Requirements and configuration
2.1 Java restrictions
2.2 Configuring MATLAB for ArtiSynth
3 Starting ArtiSynth
4 Querying ArtiSynth structures and models
5 Scripting commands
6 Java memory limits
7 Setting the classpath for ArtiSynth
8 Setting the classpath for models
9 Connecting to an external MATLAB process
10 Managing an external MATLAB connection from code
11 Summary of scripting functions
1 Introduction
2 Requirements and configuration
2.1 Java restrictions
2.2 Configuring MATLAB for ArtiSynth
3 Starting ArtiSynth
4 Querying ArtiSynth structures and models
5 Scripting commands
6 Java memory limits
7 Setting the classpath for ArtiSynth
8 Setting the classpath for models
9 Connecting to an external MATLAB process
10 Managing an external MATLAB connection from code
11 Summary of scripting functions
Writing Documentation for ArtiSynth
1 Introduction
2 How Documents Are Created
2.1 Document Source Code Organization
2.2 Makefile commands to build documents
2.2.1 Javadocs
2.2.2 HTML files
2.2.3 PDF files
2.2.4 Other Commands
2.3 Building single HTML files
2.4 Building sectioned HTML files
2.5 Building PDF files
2.6 Installing Documents on the Webserver
3 LaTeX usage and conventions
3.1 LaTeXML restrictions
3.2 Font conventions
3.3 Code blocks
3.4 Side blocks
3.5 Inserting Images
3.6 Javadoc References
3.6.1 Class references
3.6.2 Method references
3.6.3 How it works
3.7 References to other ArtiSynth documents
4 Adding a New Document
4.1 Creating and Updating the Makefiles
4.2 Updating the InfoCenter
4.3 Updating the ArtiSynth website
5 Images, IDraw and Xfig
6 Eclipse InfoCenter
7 External Software Required
7.1 Installing LaTeXML
8 Local Customizations
8.1 setJavadocLinks script
8.2 fixLatexmlOutput script
1 Introduction
2 How Documents Are Created
2.1 Document Source Code Organization
2.2 Makefile commands to build documents
2.2.1 Javadocs
2.2.2 HTML files
2.2.3 PDF files
2.2.4 Other Commands
2.3 Building single HTML files
2.4 Building sectioned HTML files
2.5 Building PDF files
2.6 Installing Documents on the Webserver
3 LaTeX usage and conventions
3.1 LaTeXML restrictions
3.2 Font conventions
3.3 Code blocks
3.4 Side blocks
3.5 Inserting Images
3.6 Javadoc References
3.6.1 Class references
3.6.2 Method references
3.6.3 How it works
3.7 References to other ArtiSynth documents
4 Adding a New Document
4.1 Creating and Updating the Makefiles
4.2 Updating the InfoCenter
4.3 Updating the ArtiSynth website
5 Images, IDraw and Xfig
6 Eclipse InfoCenter
7 External Software Required
7.1 Installing LaTeXML
8 Local Customizations
8.1 setJavadocLinks script
8.2 fixLatexmlOutput script
ArtiSynth Coding Standard
1 Introduction
2 Cuddle braces and indent by 3
3 Always used braced blocks
4 Do not use tabs
5 Keep line widths to 80 columns
6 Break lines at the beginning of argument lists
7 Break lines after assignment operators
8 Align conditional expressions with the opening parentheses
9 No space before empty argument lists
1 Introduction
2 Cuddle braces and indent by 3
3 Always used braced blocks
4 Do not use tabs
5 Keep line widths to 80 columns
6 Break lines at the beginning of argument lists
7 Break lines after assignment operators
8 Align conditional expressions with the opening parentheses
9 No space before empty argument lists