MeshTrianLoader
Specific mesh loader for trian (only triangulations) 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] |
trian2 | Set to true if the mesh is a trian2 format. | 0 |
neighborTable | Table of neighborhood triangle indices for each triangle. | |
edgesOnBorder | List of edges which are on the border of the mesh loaded. | |
trianglesOnBorderList | List of triangle indices which are on the border of the mesh loaded. | |
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 |
Links
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
MeshTrianLoader.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 [MeshTrianLoader] -->
<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="Trian 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" />
<MeshTrianLoader name="TrianLoader" filename="mesh/coeur1.trian" />
<!-- <MeshGmshLoader name="loader" filename="mesh/square3.msh" /> -->
<MechanicalObject name="dofs" scale="1" src="@TrianLoader" />
<TriangleSetTopologyContainer name="topo" src="@TrianLoader" />
<TriangleSetTopologyModifier name="modif" />
<TriangleSetGeometryAlgorithms name="triGeo" />
<OglModel name="VisualModel" src="@TrianLoader" color="red" />
</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")
trian_file = Root.addChild('Trian file')
trian_file.addObject('EulerImplicitSolver', name="cg_odesolver", printLog="false", rayleighStiffness="0.1", rayleighMass="0.1")
trian_file.addObject('CGLinearSolver', iterations="25", name="linear solver", tolerance="1.0e-9", threshold="1.0e-9")
trian_file.addObject('MeshTrianLoader', name="TrianLoader", filename="mesh/coeur1.trian")
trian_file.addObject('MechanicalObject', name="dofs", scale="1", src="@TrianLoader")
trian_file.addObject('TriangleSetTopologyContainer', name="topo", src="@TrianLoader")
trian_file.addObject('TriangleSetTopologyModifier', name="modif")
trian_file.addObject('TriangleSetGeometryAlgorithms', name="triGeo")
trian_file.addObject('OglModel', name="VisualModel", src="@TrianLoader", color="red")