iMSTK
Interactive Medical Simulation Toolkit
|
►Nimstk | Compound Geometry |
►NParallelUtils | |
CAABBFunctor | Private helper class, providing operator() using in std::parallel_reduce for finding axis-aligned bounding box of a point set |
CMaxL2NormFunctor | Private helper class, providing operator() using in std::parallel_reduce for finding max L2 norm of an array of Vec3r |
CRangeFunctor | Private helper class, providing operator() using in std::parallel_reduce for finding range of a container with specified begin/end/operator[],operator++ functions |
CSpinLock | The SpinLock class |
CThreadManager | |
►Nsph | |
CAdhesionKernel | Adhesion kernel |
CCohesionKernel | Cohesion Kernel |
CPoly6Kernel | The poly6 Kernel |
CSpikyKernel | Spiky Kernel |
CViscosityKernel | Viscosity kernel |
CAbstractCellMesh | Provides non templated base for cell based meshes |
CAbstractDataArray | This class serves as the base class of DataArray, for typeless use |
CAbstractDynamicalModel | Abstract class for mathematical model of the physics governing the dynamic object |
CAbstractVTKViewer | Subclasses viewer for the VTK rendering back-end |
CAnalyticalGeometry | Base class for any analytical geometrical representation |
CAnimationModel | Contains geometric and animation render information |
CAnimationObject | TODO |
CAppendMesh | This filter appends two SurfaceMeshes, no topological connections are made |
CArcNeedle | |
CAssertionFailure | |
CAssertMessage | |
CAssimpMeshIO | Assimp reader for surface meshes |
CAxesModel | Defines an axes that should be rendered |
CBackwardEuler | Backward Euler time integration |
CBehaviour | A Behaviour represents a single component system A template is used here for UpdateInfo to keep the ComponentModel library more general and separable. UpdateInfo could be anything you need from outside to update the component, this would generally be your own struct or just a single primitive such as double timestep |
CBidirectionalPlaneToSphereCD | Plane to sphere collision detection Generates point-direction contact data |
CBoneDrillingCH | Implements bone drilling collision handling |
CBurnable | Defines the behaviour to allow a Pbd Object to be burned. This object creates the state data on the mesh to store both the damage state that controls when a cell gets deleted and state data for visualization. This is currently defined as [0,1] where 0 is no damage and value >= 1 deletes the cell. The visual data is purely for visualization, and can be used as the user desires. The model that changes the state is defined by the burning object |
►CBurner | Defines the behaviour to allow a tool to burn a pbdObject. This is done by storing state on the mesh that defines the damage from burning and the visual change caused by cauterization. These are currently normalized from [0,1] where 1 is the maximum damage. Once the damage reaches 1, the cell is deleted on the next visual update |
CBurnable | |
CButtonEvent | |
CCacheOutput | |
CCamera | Produces a perpsective transformation matrix |
CCameraController | Directly controls a camera given the device client pose, could be unsmooth depending on device. Rigid body should be preferred for smoothness |
CCapsule | Capsule geometry, default configuration is centered at origin with length running up and down the y axes. The length refers to the length of the cylinder |
CCapsuleToCapsuleCD | Capsule to Capsule collision detection |
CCCDAlgorithm | Base class for all Continuous Collision Detection (CCD) classes. A continuous collision detection algorithm typically requires geometries in two timesteps (previous, current) for continuous analysis between the two. CCDAlgorithm classes follow the same logic as CollisionDetectionAlgorithm. This base class for CCD algorithms enforces the implementation of a function (UpdatePreviousTimestepGeometry) to cache/store previous state of the colliding geometries |
CCDObjectFactory | Manages and generates the CollisionDetectionAlgorithms |
CCellIndexElement | Represents a cell by a single cell id OR by N vertex ids. Which case can be determined by the idCount |
CCellMesh | Abstract template base class for all meshes that have homogenous cell types. This class allows templated access to cells. A cell in iMSTK could be a line, triangle, quad, tetrahedron, hexahedron, ... It is a group of vertices that form an element of a larger mesh |
CCellPicker | Picks cells of geomToPick via those that that are intersecting pickingGeom |
CCellVertexElement | Represents a cell by its vertex values Possible cells may be: point, edge, triangle, quad, or tetrahedron Maximum 4 vertices (tetrahedron is maximum cell it could represent) |
CCleanMesh | This filter can merge duplicate points and cells, it only works with LineMesh and SurfaceMesh. It accepts a tolerance as a fraction of the length of bounding box of the input data or an absolute tolerance |
CClosedSurfaceMeshToCapsuleCD | Closed SurfaceMesh to Capsule collision detection Generates point-triangle |
CClosedSurfaceMeshToMeshCD | Closed mesh to mesh collision with brute force strategy. It can handle closed SurfaceMesh vs PointSet, LineMesh, & SurfaceMesh. Note: This CD method cannot yet automatically determine the closed SurfaceMesh given two unordered inputs. Ensure the second input/B is the closed SurfaceMesh |
CCollidingObject | A SceneObject with a geometry for collision |
CCollisionData | Describes the contact manifold between two geometries |
CCollisionDataDebugModel | Class for visualizing CollisionData. Give it collision data and add it to the scene This class intentionally does not automatically update it provides debugUpdate which may be called by the user when appropriate (for debug purposes) |
CCollisionDetectionAlgorithm | Base class for all collision detection classes. CollisionDetection classes produce CollisionData between two geometries A and B. CollisionData has two sides. That is, the contact information to resolve collision for geometry A and the contact info to resolve geometry B |
►CCollisionElement | Union of collision elements. We use a union to avoid polymorphism. There may be many elements and accessing them needs to be quick. Additionally the union keeps them more compact and allows one to keep them on the stack |
CElement | |
CCollisionHandling | Base class for all collision handling classes |
CCollisionInteraction | Abstract class for defining collision interactions between objects |
CColor | Color in RGB space |
CColorFunction | A regularly/structured table of colors to lookup by value |
CCommand | Stores everything needed to invoke an event A call may not be present, in which case invoke doesn't do anything |
CComponent | Represents a part of an entity, involved in a system. The component system is doubly linked meaning the Entity contains a shared_ptr to Component while the Component keeps a weak_ptr to Entity. Components are able to not exist on an entity as the entity parent is not garunteed to exist. The initialize call cannot be issue'd without a valid entity |
CCompositeImplicitGeometry | |
CCompoundCD | Collision detection that supports a geometry consisting of multiple subgeometries. For the actual calcualation the information gets passed to the appropriate shape/subshape CD algorithm. Currently Does not support adding/removing a shape during runtime |
CCompoundGeometry | |
CConjugateGradient | Conjugate gradient sparse linear solver for Spd matrices |
CConnectiveStrandGenerator | This filter takes in two surface meshes and generates a LineMesh that connectes the faces of the two meshes. Internally the strands are generated such that only faces with normals pointing in opposite direction are used. This cuts down on penetration. This is expected to be used to generate connective tissue with the ProximitySurfaceSelectoror any other method to select a subset of a surface mesh to connect |
CConsoleModule | The console thread can run separately or in sync to provide keyboard events from the console they should be handled on another thread |
CControllerForceText | Displays virtual coupling force text in the top right |
CCorotationalFemForceModel | Force model for corotational based finite elements formulation |
CCpuTimer | CPU timer |
CCutData | |
CCylinder | Cylinder geometry, default configuration is at origin with length running up the y axes |
►CDataArray | Simple dynamic array implementation that also supports event posting and viewing/facade |
Cconst_iterator | |
Citerator | |
►CDataTracker | Store time based data to write to a file |
CElement | |
CePhysics | Common data values to track |
CPhysics | Header names of the common data values to track |
CDebugGeometryModel | Class for quickly rendering and showing various primivites such as line segments, triangles, arrows, points |
CDeviceClient | The device client's represents the device and provides an interface to acquire data from a device. It posts events the device may have as well as provides the state |
CDeviceControl | While the DeviceClient provides quantities from the device, the control defines what to do with those quantities |
CDeviceManager | Abstract class for DeviceManagers which must return a DeviceClient for which it manages |
CDeviceManagerFactory | Manages and generates the DeviceManager's |
CDirectionalLight | A directional light has no position or range. The focal point is the direction |
CDirectLinearSolver | Dense direct solvers. Solves a dense system of equations using Cholesky decomposition |
CDirectLinearSolver< Matrixd > | |
CDirectLinearSolver< SparseMatrixd > | Sparse direct solvers. Solves a sparse system of equations using a sparse LU decomposition |
CDummyClient | Allows setting the pose of the device from external caller without a real device connected |
CDynamicalModel | Base class for mathematical model of the physics governing the dynamic object |
CDynamicObject | Base class for scene objects that move and/or deform |
CEdgeEdgeCCDState | |
CEdgePair | Hash together a pair of edges |
CEmbeddingConstraint | Constrains a rigid body line segment defined via p and q to a "puncture" point defined via barycentric coordinates on a triangle |
CEmptyElement | |
CEntity | Top-level class for entities. Entities contain a collection of components which define how to be used in a system |
CEvent | Base class for events which contain a type, priority, and data priority defaults to 0 and uses a greater than comparator. Negatives are allowed |
CEventObject | EventObject is the base class for all objects in iMSTK that can receive and emit events. It supports direct and queued observer functions. Direct observers receive events immediately on the same thread This can either be posted on an object or be a function pointer Queued observers receive events within their queue which they can process whenever they like. These can be connected with the connect/queuedConnect/disconnect functions Lambda recievers cannot be disconnected unless all receivers to a signal are removed |
CExtractEdges | This filter extracts the edges of a SurfaceMesh producing a LineMesh |
►CFastMarch | |
CNode | |
CNodeComparator | |
CFeDeformableObject | Scene objects that can deform |
CFeDeformBodyState | This class stores the state of the unknown field variable in vectorized form |
CFemDeformableBodyModel | Mathematical model of the physics governing the dynamic deformable object |
CFemModelConfig | Parameters for finite element model |
CFpsTxtCounter | Displays visual and physics framerates through dependent TextVisualModel |
CGaussSeidel | Gauss-Seidel sparse linear solver |
CGeometry | Base class for any geometrical representation |
CGeometryAlgorithm | Abstract base class for geometry algorithms. GeometryAlgorithms take N input geometries and produce N output geometries. Subclasses should implement requestUpdate to do algorithm logic. Subclasses may also setInputPortReq to require an input to be a certain type |
CGeometryMap | Base class for any geometric map |
CGraph | Class to represent a graph object |
CGraspedData | Info needed to add a constraint for the grasped object Garunteed to be a PbdObject |
CGrasperData | GrasperData is either a ray, a grasping geometry, or another PbdObject (rigid) |
CGridBasedNeighborSearch | Class for searching neighbors using regular grid |
CHaplyDeviceClient | Subclass of DeviceClient for haply, currently implemented only for the Inverse3. Warning: This code is based off an early version of the Haply Hardware API |
CHaplyDeviceManager | Devices manager using Haply, only supports Inverse3 right now Warning: This code is based off an early version of the Haply Hardware API |
CHexahedralMesh | Hexahedral mesh class |
CIblProbe | Image-based lighting probe |
CImageData | Class to represent 1, 2, or 3D image data (i.e. structured points) |
CImageDistanceTransform | This filter generates a signed or unsigned distance transform from a binary mask |
CImageGradient | This filter computes the gradient or magnitude using sobels kernel over an image |
CImageResample | Trilinearly Resamples a 3d image to different dimensions |
CImageReslice | Resamples an image using a transform |
CImplicitFunctionBackwardGradient | Gradient given by backward finite differences |
CImplicitFunctionCentralGradient | Gradient given by central finite differences |
CImplicitFunctionForwardGradient | Gradient given by forward finite differences |
CImplicitFunctionGradient | Base struct for gradient functors |
CImplicitGeometry | Class that can represent the geometry of multiple implicit geometries as boolean functions One may supply it with multiple implicit geometries and the operation they would like |
CImplicitGeometryToImageData | This filter rasterizes an implicit function to image of specified dimensions and bounds |
CImplicitGeometryToPointSetCCD | ImplicitGeometry to PointSet continous collision detection. This CD method marches along the displacement of the points in the pointset to converge on the zero crossing of the implicit geometry. This particular version is suited for levelsets not SDFs as it caches the history of the contact to avoid sampling the implicit geometry anywhere but at the surface (it will also work for SDFs, though better alterations/modifications of this exist for SDFs) |
CImplicitGeometryToPointSetCD | ImplicitGeometry to PointSet collision detection. This generates PointDirection collision data via signed distance sampling and central finite differences |
CImplicitStructuredCurvature | Curvature given in structured coordinates |
CimstkNew | Std::shared_ptr<T> obj = std::make_shared<T>(); equivalent, convenience class for STL shared allocations. Cannot be used in overloaded polymorphic calls |
CInternalForceModel | Base class for internal force model within the following context |
CIsometricMap | A maps that lets the child follow the parent transform |
CIsotropicHyperelasticFeForceModel | Force model for the isotropic hyperelastic material |
CIterativeLinearSolver | Base class for iterative linear solvers |
CJacobi | Jacobi sparse linear solver |
CKeyboardControl | |
CKeyboardDeviceClient | This class provides the keyboard state it also posts events |
CKeyboardSceneControl | This implements keyboard controls to control a scene manager and viewer it may operate with both sceneManager and viewer, or only one or the other. warning: This control may pause a thread. Thus it is a bad idea to process it on the thread you're pausing, as you then could not resume |
CKeyEvent | Provides the information of a key event (press, release, & which key) |
CLambdaBehaviour | A SceneBehaviour that can update via a lambda function |
CLaparoscopicToolController | Two-jawed laparoscopic tool controlled by external device The tool is composed of three scene objects: pivot, lower jaw and upper jaw The jaws open-close based on the buttons at present. This has to be replaced by potentiometer tracking in future |
CLevelSetCH | Applies impulses to the leveset given point direction collision data propotional to the force on the rigid object |
CLevelSetDeformableObject | Base class for scene objects that move and/or deform under position based dynamics formulation, implements the PbdModel and PbdSolver |
CLevelSetModel | This class implements a generic level set model, it requires both a forward and backward finite differencing method |
CLevelSetModelConfig | |
CLight | Abstract base class for lights |
CLinearFemForceModel | Force model for linear finite element formulation |
CLinearProjectionConstraint | Linear projection constraint |
CLinearSolver | Base class for linear solvers |
CLinearSystem | Represents the linear system of the form ![]() |
CLineMesh | Base class for all volume mesh types |
CLineMeshCut | This filter cuts the lines of a LineMesh into smaller lines using input cutting geometry Only supports convex shaped cutting, ie: An edge can't be split twice |
CLineMeshToCapsuleCD | LineMesh to Capsule collision detection Generates point-edge and point-point CD data By default only generates contact data for the pointset |
CLineMeshToLineMeshCCD | LineMesh to LineMesh continous collision detection. This CCD method can process self collision as well. Self collision mode is indicated to the algorithm by providing geometryA (input 0) == geometryB (input 1) |
CLineMeshToSphereCD | LineMesh to Sphere collision detection Generates point-edge and point-point CD data By default only generates contact data for the pointset |
CLocalMarchingCubes | This filter extracts a contour SurfaceMesh from an image given an isovalue. Users should prefer imstkFlyingEdges over this unless sparse/local processing is needed |
CLoggerG3 | |
CLoggerSynchronous | |
CLogMessageBase | |
CLogOutput | |
CLooseOctree | Class LooseOctree, where each tree node has a loose boundary which is exactly twice big as its exact, tight boundary During tree update, a primitive is moved around from node to node If removed from a node, the primitive is moving up to find the lowest node that tightly contains it, then it is inserted again from top-down, to a lowest level possible, stopping at a node that loosely contains it Pointer variables in tree and tree node are all raw pointers, not smart pointers, for fast operations |
CMeshCut | Base abstract class for discrete cut algorithms |
CMeshIO | Mesh data IO |
CMeshSide | Packs the info needed to add a constraint to a side by reference (this way dynamic casting & dereferencing is not being done in tight loops) |
CModule | Base class for imstk module system. A module defines something that is updated, and can be paused/resumed. It cannot start or stop Update loops are defined externally by a driver so they may be replaced |
CModuleDriver | Defines the control of modules |
CMouseControl | This is the base class for mouse based controls It can be constructed and observed or subclassed and overridden to implement controls |
CMouseDeviceClient | |
CMouseEvent | Provides the information of a mouse event, this includes button presses/releases and scrolling |
CMouseSceneControl | Controls the camera using trackball controls Left click rotate, middle click pan |
CMshMeshIO | Can read/return LineMesh, SurfaceMesh, TetrahedralMesh, or HexahedralMesh from given .msh file. Can only read homogenous elements |
CNeedle | Base for all needles in imstk it supports global puncture state, per object puncture state, and per id/cell puncture state |
CNeedleInteraction | Defines interaction between NeedleObject and PbdObject |
►CNeedlePbdCH | Handles penetration constraints for the needle and the thread by creating a set of puncture points that are used to find the nearest segment on either the needle or the thread and constraining the tissue to the needle, or the thread to the tissue. This class assumes the mesh is not cut or otherwise modified during runtime. WARNING: This class currently assumes a tetrahedral mesh for the physics mesh of the punctureable pbdObject and a triangle mesh for the collision geometry of that object |
CPunctureData | |
CPuncturePoint | |
CNeighborInfo | The helper struct to store relative positions and densities of neighbor particlcles |
CNeighborSearch | A wrapper class for Grid-based and spatial-hashing neighbor search |
CNewmarkBeta | Newmark-beta time integration |
CNewtonSolver | Newton method. This version of the newton method is based on the work by Tim Kelly and others at NC State University. The algorithm is globally convergent in the sense that for any initial iterate the iteration either converge to a root of F or fails. Global convergence is achieved using a line search sub-process and the Armijo rule |
CNonLinearSolver | Base class for non-linear solvers |
CNonLinearSystem | Base class for a multi-variable nonlinear system |
CNormalGroup | Helper class for indentifying duplicate points |
CNullOutput | |
CObjectControllerGhost | A behaviour that renders a second copy of the controlled object at a lower opacity in the physical position as opposed to the original rendered at the virtual |
CObjectFactory | Generic Factory class that can take objects with constructor parameters |
CObjectIO | ObjectIO provides SceneObject reading capabilities It is used to read complex visual objects or animated objects |
COctreeDebugModel | OctreeDebugModel for debug visualizing an octree |
COctreeNode | The OctreeNode class |
COctreeNodeBlock | The OctreeNodeBlock struct This is a data structure to store a memory block of 8 tree node at a time Using a block of 8 nodes at a time can reduce node allocation/merging/slitting overhead |
COctreePrimitive | The OctreePrimitive struct For each octree primitive (point/triangle/analytical geometry), store its relevant data |
COpenHapticDeviceClient | Subclass of DeviceClient for phantom omni Holds and updates the data sync or on its own thread Holder of data |
►COpenHapticDeviceManager | Devices manager using HDAPI |
COpenHapticDeviceManagerImpl | |
COpenVRDeviceClient | This class provides quantities for the specified VR device The devices creation is tied to the viewer. It is only acquirable from a VR viewer and exists on the viewers thread |
COrientedBox | OrientedBox geometry, specified with extents (half lengths) |
CPbdAngularConstraint | Applies rotational correction only |
CPbdAngularDistanceConstraint | Constraints one orientation to be relative by a given angular distance/offset to another orientation |
CPbdAngularHingeConstraint | Constraint a single oriented particle along an axes of rotation Aligns oriented particles up axes to hinge axes |
CPbdAreaConstraint | Area constraint for triangular face |
CPbdAreaConstraintFunctor | PbdAreaConstraintFunctor generates constraints per cell of a SurfaceMesh |
CPbdBaryPointToPointConstraint | Constrains two points from two separate cells/elements given via barycentric coordinates to be coincident |
CPbdBendConstraint | Bend constraint between two segments. Maintains angle between the two segments in the initial configuration given |
CPbdBendConstraintFunctor | PbdBendConstraintFunctor generates constraints per cell of a LineMesh |
CPbdBody | Represents a pbd body in the model. This is a data only object. It does no function. PbdBody can be of different types. The types effect what properties it has |
CPbdBodyConstraintFunctor | Abstract PbdConstraintFunctor that assumes usage of a singular body & geometry |
CPbdBodyToBodyDistanceConstraint | Constrain two locally defined points on each body by a given distance |
CPbdBodyToBodyNormalConstraint | |
CPbdCHTableKey | Used as a key in a function table to decide how to handle resulting collision |
CPbdCollisionConstraint | The PbdCollisionConstraint implements two sided collision. This allows the usage of differing stiffness for each side which can be useful during solve. Due to differences in definition, collisions do not use XPBD. Only PBD. They are assumed perfectly rigid even though stiffness is modifiable. Given enough iterations in the solve, it will converge to perfectly rigid |
►CPbdCollisionHandling | Implements PBD based collision handling. Given an input PbdObject and CollisionData it creates & adds constraints in the PbdModel to be solved in order to resolve the collision |
CColElemSide | Packs the collision element together with the data it will need to process it (for swapping) |
CCollisionSideData | |
CPbdConnectiveTissueConstraintGenerator | |
CPbdConstantDensityConstraint | Implements the constant density constraint to simulate fluids. This constraint is global and applied to all vertices passed in during projection |
CPbdConstantDensityConstraintFunctor | PbdConstantDensityConstraintFunctor generates a global constant density constraint for an entire PointSet |
CPbdConstraint | Base Constraint class for Position based dynamics constraints |
CPbdConstraintContainer | Container for pbd constraints |
CPbdConstraintFunctor | PbdConstraintFunctor take input geometry and produce constraints. It exists to allow extensible constraint generation. Any number of constraints could be generated by a functor for a single geometry with any number of parameters |
CPbdConstraintFunctorLambda | PbdConstraintFunctor that can be forwarded out to a function pointer |
CPbdContactConstraint | A constraint on a rigid body that defines rotationl correction through dx applied at a local position r on the body |
CPbdDihedralConstraint | Angular constraint between two triangular faces |
CPbdDihedralConstraintFunctor | PbdDihedralConstraintFunctor generates constraints per pair of triangle neighbors in a SurfaceMesh |
CPbdDistanceConstraint | Distance constraints between two nodal points |
CPbdDistanceConstraintFunctor | PbdDistanceConstraintFunctor generates constraints between the edges of the input TetrahedralMesh, SurfaceMesh, or LineMesh |
CPbdEdgeEdgeCCDConstraint | Pushes an edge "outside" the other edge |
CPbdEdgeEdgeConstraint | Resolves an edge given by two pbd particles to coincide with another edge |
CPbdEdgeToBodyConstraint | Resolves a point on body to an edge with linear and angular movement |
CPbdFemConstraint | For constraint as the elastic energy computed by linear shape functions with tetrahedral mesh. We provide several model for elastic energy including: Linear, Co-rotation, St Venant-Kirchhof and NeoHookean |
CPbdFemConstraintConfig | Either mu/lambda used, may be computed from youngs modulus and poissons ratio |
CPbdFemTetConstraint | The FEMTetConstraint class class for constraint as the elastic energy computed by linear shape functions with tetrahedral mesh |
CPbdFemTetConstraintFunctor | PbdFemTetConstraintFunctor generates constraints per cell of a TetrahedralMesh |
CPbdInflatableDistanceConstraint | |
CPbdInflatableDistanceConstraintFunctor | |
CPbdInflatableVolumeConstraint | |
CPbdInflatableVolumeConstraintFunctor | |
CPbdModel | This class implements the position based dynamics model. The PbdModel is a constraint based model that iteratively solves constraints to simulate the dynamics of a body. PbdModel supports SurfaceMesh, LineMesh, or TetrahedralMesh. PointSet is also supported for PBD fluids |
CPbdModelConfig | Gives parameters for PBD simulation |
CPbdObject | Base class for scene objects that move and/or deform under position based dynamics formulation, implements the PbdModel and PbdSolver |
CPbdObjectCellRemoval | This class defines a method of removing cells and their associated constraints from a Pbd object. Can update the visual and collision representation when using a tetrahedral mesh as physics object Does not support updating visual and collision representation when the physics mesh is a LineMesh or a SurfaceMesh AND they differ. Note: The two modes for visual meshes exist to support generating new texture coordinates, when reusing a vertex from a visual mesh the vertex should already have uv coordinates assigned to it. Assigning new ones may break the current look of the object as the vertex may still be in use. With the VisualSeparateVertices mode, new vertices will be generated for newly exposed surface. This allows the user to assign new uv coordinates to those new points |
CPbdObjectCollision | This class defines a collision interaction between two PbdObjects or PbdObject & CollidingObject |
CPbdObjectController | This class uses the provided device to control the provided rigid object via virtual coupling. That is, it applies forces+torques to the rigid body that will help move it to desired position/orientation. It has linear and angular spring scales as well as damping You may also use force smoothening for the force applied back on the device |
CPbdObjectCutting | This class defines a cutting interaction between a PbdObject and a CollidingObject. PbdObjectCutting::apply can be used to perform a discrete cut given the current states of both objects |
CPbdObjectGrasping | This class defines grasping of a PbdObject via different picking methods. Where grasping is define as grabbing & attaching of a PbdObject's mesh to points |
CPbdObjectStitching | This class defines stitching of a PbdObject via different picking methods. Ray based stitching is default |
CPbdPointEdgeConstraint | |
CPbdPointPointConstraint | This constraint resolves two vertices to each other |
CPbdPointTriangleConstraint | The PbdPointTriangleConstraint moves a point to a triangle, and the triangle to the point |
CPbdRigidBaryPointToPointConstraint | |
CPbdRigidLineToPointConstraint | This class constrains a rigid line to a fixed point |
CPbdRigidObjectCollision | This class defines a collision interaction between a first order PbdObject and second order RigidObject2. This will induce response in both models |
CPbdRigidObjectGrasping | |
CPbdSolver | Position Based Dynamics solver This solver can solve both partitioned constraints (unordered_set of vector'd constraints) in parallel and sequentially on vector'd constraints. It requires a set of constraints, positions, and invMasses |
CPbdState | Provides interface for accessing particles from a 2d array of PbdBody,Particles |
CPbdTriangleToBodyConstraint | Resolves a point on body to a triangle with linear and angular movement |
CPbdVertexToBodyConstraint | |
CPbdVolumeConstraint | Volume constraint for tetrahedral element |
CPbdVolumeConstraintFunctor | PbdVolumeConstraintFunctor generates constraints per cell of a TetrahedralMesh |
CPenaltyCH | Implements penalty collision handling between Fem and Rigid models |
CPerformanceGraph | Displays task graph node durations of a scene as overlay on the screen |
CPickData | PickData provides ids to indicate what was picked These may be optionally used to indicate the selection |
CPickingAlgorithm | Abstract functor for picking/selecting of geometry. Differs from collision in that the picking criteria can follow different logic (ray, nearest, various exclusion criteria, etc). Some pickers utilize CollisionDetectionAlgorithms for intersection tests |
CPlane | Represents and infinite plane, width can be used for visual purposes |
CPointDirectionElement | Direclty gives a point-direction contact as its collision data |
CPointEntry | |
CPointIndexDirectionElement | Direclty gives a point-direction contact as its collision data, point given by index |
CPointLight | A point light has a position, and it's range is determined by it's intensity |
CPointPicker | Picks points on elements of geomToPick via those that that are intersecting the provided ray |
CPointSet | Base class for all geometries represented by discrete points and elements The pointsets follow a pipeline: |
CPointSetData | |
CPointSetToCapsuleCD | PointSet to Capsule collision detection. Generates point-direction contact data. By default only generates contact data for the pointset |
CPointSetToCylinderCD | PointSet to Cylinder collision detection. Generates point-direction contact data. By default only generates contact data for the pointset |
CPointSetToOrientedBoxCD | PointSet to OrientedBox collision detection. Generates point-direction contact data. By default only generates contact data for the pointset |
CPointSetToPlaneCD | PointSet to unidirectional plane collision detection Generates point-direction contact data. By default only generates contact data for the pointset |
CPointSetToSphereCD | PointSet to sphere collision detection Generates point-direction contact data. By default only generates contact data for the pointset |
CPointToTetMap | Computes and applies the PointSet-Tetrahedra map. Vertices of the child geometry are deformed according to the deformation of the tetrahedron they are located in. If they are not within one, nearest tet is used |
CPointwiseMap | PointwiseMap can compute & apply a mapping between parent and child PointSet geometries |
CPortHoleInteraction | Defines the behaviour to constrain a PbdObject LineMesh or Capsule to a fixed port hole location |
►CProgrammableClient | Allows setting the pose of the device from external caller without a real device connected |
CCircularMovement | Command for circular movement of an analytical geometry |
CCommand | General struct for command. Command will call activate when start time is reached, call updateDevice while active, and call complete when duration is over |
CDeformation | Command for applying deformationt to a subset of vertices from an object |
CGraspAction | Command for grasping an object |
CHoldCommand | Command for holding a subset of vertices at a specific position |
CLinearMovement | Command for linear movement of an analytical geometry |
CLinearVertexMovement | Command for linear movement of a subset of vertices from an object |
CWaitCommand | Command for waiting. Used to let system continue running with no active commands |
CProjectedGaussSeidelSolver | Solves a linear system using the projected gauss seidel method. Only good for diagonally dominant systems, must have elements on diagonals though. The initial guess (start) is always zero, convergence value may be specified with epsilon, relaxation decreases the step size (useful when may rows exist in A) |
CProximitySurfaceSelector | This filter takes in two surface meshes and generates two surface meshes that are subsets of the two input meshes. The new surface meshes are made of faces of the two meshes that fall within a distance (m_proximity) of each other |
CPuncturable | Place this on an object to make it puncturable by a needle. This allows puncturables to know they've been punctured without needing to be aware of the needle. The Puncturable supports multiple local ids |
►CPuncture | The puncture itself is composed of a state and extra non-essential user data |
CUserData | Accompanying data stored with a puncture. No usage within Needle structure |
CPunctureIdEq | The entity and tissue id should be reversible |
CPunctureIdHash | The entity and tissue id should be reversible |
CQuadricDecimate | |
CRbdConstraint | Abstract class for rigid body constraints. A RbdConstraint should mainly provide a constraint jacobian. It provides a constraint gradient for both linear and angular (each column). This gradient should vanish as the constraint scalar approaches 0 |
CRbdContactConstraint | A hard rigid body constraint to prevent intersection |
CRbdDistanceConstraint | A rigid body constraint to keep objects at a specified distance from each other given two local points on the bodies |
CRbdFrictionConstraint | A rigid body constraint to apply friction |
CReducedFeDeformableObject | |
CReducedStVK | |
CReducedStVKConfig | |
CRenderDelegateObjectFactory | Manages and generates the VTKRenderdelegates for all VisualModels |
CRenderer | Rendering window manager and contains user API to configure the rendering with various backends |
CRendererConfig | |
CRenderMaterial | Serves no function, just a database for render properties, emits events for others to observe its changes |
CRenderParticle | Particle data |
CRenderParticleEmitter | Animation method for rendering particles Common use cases include smoke and fire |
CRenderParticleKeyFrame | Keyframe for particle animation |
CRenderParticles | Particles for rendering |
CRigidBody | Serves as a handle to the body |
CRigidBodyCH | Creates rigid body contact and frictional constraints given collision data then adds them to the rigid body model, if rigid objects use differing models, one-way contacts are added to both. If only one rigid object is given, one-ways are used |
CRigidBodyModel2 | This class implements a constraint based rigid body linear system with pgs solver |
CRigidBodyModel2Config | |
CRigidBodyState2 | Kinematic state of rigid bodies within a system |
CRigidObject2 | Scene objects that are governed by rigid body dynamics under the RigidBodyModel2 |
CRigidObjectCollision | |
CRigidObjectController | This class uses the provided device to control the provided rigid object via virtual coupling. That is, it applies forces+torques to the rigid body that will help move it to desired position/orientation. It has linear and angular spring scales has well as dampening You may also use force smoothening for the force applied back on the device |
CRigidObjectLevelSetCollision | This class defines a collision interaction pipeline between a RigidObject and LevelSetDeformableObject |
CScene | A collection of SceneObjects and interactions |
CSceneConfig | |
CSceneControlText | This implements a text on screen that will notify the user of the current state of the simulation. ie: If paused or not. It can be toggled on and off |
CSceneManager | Scene manager module manages multiple scenes and runs the active one |
CSceneObject | Base class for all scene objects. A scene object can optionally be visible and collide with other scene objects. A object of the class is static |
CSceneObjectController | This class implements once tracking controller controlling one scene object |
CScreenCaptureUtility | Utility class to manage screen capture |
CSelectEnclosedPoints | |
CSequentialTaskGraphController | This class executes a TaskGraph by first topologically sorting them (Kahn's algorithm) then sequentially running them |
CSharedObjectRegistrar | Templated class that can add to the object factory with objects that will be generated via std::make_shared |
CSignedDistanceField | Structured field of signed distances implemented with ImageData The SDF differs in that when you scale an image via its spacing the distance samples are then wrong. Here you can isotropically scale as you wish |
CSimulationManager | Defines a sequential substepping approach to driving the modules and rendering. The user provides a desired timestep and as it runs it accumulates time. It then determines how many simulation steps before every render (simply accumulated time / timestep = substeps). The remainder is divided out over the substeps. This is the preferred driver. todo: Timestep smoothening |
CSolverBase | Base class for solvers |
CSOR | Successive Over Relaxation (SOR) sparse linear solver |
CSpatialHashTable | Abstract class for spatial hash tables |
CSpatialHashTableSeparateChaining | Implementation of SpatialHashTable using separate chaining |
CSphBoundaryConditions | |
CSphCollisionHandling | The SphCollisionHandling consumes PointIndexDirection contact data to resolve positions and correct velocities of SPH particles. It does not correct pressures/densities |
CSphere | Represents a sphere via its position & radius |
CSphereToCapsuleCD | Sphere to Capsule collision detection |
CSphereToCylinderCD | Sphere-Cylinder collision detection Generates point-direction contact data. By default generates contact data for both sides |
CSphereToSphereCD | Sphere to sphere collision detection Generates point-direction contact data. By default generates contact data for both sides |
CSphModel | |
CSphModelConfig | Class that holds the SPH model parameters |
CSphObject | Base class for scene objects that move and/or deform under smooth particle hydrodynamics |
CSphObjectCollision | This class defines where collision should happen between SphObject and CollidingObject pipelines |
CSphSimulationKernels | Class contains SPH kernels for time integration, using different kernel for different purposes |
CSphState | Simulation states of SPH particles |
CSpotLight | |
CSSAOConfig | |
CstdSink | A standard sink that prints the message to a standard output |
CStopWatch | Stop Watch utility class |
CStraightNeedle | Definition of straight, single segment needle |
CStreamOutput | |
CStructuredBackwardGradient | Gradient given by backward finite differences |
CStructuredCentralGradient | Gradient given by central finite differences |
CStructuredForwardGradient | Gradient given by forward finite differences |
CStvkForceModel | |
CSurfaceMesh | Represents a set of triangles & vertices via an array of Vec3d double vertices & Vec3i integer indices |
CSurfaceMeshCut | This filter cuts the triangles of a SurfaceMesh into smaller triangles using input cutting geometry |
CSurfaceMeshDistanceTransform | This filter computes exact signed distance fields using octrees and pseudonormal computations. One might need to adjust the tolerance depending on dataset scale. The bounds for the image can be set in the filter, when none are set the bounding box of the mesh is used, the margin. When providing your own bounds a box larger than the original object might be necessary depending on shape |
CSurfaceMeshFlyingEdges | This filter extracts a single isocontour from an imstkImageData |
CSurfaceMeshImageMask | |
CSurfaceMeshSmoothen | This filter smoothes the input SurfaceMesh currently only laplacian smoothing is provided |
CSurfaceMeshSubdivide | |
CSurfaceMeshTextureProject | This filter projects vertex texture attributes from one SurfaceMesh to another by finding the closest point on the source mesh and interpolating the results. This could later be expanded to arbitrary vertex attributes |
CSurfaceMeshToCapsuleCD | SurfaceMesh to Capsule collision detection Generates vertex-triangle, point-edge, and point-point CD data |
CSurfaceMeshToSphereCD | SurfaceMesh to Sphere collision detection Generates vertex-triangle, point-edge, and point-point CD data By default only generates contact data for the pointset |
CSurfaceMeshToSurfaceMeshCD | Collision detection for surface meshes |
CSurfMeshData | |
CTaskGraph | Base class for TaskGraph, a collection of TaskNode's. Maintains nodes, adjacencyList, and invAdjacencyList |
CTaskGraphController | Base class for TaskGraph controllers which are responsible for executing the TaskGraph |
CTaskGraphVizWriter | Writes a TaskGraph to an svg file. Produces unique node names from duplicates with postfix. Can also color by node compute time and highlight the critical path |
CTaskNode | Base class for TaskGraph nodes |
CTbbTaskGraphController | This class runs an input TaskGraph in parallel using tbb tasks |
CTearable | Defines the behaviour to allow a mesh to seperate based on strain in a given cell. This class approximates strain using the constraint value in from the PBD solver. This is well defined for line meshes, but the behavior may not be what is expected for surface or tet meshes |
CTetrahedralMesh | Represents a set of tetrahedrons & vertices via an array of Vec3d double vertices & Vec4i integer indices |
CTetraToLineMeshCD | Computes intersection points along a line mesh on the faces of the tetrahedrons |
CTetraToPointSetCD | Computes if points lie in tetrahedrons using spatial hashing Generates tetra-point contact data. By default only generates contact data for both sides |
CTexture | A texture can be defined by file reference or ImageData input |
CTextureDelegate | IMSTK texture delegate abstract class |
CTextureManager | The TextureManager provides delegates for textures, it will create new ones and cache old ones |
CTextVisualModel | Renders text to the screen |
CTimeIntegrator | This class defines the time integrators of various types. It only sets the rules of how the velocity (or equivalent) and acceleration (or equivalent) of the present time in terms of positions (or equivalent) from previous time steps |
CTrackingDeviceControl | Base class for all DeviceControls that track something in space (position and orientation) |
CTriangleToTetMap | SurfaceToTetrahedralMap serves as a PointwiseMap but also maps tets to triangle faces |
CTriCell | Utility for triangle comparison |
CUnidirectionalPlaneToCapsuleCD | Plane to capsule collision detection Generates point-direction contact data. By default only generates contact data for the sphere |
CUnidirectionalPlaneToSphereCD | Plane to sphere collision detection Generates point-direction contact data. By default only generates contact data for the sphere |
CUniformSpatialGrid | Class for handling data in 3D grid |
CUPSCounter | Utility class to count updates per second |
►CVecDataArray | Simple dynamic array implementation that also supports event posting and viewing/facade |
Cconst_iterator | |
Citerator | |
CVegaMeshIO | Contains utility classes that convert vega volume mesh to volume mesh and vice-versa |
CVertexLabelVisualModel | Given a PointSet geometry it will render labels for each vertex with numberings |
CVertexPicker | Picks vertices of geomToPick via those that that are intersecting pickingGeom |
CViewer | Base class for viewer that manages render window and the renderers Creates backend-specific renderers on a per-scene basis. Contains user API to configure the rendering with various backends |
CViewerConfig | |
CVisualModel | Contains geometric, material, and render information |
CVolumeRenderMaterial | |
CVolumeRenderMaterialPresets | TODO |
CVolumetricMesh | Base class for all volume mesh types |
CVRPNDeviceClient | This class is the receiver of the updates sent by the vrpn_server |
CVRPNDeviceManager | Connects to the vrpn.exe server and lets iMSTK attach devices to the server |
CVTKAxesRenderDelegate | Delegates rendering of Axes to VTK from VisualModel |
CVTKCapsuleRenderDelegate | Delegates rendering of capsules to VTK from VisualModel |
CVTKCylinderRenderDelegate | Delegates rendering of Cylinders to VTK from VisualModel |
CVTKFluidRenderDelegate | Delegates rendering of Fluid to VTK from VisualModel |
CVTKHexahedralMeshRenderDelegate | Delegates rendering of HexahedralMesh to VTK from VisualModel |
CVTKImageDataRenderDelegate | Delegates rendering of ImageData to VTK (via volume rendering) from VisualModel |
CVTKInteractorStyle | Interactor styles forward their controls to imstk objects |
CVTKLineMeshRenderDelegate | Delegates rendering of LineMesh to VTK from VisualModel |
CVTKMeshIO | Implements VTK read and write functions |
CVTKOpenVRViewer | |
CVTKOrientedCubeRenderDelegate | Delegates rendering of OrientedBox to VTK from VisualModel |
CVTKPlaneRenderDelegate | Delegates rendering of Plane to VTK from VisualModel |
CVTKPointSetRenderDelegate | Delegates rendering of PointSet to VTK from VisualModel |
CVTKPolyDataRenderDelegate | Abstract base class for PolyData-based RenderDelegates |
CVTKRenderDelegate | Base class for VTK render delegates |
CVTKRenderer | Wraps a vtkRenderer |
CVTKScreenCaptureUtility | Utility class to manage screen capture through VTK |
CVTKSphereRenderDelegate | Delegates rendering of Sphere to VTK from VisualModel |
CVTKSurfaceMeshRenderDelegate | Delegates rendering of SurfaceMesh to VTK from VisualModel |
CVTKSurfaceNormalRenderDelegate | Delegates rendering of SurfaceMesh to VTK as normals per triangle center from VisualModel |
CVTKTetrahedralMeshRenderDelegate | Delegates rendering of TetrahedralMesh to VTK from VisualModel |
CVTKTextRenderDelegate | Delegates rendering of text to VTK from TextVisualModel |
CVTKTextureDelegate | Couples a imstk texture to a VTK texture |
CVTKVertexLabelRenderDelegate | Delegates rendering of text per PointSet vertex to VTK from VisualModel |
CVTKViewer | Subclasses viewer for the VTK rendering back-end Creates vtk renderer for each scene. Forwards mouse and keyboard events to the vtk renderwindow |
CVTKVolumeRenderDelegate | Abstract base class for volume-based RenderDelegates |
►Ninclude-guard-convert | |
Cguarded_include | |
►Nstd | |
Cequal_to< imstk::PointEntry > | |
Cequal_to< std::shared_ptr< imstk::TaskNode > > | Equal_to used in algorithms in STL when referring to a shared_ptr<TaskNode> |
Chash< EdgePair > | |
Chash< imstk::EdgePair > | |
Chash< imstk::PbdCHTableKey > | Gives hashing function for PbdCHFuncTableKey complete unique/garunteed no collisions |
Chash< imstk::PointEntry > | |
Chash< imstk::TriCell > | Gives a hashing function for triangles that results in identical hashes for any ordering of ids hash(0,1,2)=hash(1,2,0) and is well distributed (avoids collisions) |
Chash< std::shared_ptr< imstk::TaskNode > > | Hash used in algorithms in STL when referring to a shared_ptr<TaskNode> |
Cless< imstk::NormalGroup > | This method is defined to allow for the map to be properly indexed by Texture objects |
Cless< std::shared_ptr< imstk::Texture > > | |
CAccumulationBuffer | Class to accumulate values for determining a rolling average note that the buffer will be filled with 0 at initialization, therefore the average will ramp up slowly as the buffer is filled |
CChartVisualModel | Class for graphing 2d charts, only supports 2d data |
CDebugGeometryGenerator | |
CDeformableObject | Scene objects that can deform |
CEdgePair | |
Cequal_to | Test if two points are the same or not by comparing their id and coordinates |
CFeDeformable | |
CFemurObject | The FemurObject implements a localized marching cubes. That is we've split up an image into a bunch of chunks. Our model reports on which voxels of the image were modified, we supply this to the local marching cubes and it will update only the respective chunks |
CGraspingData | |
Chash | Returns a hash value for a PointEntry |
CImagePolyDataMask | This filter generates a binary mask from input surface mesh. Optionally one may provide a reference image for which to use its spacing, origin, dimensions It can also work with some geometry that is non-manifold, but results are ambiguous |
CInflatableObject | Inflatable object based on PBD, with inflatable volume and distance constraints |
CInput | |
CKeyboardSceneController | This is the base class for keyboard based controls You can construct this and observe it or subclass and override to implement controls |
Cless | This method is defined to allow for the map to be properly indexed by Texture objects |
CLogger | Lazy initialized singleton |
CNeedleData | |
CNeedleEmbedder | Implements PBD embedded tissue handling for when the needle is embedded in the tissue |
CNeedleInteraction | Defines interaction between NeedleObject and PbdObject |
CNeedlePbdCH | Surface collision disabled upon puncture |
CNeedleRigidBodyCH | |
CPbdBodyToBodyConstraint | Point normal constraint betweent two bodies. Separates two bodies along the provided normal past the two contact points |
CPbdCloth | |
CPbdCollisionOneObject | |
CPbdConectiveTissueConstraintGenerator | This class takes in three pbd objects. The first two represent the bodies that the user wants to connect and the third is the line mesh representation of the connective tissue that is generated using the ConnectiveStrandGenerator filter. The class then generates a set of constraints that connect the ends of the connective strands to the associated organ. The process assumes that the tips of the strands are coincident with the surface of the two pbd objects being connected |
CPbdCutting | |
CPbdPointToBodyConstraint | Resolves a point on body to a vertex with linear and angular movement |
CPbdVolume | |
CPlot2d | |
CRbdAngularLockingConstraint | Constrains the orientation to some fixed orientation |
CRbdAxesLockingConstraint | Constrains the body center of mass to a fixed axes |
CRbdLineToPointRotationConstraint | |
CRbdLineToPointTranslationConstraint | Constraints the line p, q to the fixedPt by rotating p and q |
CRbdPointToArcConstraint | Constrains an rigid body arc geometry to a point by computing the linear force and angular torque to get the arc to the point |
CRigidBody2 | |
CRigidObjectObjectCollision | This class defines a collision interaction between two RigidObjects This involves a RigidObjCH which will generate 2 way or 1 way constraints for the RigidBodyModel/s depending on which system they belong too |
CSceneBehaviour | |
CSceneBehaviour | A SceneBehaviour represents a single component system that resides in the scene. It makes the assumption that all components used are updated with a double for deltaTime/time passed |
CSdfHaptics | |
CSPHBoundaryConditions | Class that holds methods and members for boundary conditions |
CSPHModel | SPH fluid model |
CSpot | A spot light is a point light in a cone shape |
CSubdivideSurfaceMesh | This filter subidivdes the triangles of a SurfaceMesh into more smaller triangles |
CSurfaceInsertionConstraint | Constrains a barycentric point on a surface mesh to a rigid body arc needle |
CThreadInsertionConstraint | Constrains an point on a line mesh to a PBD surface mesh |
CTissueData | Flattened out with reference members |
CViewer | Base class for viewer that manages render window and the renderers /// Creates backend-specific renderers on a per-scene basis. /// Contains user API to configure the rendering with various back-ends /// ``` |
CVRCameraControl | Defines a control scheme to move the camera with joysticks. Relative to world space with Y up. Left joystick look/rotate around Y, right joystick move along XZ, a,b up/down along Y |
CVTKChartRenderDelegate | Render delegate to render graphs |
CvtkInteractorStyleVR | VTK Interactor style for VR |
►CvtkOpenVRRenderWindowInteractorImstk | |
CActionData | |
CTrackerActions |