Skip to content

MeshVTKLoader

This component belongs to the category of the MeshLoaders.

The MeshVTKLoader loads a mesh from a file under the format *.vtk. Such a mesh file can be either surface or volumetric meshes. The *.vtk meshes can be generated using the Paraview software.

Usage

No pre-requisite in your scene to use a MeshLoader.

Mesh loader for the VTK/VTU file format.

Target: Sofa.Component.IO.Mesh

namespace: sofa::component::io::mesh

parents:

  • MeshLoader

Data

Name Description Default value
name object name unnamed
printLog if true, emits extra messages at runtime. 0
tags list of the subsets the object belongs to
bbox this object bounding box
componentState The state of the component among (Dirty, Valid, Undefined, Loading, Invalid). Undefined
listening if true, handle the events, otherwise ignore the events 0
filename Filename of the object
flipNormals Flip Normals 0
triangulate Divide all polygons into triangles 0
createSubelements Divide all n-D elements into their (n-1)-D boundary elements (e.g. tetrahedra to triangles) 0
onlyAttachedPoints Only keep points attached to elements of the mesh 0
translation Translation of the DOFs 0 0 0
rotation Rotation of the DOFs 0 0 0
scale3d Scale of the DOFs in 3 dimensions 1 1 1
transformation 4x4 Homogeneous matrix to transform the DOFs (when present replace any) [1 0 0 0,0 1 0 0,0 0 1 0,0 0 0 1]
Vectors
position Vertices of the mesh loaded
polylines Polylines of the mesh loaded
edges Edges of the mesh loaded
triangles Triangles of the mesh loaded
quads Quads of the mesh loaded
polygons Polygons of the mesh loaded
highOrderEdgePositions High order edge points of the mesh loaded
highOrderTrianglePositions High order triangle points of the mesh loaded
highOrderQuadPositions High order quad points of the mesh loaded
tetrahedra Tetrahedra of the mesh loaded
hexahedra Hexahedra of the mesh loaded
pentahedra Pentahedra of the mesh loaded
highOrderTetrahedronPositions High order tetrahedron points of the mesh loaded
highOrderHexahedronPositions High order hexahedron points of the mesh loaded
pyramids Pyramids of the mesh loaded
normals Normals of the mesh loaded
Groups
edgesGroups Groups of Edges
trianglesGroups Groups of Triangles
quadsGroups Groups of Quads
polygonsGroups Groups of Polygons
tetrahedraGroups Groups of Tetrahedra
hexahedraGroups Groups of Hexahedra
pentahedraGroups Groups of Pentahedra
pyramidsGroups Groups of Pyramids
Name Description Destination type name
context Graph Node containing this object (or BaseContext::getDefault() if no graph is used) BaseContext
slaves Sub-objects used internally by this object BaseObject
master nullptr for regular objects, or master object for which this object is one sub-objects BaseObject

Examples

MeshVTKLoader.scn

<!-- For more details see: https://wiki.sofa-framework.org/tdev/wiki/Notes/NewLoaderArchitecture -->
<Node name="Root" gravity="0 -9.81 0" dt="0.02">
    <RequiredPlugin name="Sofa.Component.Collision.Detection.Algorithm"/> <!-- Needed to use components [BVHNarrowPhase BruteForceBroadPhase CollisionPipeline] -->
    <RequiredPlugin name="Sofa.Component.Collision.Detection.Intersection"/> <!-- Needed to use components [MinProximityIntersection] -->
    <RequiredPlugin name="Sofa.Component.Collision.Response.Contact"/> <!-- Needed to use components [CollisionResponse] -->
    <RequiredPlugin name="Sofa.Component.IO.Mesh"/> <!-- Needed to use components [MeshVTKLoader] -->
    <RequiredPlugin name="Sofa.Component.LinearSolver.Iterative"/> <!-- Needed to use components [CGLinearSolver] -->
    <RequiredPlugin name="Sofa.Component.ODESolver.Backward"/> <!-- Needed to use components [EulerImplicitSolver] -->
    <RequiredPlugin name="Sofa.Component.StateContainer"/> <!-- Needed to use components [MechanicalObject] -->
    <RequiredPlugin name="Sofa.Component.Topology.Container.Dynamic"/> <!-- Needed to use components [TriangleSetGeometryAlgorithms TriangleSetTopologyContainer TriangleSetTopologyModifier] -->
    <RequiredPlugin name="Sofa.Component.Visual"/> <!-- Needed to use components [VisualStyle] -->
    <RequiredPlugin name="Sofa.GL.Component.Rendering3D"/> <!-- Needed to use components [OglModel] -->

    <DefaultAnimationLoop/>
    <VisualStyle displayFlags="showVisual showBehaviorModels showForceFields showCollision showMapping" />
    <CollisionPipeline name="DefaultCollisionPipeline" verbose="0" draw="0" depth="6" />
    <BruteForceBroadPhase/>
    <BVHNarrowPhase/>
    <MinProximityIntersection name="Proximity" alarmDistance="0.3" contactDistance="0.2" />
    <CollisionResponse name="Response" response="PenalityContactForceField" />
    <Node name="vtk file">
        <EulerImplicitSolver name="cg_odesolver" printLog="false"  rayleighStiffness="0.1" rayleighMass="0.1" />
        <CGLinearSolver iterations="25" name="linear solver" tolerance="1.0e-9" threshold="1.0e-9" />
        <MeshVTKLoader name="VtkLoader" filename="mesh/liver.vtk" flipNormals="0"/>
        <!--      <MeshGmshLoader name="loader" filename="mesh/square3.msh" /> -->
        <MechanicalObject name="dofs" scale="1" src="@VtkLoader" />
        <TriangleSetTopologyContainer name="topo" src="@VtkLoader" />
        <TriangleSetTopologyModifier name="modif" />
        <TriangleSetGeometryAlgorithms name="triGeo" />
        <OglModel name="VisualModel" src="@VtkLoader" color="red" texturename="textures/liver-texture-square.png" />
    </Node>
</Node>
def createScene(root_node):

   root = root_node.addChild('Root', gravity="0 -9.81 0", dt="0.02")

   root.addObject('RequiredPlugin', name="Sofa.Component.Collision.Detection.Algorithm")
   root.addObject('RequiredPlugin', name="Sofa.Component.Collision.Detection.Intersection")
   root.addObject('RequiredPlugin', name="Sofa.Component.Collision.Response.Contact")
   root.addObject('RequiredPlugin', name="Sofa.Component.IO.Mesh")
   root.addObject('RequiredPlugin', name="Sofa.Component.LinearSolver.Iterative")
   root.addObject('RequiredPlugin', name="Sofa.Component.ODESolver.Backward")
   root.addObject('RequiredPlugin', name="Sofa.Component.StateContainer")
   root.addObject('RequiredPlugin', name="Sofa.Component.Topology.Container.Dynamic")
   root.addObject('RequiredPlugin', name="Sofa.Component.Visual")
   root.addObject('RequiredPlugin', name="Sofa.GL.Component.Rendering3D")
   root.addObject('DefaultAnimationLoop', )
   root.addObject('VisualStyle', displayFlags="showVisual showBehaviorModels showForceFields showCollision showMapping")
   root.addObject('CollisionPipeline', name="DefaultCollisionPipeline", verbose="0", draw="0", depth="6")
   root.addObject('BruteForceBroadPhase', )
   root.addObject('BVHNarrowPhase', )
   root.addObject('MinProximityIntersection', name="Proximity", alarmDistance="0.3", contactDistance="0.2")
   root.addObject('CollisionResponse', name="Response", response="PenalityContactForceField")

   vtk_file = Root.addChild('vtk file')

   vtk_file.addObject('EulerImplicitSolver', name="cg_odesolver", printLog="false", rayleighStiffness="0.1", rayleighMass="0.1")
   vtk_file.addObject('CGLinearSolver', iterations="25", name="linear solver", tolerance="1.0e-9", threshold="1.0e-9")
   vtk_file.addObject('MeshVTKLoader', name="VtkLoader", filename="mesh/liver.vtk", flipNormals="0")
   vtk_file.addObject('MechanicalObject', name="dofs", scale="1", src="@VtkLoader")
   vtk_file.addObject('TriangleSetTopologyContainer', name="topo", src="@VtkLoader")
   vtk_file.addObject('TriangleSetTopologyModifier', name="modif")
   vtk_file.addObject('TriangleSetGeometryAlgorithms', name="triGeo")
   vtk_file.addObject('OglModel', name="VisualModel", src="@VtkLoader", color="red", texturename="textures/liver-texture-square.png")