SEARCH
TOOLBOX
LANGUAGES
TutorialTopologySurfaceMesh

TutorialTopologySurfaceMesh

From SOFAWiki

Jump to: navigation, search
Tutorial : Surface Mesh Topology

Contents

Example Scene Using different surface meshes (static, dynamic and regular)

This example is distributed in
examples/Tutorials/Basic/TutorialTopologySurfaceDifferentMesh.scn
within SofaSVN and SOFA distributions starting from 1.0 beta 4.

Dynamic mesh in green, static mesh in red and regular mesh in blue.

Graph

XML Description

<?xml version="1.0" ?>
<!-- See https://wiki.sofa-framework.org/wiki/TutorialTopologySurfaceMesh -->
<Node 	name="root" gravity="0 -9.81 1" dt="0.05" showBehaviorModels="1" showCollisionModels="0" showMappings="0" showForceFields="0" >
  <!-- Basic Components to perform the collision detection -->
  <DefaultPipeline name="DefaultCollisionPipeline" depth="6"/>
  <BruteForceDetection name="Detection"/>
  <MinProximityIntersection name="Proximity" alarmDistance="0.8" contactDistance="0.5"/>
  <DefaultContactManager name="Response"/>
  <DefaultCollisionGroupManager name="Group"/>
 
  <Node name="Cloth Static Mesh">
    <MechanicalObject name="DOFs" template="Vec3d" translation="10 0 5" rotation="0 90 90" scale="10"/>
    <FixedConstraint name="Fixed dof" template="Vec3d" indices="0 1"/>
    <UniformMass name="Mass" template="Vec3d" mass="1" totalmass="50"/>
    <EulerImplicitSolver name="cg_odesolver" printLog="0"/>
    <CGLinearSolver name="linear solver" template="GraphScattered" iterations="40" tolerance="1e-09" threshold="1e-09"/>
 
    <MeshTopology name="Static Mesh" fileTopology="/home/epernod/projects/sofa-dev/trunk/Sofa/share/mesh/square3.msh"/>
    <MeshSpringForceField name="Springs" template="Vec3d"/>
    <TriangularFEMForceField name="FEM" template="Vec3d" method="large" poissonRatio="0.3" youngModulus="60"/>
 
    <TriangleModel name="models"/>
    <OglModel name="Visual" template="ExtVec3f" color="red"/>
    <IdentityMapping name="Mapping" template="Mapping&lt;Vec3d,ExtVec3f&gt;" object1=".." object2="Visual"/>
  </Node>
 
  <Node name="Cloth Regular Mesh">
    <MechanicalObject  name="DOFs" template="Vec3d" translation="0 0 -10"/>
    <FixedConstraint name="Fixed dof" template="Vec3d" indices="0 870"/>
    <UniformMass name="Mass" template="Vec3d" mass="1" totalmass="50"/>
    <EulerImplicitSolver name="cg_odesolver" printLog="0"/>
    <CGLinearSolver name="linear solver" template="GraphScattered" iterations="40" tolerance="1e-09" threshold="1e-09"/>
 
    <RegularGridTopology name="default38" n="30 1 30" min="0 0 -20" max="10 0 -30" p0="0 0 -1"/>
    <RegularGridSpringForceField template="Vec3d"/>
    <QuadBendingSprings template="Vec3d" name="Bend" stiffness="20" damping="0"/>
 
    <OglModel name="Visual" template="ExtVec3f" color="blue"/>
    <IdentityMapping name="Mapping" template="Mapping&lt;Vec3d,ExtVec3f&gt;" object1=".." object2="Visual"/>
  </Node>
 
  <Node name="Cloth Dynamic Mesh">
    <MechanicalObject name="DOF" template="Vec3d" translation="10 0 20" rotation="0 90 90" scale="10"/>
    <FixedConstraint name="Fixed dof" template="Vec3d" indices="0 1"/>
    <UniformMass name="Mass" template="Vec3d" mass="1" totalmass="50"/>
    <EulerImplicitSolver name="cg_odesolver" printLog="0"/>
    <CGLinearSolver name="linear solver" template="GraphScattered" iterations="40" tolerance="1e-09" threshold="1e-09"/>
 
 
    <TriangleSetTopologyContainer name="Topology Container" fileTopology="/home/epernod/projects/sofa-dev/trunk/Sofa/share/mesh/square3.msh" />
    <TriangleSetTopologyModifier name="Topology Modifier"/>
    <TriangleSetTopologyAlgorithms template="Vec3d" name="Topology Algorithms"/>
    <TriangleSetGeometryAlgorithms template="Vec3d" name="Geometry Algorithms"/>
    <TriangularBendingSprings name="FEM-Bend" template="Vec3d" stiffness="300" damping="1"/>
    <TriangularFEMForceField name="FEM" template="Vec3d" method="large" poissonRatio="0.3" youngModulus="60"/>
 
    <TriangleModel name="models"/>
    <OglModel name="Visual" template="ExtVec3f" color="green"/>
    <IdentityMapping name="Mapping" template="Mapping&lt;Vec3d,ExtVec3f&gt;" object1=".." object2="Visual"/>
  </Node>
</Node>

Example Scene of two different dynamic surface mesh types (triangles and quads)

This example is distributed in
examples/Tutorials/Basic/TutorialTopologyDynamicSurfaceMesh.scn
within SofaSVN and SOFA distributions starting from 1.0 beta 4.

Graph

XML Description

<?xml version="1.0" ?>
<!-- See https://wiki.sofa-framework.org/wiki/TutorialTopologySurfaceMesh -->
<Node name="root" gravity="0 -9.81 1" dt="0.05" showBehaviorModels="1" showCollisionModels="0" showMappings="0" showForceFields="0" showWireFrame="1">
  <!-- Basic Components to perform the collision detection -->
  <DefaultPipeline name="DefaultCollisionPipeline" depth="6"/>
  <BruteForceDetection name="Detection"/>
  <MinProximityIntersection name="Proximity" alarmDistance="0.8" contactDistance="0.5"/>
  <DefaultContactManager name="Response"/>
  <DefaultCollisionGroupManager name="Group"/>
 
  <Node name="Triangles Mesh">
    <MechanicalObject name="DOFs" template="Vec3d" translation="0 10 10" rotation="0 -90 180" scale="10"/>
    <FixedConstraint name="Fixed dof" template="Vec3d" indices="0 1"/>
    <UniformMass name="Mass" template="Vec3d" mass="1" totalmass="1"/>
    <EulerImplicitSolver name="cg_odesolver" printLog="0"/>
    <CGLinearSolver name="linear solver" template="GraphScattered" iterations="25" tolerance="1e-09" threshold="1e-09"/>
 
    <TriangleSetTopologyContainer name="Topology Container" fileTopology="mesh/square1.msh"/>
    <TriangleSetTopologyModifier name="Topology Modifier"/>
    <TriangleSetTopologyAlgorithms template="Vec3d" name="Topology Algorithms"/>
    <TriangleSetGeometryAlgorithms template="Vec3d" name="Geometry Algorithms"/>
    <TriangularBendingSprings name="FEM-Bend" template="Vec3d" stiffness="300" damping="1"/>
    <TriangularFEMForceField name="FEM" template="Vec3d" method="large" poissonRatio="0.3" youngModulus="60"/>
 
    <TriangleModel name="models"/>
    <OglModel name="Visual" template="ExtVec3f" color="green"/>
    <IdentityMapping name="Mapping" template="Mapping&lt;Vec3d,ExtVec3f&gt;" object1=".." object2="Visual"/>
  </Node>
 
  <Node name="Quads Mesh">
    <MechanicalObject name="DOFs" template="Vec3d" rotation="0 90 0" scale="4"/>
    <FixedConstraint name="Fixed dof" template="Vec3d" indices="12 15"/>
    <UniformMass name="Mass" template="Vec3d" mass="1" totalmass="1"/>
    <EulerImplicitSolver name="cg_odesolver" printLog="0"/>
    <CGLinearSolver name="linear solver" template="GraphScattered" iterations="25" tolerance="1e-09" threshold="1e-09"/>
 
    <QuadSetTopologyContainer name="Container" fileTopology="mesh/nine_quads.msh"/>
    <QuadSetTopologyModifier name="Modifier"/>
    <QuadSetTopologyAlgorithms template="Vec3d" name="TopoAlgo"/>
    <QuadSetGeometryAlgorithms template="Vec3d" name="GeomAlgo"/>
    <QuadularBendingSprings template="Vec3d" name="FEM-Bend" stiffness="3000" damping="1"/>
 
    <Node name="Visu">
      <OglModel template="ExtVec3f" name="Visual"/>
      <IdentityMapping template="Mapping&lt;Vec3d,ExtVec3f&gt;" name="default5" object1="../../DOFs" object2="Visual"/>
    </Node>
 
    <Node name="Triangles">
      <TriangleSetTopologyContainer name="Container"/>
      <TriangleSetTopologyModifier name="Modifier"/>
      <TriangleSetTopologyAlgorithms template="Vec3d" name="TopoAlgo"/>
      <TriangleSetGeometryAlgorithms template="Vec3d" name="GeomAlgo"/>
      <Quad2TriangleTopologicalMapping name="default6" object1="../../Container" object2="Container"/>
      <TriangularFEMForceField template="Vec3d" name="FEM" method="large" poissonRatio="0.3" youngModulus="1000"/>
      <TriangularBendingSprings template="Vec3d" name="FEM-Bend" stiffness="3000" damping="1"/>
      <TriangleModel name="default7"/>
    </Node>
  </Node>
</Node>