Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/main' into fix_incisionEdgeBorders
Browse files Browse the repository at this point in the history
  • Loading branch information
epernod committed Jun 6, 2024
2 parents bd9d3dc + 19f0e90 commit 59e325b
Show file tree
Hide file tree
Showing 53 changed files with 1,647 additions and 903 deletions.
51 changes: 28 additions & 23 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,31 +14,13 @@ jobs:
sofa_branch: [master]

steps:
- name: (Mac) Workaround for homebrew
shell: bash
if: runner.os == 'macOS'
run: |
rm -f /usr/local/bin/2to3
rm -f /usr/local/bin/idle3
rm -f /usr/local/bin/pydoc3
rm -f /usr/local/bin/python3
rm -f /usr/local/bin/python3-config
rm -f /usr/local/bin/2to3-3.11
rm -f /usr/local/bin/idle3.11
rm -f /usr/local/bin/pydoc3.11
rm -f /usr/local/bin/python3.11
rm -f /usr/local/bin/python3.11-config
rm -f /usr/local/bin/go
rm -f /usr/local/bin/gofmt
- name: Setup SOFA and environment
id: sofa
uses: sofa-framework/sofa-setup-action@v5
with:
sofa_root: ${{ github.workspace }}/sofa
sofa_version: ${{ matrix.sofa_branch }}
sofa_scope: 'standard'

- name: Checkout source code
uses: actions/checkout@v2
with:
Expand All @@ -56,7 +38,7 @@ jobs:
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX="$WORKSPACE_INSTALL_PATH" \
../src \
&& ninja -v install"
&& ninja install"
else
cd "$WORKSPACE_BUILD_PATH"
ccache -z
Expand All @@ -68,7 +50,7 @@ jobs:
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_INSTALL_PREFIX="$WORKSPACE_INSTALL_PATH" \
../src
ninja -v install
ninja install
echo ${CCACHE_BASEDIR}
ccache -s
fi
Expand All @@ -83,25 +65,26 @@ jobs:
with:
name: Tearing_${{ steps.sofa.outputs.run_branch }}_for-SOFA-${{ steps.sofa.outputs.sofa_version }}_${{ runner.os }}
path: ${{ env.WORKSPACE_ARTIFACT_PATH }}

- name: Set env vars for tests
shell: bash
run: |
# Set env vars for tests
if [[ "$RUNNER_OS" == "Windows" ]]; then
echo "$WORKSPACE_ARTIFACT_PATH/lib" >> $GITHUB_PATH
echo "$WORKSPACE_ARTIFACT_PATH/bin" >> $GITHUB_PATH
echo "$SOFA_ROOT/plugins/SofaPython3/bin" >> $GITHUB_PATH
echo "SOFA_PLUGIN_PATH=$WORKSPACE_ARTIFACT_PATH/bin" | tee -a $GITHUB_ENV
else
echo "SOFA_PLUGIN_PATH=$WORKSPACE_ARTIFACT_PATH/lib" | tee -a $GITHUB_ENV
fi
if [[ "$RUNNER_OS" == "macOS" ]]; then
echo "DYLD_LIBRARY_PATH=$WORKSPACE_ARTIFACT_PATH/lib:$SOFA_ROOT/lib:$DYLD_LIBRARY_PATH" | tee -a $GITHUB_ENV
echo "DYLD_LIBRARY_PATH=$WORKSPACE_ARTIFACT_PATH/lib:$SOFA_ROOT/lib:$SOFA_ROOT/plugins/SofaPython3/lib:$DYLD_LIBRARY_PATH" | tee -a $GITHUB_ENV
fi
if [[ "$RUNNER_OS" == "Linux" ]]; then
echo "LD_LIBRARY_PATH=$WORKSPACE_ARTIFACT_PATH/lib:$SOFA_ROOT/lib:$LD_LIBRARY_PATH" | tee -a $GITHUB_ENV
echo "LD_LIBRARY_PATH=$WORKSPACE_ARTIFACT_PATH/lib:$SOFA_ROOT/lib:$SOFA_ROOT/plugins/SofaPython3/lib:$LD_LIBRARY_PATH" | tee -a $GITHUB_ENV
fi
- name: Run Tearing_test
Expand All @@ -111,6 +94,28 @@ jobs:
chmod +x $WORKSPACE_BUILD_PATH/bin/Tearing_test${{ steps.sofa.outputs.exe }}
cd $WORKSPACE_BUILD_PATH
./bin/Tearing_test${{ steps.sofa.outputs.exe }}
- name: Fetch, install and run Regression_test
if: always()
shell: bash
run: |
if [[ "$RUNNER_OS" != "macOS" ]]; then
# Get regression from github releases
mkdir -p "${{ runner.temp }}/regression_tmp/install"
curl --output "${{ runner.temp }}/regression_tmp/${RUNNER_OS}.zip" -L https://github.com/sofa-framework/regression/releases/download/release-master/Regression_test_master_for-SOFA-${{ steps.sofa.outputs.sofa_version }}_${RUNNER_OS}.zip
unzip -qq "${{ runner.temp }}/regression_tmp/${RUNNER_OS}.zip" -d "${{ runner.temp }}/regression_tmp/install"
# Install it in the SOFA bin directory
$SUDO mv "${{ runner.temp }}"/regression_tmp/install/Regression_*/bin/* "${SOFA_ROOT}/bin"
chmod +x ${SOFA_ROOT}/bin/Regression_test${{ steps.sofa.outputs.exe }}
# Setup mandatory env vars
export REGRESSION_SCENES_DIR="${WORKSPACE_SRC_PATH}/scenes"
export REGRESSION_REFERENCES_DIR="${WORKSPACE_SRC_PATH}/regression/references"
# Run regression test bench
${SOFA_ROOT}/bin/Regression_test${{ steps.sofa.outputs.exe }}
else
echo "Regression tests are not supported on the CI for macOS yet (TODO)"
fi
deploy:
name: Deploy artifacts
Expand Down
8 changes: 8 additions & 0 deletions CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -18,14 +18,22 @@ set(HEADER_FILES
${TEARING_SRC_DIR}/TearingAlgorithms.h
${TEARING_SRC_DIR}/TearingAlgorithms.inl

${TEARING_SRC_DIR}/BaseTearingEngine.h
${TEARING_SRC_DIR}/BaseTearingEngine.inl

${TEARING_SRC_DIR}/TearingEngine.h
${TEARING_SRC_DIR}/TearingEngine.inl

${TEARING_SRC_DIR}/TearingScenarioEngine.h
${TEARING_SRC_DIR}/TearingScenarioEngine.inl
)

set(SOURCE_FILES
${TEARING_SRC_DIR}/initTearing.cpp
${TEARING_SRC_DIR}/TearingAlgorithms.cpp
${TEARING_SRC_DIR}/BaseTearingEngine.cpp
${TEARING_SRC_DIR}/TearingEngine.cpp
${TEARING_SRC_DIR}/TearingScenarioEngine.cpp
)

set(README_FILES
Expand Down
6 changes: 3 additions & 3 deletions Tearing_test/TearingEngine_test.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -151,9 +151,9 @@ struct TearingEngine_Case1 : public TearingEngine_test
m_instance.simulate(0.05);
}

EXPECT_EQ(topoCon->getNbTriangles(), 1450);
EXPECT_EQ(topoCon->getNbEdges(), 2223);
EXPECT_EQ(topoCon->getNbPoints(), 774);
EXPECT_EQ(topoCon->getNbTriangles(), 1505);
EXPECT_EQ(topoCon->getNbEdges(), 2334);
EXPECT_EQ(topoCon->getNbPoints(), 830);

return true;
}
Expand Down
Empty file.
Binary file not shown.
Empty file.
Binary file not shown.
Empty file.
Binary file not shown.
Empty file.
Binary file not shown.
Empty file.
Binary file not shown.
Empty file.
Binary file not shown.
Binary file not shown.
Empty file.
Binary file not shown.
Binary file not shown.
Empty file.
Binary file not shown.
Binary file not shown.
Empty file.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
30 changes: 30 additions & 0 deletions regression/regression_tests.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import os
import sys

#arguments:
# 0 - script name
# 1 - sofa build dir
#use:
# python regression_tests.py /c/projects/sofa-build/

sofa_build_dir = sys.argv[1]
pwd = os.getcwd()
reg_binary = sofa_build_dir + '/bin/Release/Regression_test.exe'
ref_dir = pwd + "/references/"
scenes_dir = pwd + "/../scenes/"

# logs
print("--- Regression config ---")
print("sofa_build_dir: " + sofa_build_dir)
print("ref_dir: " + ref_dir)
print("scenes_dir: " + scenes_dir)
print("reg_binary: " + reg_binary)
print("-------------------------")

os.environ["REGRESSION_SCENES_DIR"] = scenes_dir
os.environ["REGRESSION_REFERENCES_DIR"] = ref_dir

os.environ["SOFA_ROOT"] = sofa_build_dir
os.environ["SOFA_PLUGIN_PATH"] = sofa_build_dir + '/lib'

os.system(reg_binary)
10 changes: 5 additions & 5 deletions scenes/Benchmarks/Scenario-01_squareTissue_horizontal-cut.scn
Original file line number Diff line number Diff line change
Expand Up @@ -53,14 +53,14 @@

<BoxROI template="Vec3d" name="PulledSide" box="-0.1 0.1 0.1 10.1 -0.1 -0.1" drawBoxes="1"/>
<ConstantForceField name="CFF" indices="@PulledSide.indices" forces="0 -100 0" showArrowSize=".01" />

<TearingEngine name="TearingEngine" input_position="@Mo.position" showTearableTriangle="0" showFracturePath="0"
startVertexId="421" startDirection="1.0 0.0 0.0" startLength="5"/>


<TriangularFEMForceField name="FEM" youngModulus="60" poissonRatio="0.3" method="large" computePrincipalStress="true"/>
<TriangularBendingSprings name="FEM-Bend" stiffness="300" damping="1.0" />
<TriangleCollisionModel />


<TearingScenarioEngine name="TearingScenarioEngine" input_position="@Mo.position" showTearableTriangle="0" showFracturePath="1"
startVertexId="421" startDirection="1.0 0.0 0.0" startLength="3" />

<Node >
<OglModel name="Visual" color="red" />
<IdentityMapping input="@.." output="@Visual" />
Expand Down
12 changes: 12 additions & 0 deletions scenes/RegressionStateScenes.regression-tests
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
# WARNING:
# REGRESSION_TEST DOES NOT SUPPORT DASHES ("-") IN SCENE NAMES.
# USE UNDERSCORES ("_") INSTEAD.

../regression/references

### Demo scenes ###
./TearingEngine/SquareTissue_01_gravity.scn 500 1e-4 1 1
./TearingEngine/SquareTissue_02_pressureBorder.scn 500 1e-4 1 1
./TearingEngine/SquareTissue_03_centralePressure.scn 500 1e-4 1 1
./TearingEngine/SquareTissue_04_cornerPressure.scn 500 1e-4 1 1
./TearingEngine/SquareTissue_05_circleHole_gravity.scn 500 1e-4 1 1
13 changes: 13 additions & 0 deletions scenes/RegressionTopologyScenes.regression-tests
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
# WARNING:
# REGRESSION_TEST DOES NOT SUPPORT DASHES ("-") IN SCENE NAMES.
# USE UNDERSCORES ("_") INSTEAD.

### References relative path ###
../regression/references_topology

### Topology scenes ###
./TearingEngine/SquareTissue_01_gravity.scn 200 1e-4 1
./TearingEngine/SquareTissue_02_pressureBorder.scn 200 1e-4 1
./TearingEngine/SquareTissue_03_centralePressure.scn 200 1e-4 1
./TearingEngine/SquareTissue_04_cornerPressure.scn 200 1e-4 1
./TearingEngine/SquareTissue_05_circleHole_gravity.scn 200 1e-4 1
8 changes: 4 additions & 4 deletions scenes/TearingEngine/SquareTissue_01_gravity.scn
Original file line number Diff line number Diff line change
Expand Up @@ -43,19 +43,19 @@
<TriangleSetGeometryAlgorithms name="GeomAlgo" template="Vec3d" />

<MechanicalObject name="Mo"/>
<DiagonalMass massDensity="10.0" />
<DiagonalMass massDensity="2.0" />

<BoxROI name="FixedSide" box="-0.1 9.9 0.1 10.1 10.1 -0.1" drawBoxes="1" />
<FixedConstraint name="FixedConstraint" indices="@FixedSide.indices" />

<TriangularFEMForceField name="FEM" youngModulus="60" poissonRatio="0.3" method="large" computePrincipalStress="1"/>
<TriangularFEMForceField name="FEM" youngModulus="300" poissonRatio="0.3" method="large" computePrincipalStress="1"/>
<TriangularBendingSprings name="FEM-Bend" stiffness="300" />
<PlaneForceField normal="0 1 0" d="-20" stiffness="100000" showPlane="1" showPlaneSize="20"/>

<TriangleCollisionModel />

<TearingEngine name="TearingEngine" input_position="@Mo.position" stressThreshold="1.0"
step="30" nbFractureMax="40" showFracturePath="0"/>
<TearingEngine name="TearingEngine" input_position="@Mo.position" stressThreshold="6.0"
step="30" nbFractureMax="40" showFracturePath="1" fractureMaxLength="1.0"/>

<Node >
<OglModel name="Visual" color="red" />
Expand Down
65 changes: 65 additions & 0 deletions scenes/TearingEngine/SquareTissue_01_gravity_interaction.scn
Original file line number Diff line number Diff line change
@@ -0,0 +1,65 @@
<?xml version="1.0" ?>
<!--Test case 1: Upper border is fixed and only heavy gravity is applied -->

<Node name="root" dt="0.01" showBoundingTree="0" gravity="0 -10 0">
<Node name="RequiredPlugins">
<RequiredPlugin name="Sofa.Component.Collision.Detection.Algorithm"/> <!-- Needed to use components [BVHNarrowPhase, BruteForceBroadPhase, DefaultPipeline] -->
<RequiredPlugin name="Sofa.Component.Collision.Detection.Intersection"/> <!-- Needed to use components [MinProximityIntersection] -->
<RequiredPlugin name="Sofa.Component.Collision.Geometry"/> <!-- Needed to use components [TriangleCollisionModel] -->
<RequiredPlugin name="Sofa.Component.Collision.Response.Contact"/> <!-- Needed to use components [CollisionResponse] -->
<RequiredPlugin name="Sofa.Component.Constraint.Projective"/> <!-- Needed to use components [FixedConstraint] -->
<RequiredPlugin name="Sofa.Component.Engine.Select"/> <!-- Needed to use components [BoxROI] -->
<RequiredPlugin name="Sofa.Component.IO.Mesh"/> <!-- Needed to use components [MeshGmshLoader] -->
<RequiredPlugin name="Sofa.Component.LinearSolver.Iterative"/> <!-- Needed to use components [CGLinearSolver] -->
<RequiredPlugin name="Sofa.Component.Mapping.Linear"/> <!-- Needed to use components [IdentityMapping] -->
<RequiredPlugin name="Sofa.Component.Mass"/> <!-- Needed to use components [DiagonalMass] -->
<RequiredPlugin name="Sofa.Component.ODESolver.Backward"/> <!-- Needed to use components [EulerImplicitSolver] -->
<RequiredPlugin name="Sofa.Component.SceneUtility"/> <!-- Needed to use components [InfoComponent] -->
<RequiredPlugin name="Sofa.Component.SolidMechanics.FEM.Elastic"/> <!-- Needed to use components [TriangularFEMForceField] -->
<RequiredPlugin name="Sofa.Component.SolidMechanics.Spring"/> <!-- Needed to use components [TriangularBendingSprings] -->
<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] -->
<RequiredPlugin name="Tearing"/>
</Node>

<VisualStyle displayFlags="showVisual showBehaviorModels" />

<DefaultAnimationLoop />
<DefaultPipeline verbose="0" />
<BruteForceBroadPhase/>
<BVHNarrowPhase/>
<CollisionResponse response="PenalityContactForceField" />
<MinProximityIntersection name="Proximity" alarmDistance="0.8" contactDistance="0.5" />

<Node name="SquareGravity_FEM">
<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" />
<MeshGmshLoader name="meshLoader" filename="mesh/square3.msh" scale="10" createSubelements="true" />

<TriangleSetTopologyContainer name="Container" src="@meshLoader" fileTopology="" tags=" " />
<TriangleSetTopologyModifier name="Modifier" />
<TriangleSetGeometryAlgorithms name="GeomAlgo" template="Vec3d" />

<MechanicalObject name="Mo"/>
<DiagonalMass massDensity="2.0" />

<BoxROI name="FixedSide" box="-0.1 9.9 0.1 10.1 10.1 -0.1" drawBoxes="1" />
<FixedConstraint name="FixedConstraint" indices="@FixedSide.indices" />

<TriangularFEMForceField name="FEM" youngModulus="300" poissonRatio="0.3" method="large" computePrincipalStress="1"/>
<TriangularBendingSprings name="FEM-Bend" stiffness="300" />
<PlaneForceField normal="0 1 0" d="-20" stiffness="100000" showPlane="1" showPlaneSize="20"/>

<TriangleCollisionModel />

<TearingEngine name="TearingEngine" input_position="@Mo.position" stressThreshold="12.0"
step="30" nbFractureMax="40" showFracturePath="1" fractureMaxLength="1.5"/>

<Node >
<OglModel name="Visual" color="red" />
<IdentityMapping input="@.." output="@Visual" />
</Node>
</Node>
</Node>
8 changes: 4 additions & 4 deletions scenes/TearingEngine/SquareTissue_02_pressureBorder.scn
Original file line number Diff line number Diff line change
Expand Up @@ -50,11 +50,11 @@
<FixedConstraint name="FixedConstraint" indices="@FixedSide.indices" />

<BoxROI template="Vec3d" name="PulledSide" box="-0.1 0.1 0.1 10.1 -0.1 -0.1" drawBoxes="1"/>
<ConstantForceField name="CFF" indices="@PulledSide.indices" forces="0 -200 50" showArrowSize=".01" />
<ConstantForceField name="CFF" indices="@PulledSide.indices" forces="0 -40 10" showArrowSize=".01" />

<TriangularFEMForceField name="FEM" youngModulus="100" poissonRatio="0.3" method="large" computePrincipalStress="true" showStressVector="1"/>
<TearingEngine name="TearingEngine" input_position="@Mo.position" stressThreshold="0.3"
step="20" nbFractureMax="40" showFracturePath="1"/>
<TriangularFEMForceField name="FEM" youngModulus="300" poissonRatio="0.3" method="large" computePrincipalStress="true" showStressVector="1"/>
<TearingEngine name="TearingEngine" input_position="@Mo.position" stressThreshold="6.0"
step="30" nbFractureMax="40" showFracturePath="1" fractureMaxLength="1.0"/>

<TriangularBendingSprings name="FEM-Bend" stiffness="300" damping="1.0" showSprings="0" />
<PlaneForceField normal="0 1 0" d="-30" stiffness="100000" showPlane="1" showPlaneSize="20"/>
Expand Down
6 changes: 3 additions & 3 deletions scenes/TearingEngine/SquareTissue_03_centralePressure.scn
Original file line number Diff line number Diff line change
Expand Up @@ -53,13 +53,13 @@
<!--<BoxROI template="Vec3d" name="PulledSide" box="-0.1 0.1 0.1 10.1 -0.1 -0.1" drawBoxes="1"/>-->
<ConstantForceField name="CFF" indices="@PullMiddle.indices" forces="0 -300 0" showArrowSize=".01" />

<TriangularFEMForceField name="FEM" youngModulus="100" poissonRatio="0.3" method="large" computePrincipalStress="true"/>
<TriangularFEMForceField name="FEM" youngModulus="300" poissonRatio="0.3" method="large" computePrincipalStress="true"/>
<TriangularBendingSprings name="FEM-Bend" stiffness="300" damping="1.0" />
<PlaneForceField normal="0 1 0" d="-30" stiffness="100000" showPlane="1" showPlaneSize="20"/>

<TriangleCollisionModel />
<TearingEngine name="TearingEngine" input_position="@Mo.position" stressThreshold="0.1"
step="20" nbFractureMax="40" showFracturePath="1"/>
<TearingEngine name="TearingEngine" input_position="@Mo.position" stressThreshold="6.0"
step="30" nbFractureMax="40" showFracturePath="1" fractureMaxLength="1.0"/>

<Node >
<OglModel name="Visual" color="red" />
Expand Down
6 changes: 3 additions & 3 deletions scenes/TearingEngine/SquareTissue_04_cornerPressure.scn
Original file line number Diff line number Diff line change
Expand Up @@ -52,13 +52,13 @@
<BoxROI template="Vec3d" name="PullCorner" box="9.9 0.1 0.1 10.1 -0.1 -0.1" drawBoxes="1"/>
<ConstantForceField name="CFF" indices="@PullCorner.indices" forces="0 -160 0" showArrowSize=".02" />

<TriangularFEMForceField name="FEM" youngModulus="60" poissonRatio="0.3" method="large" computePrincipalStress="true"/>
<TriangularFEMForceField name="FEM" youngModulus="300" poissonRatio="0.3" method="large" computePrincipalStress="true"/>
<TriangularBendingSprings name="FEM-Bend" stiffness="300" damping="1.0" />
<PlaneForceField normal="0 1 0" d="-30" stiffness="100000" showPlane="1" showPlaneSize="20"/>

<TriangleCollisionModel />
<TearingEngine name="TearingEngine" input_position="@Mo.position" stressThreshold="0.2"
step="20" nbFractureMax="40" showFracturePath="1"/>
<TearingEngine name="TearingEngine" input_position="@Mo.position" stressThreshold="6.0"
step="30" nbFractureMax="40" showFracturePath="1" fractureMaxLength="1.0"/>

<Node >
<OglModel name="Visual" color="red" />
Expand Down
10 changes: 5 additions & 5 deletions scenes/TearingEngine/SquareTissue_05_circleHole_gravity.scn
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
<?xml version="1.0" ?>
<!--Test case 5: Square tissue mesh has a big circular hole in the middle. Upper border is fixed and only heavy gravity is applied -->

<Node name="root" dt="0.05" showBoundingTree="0" gravity="0 -10 -1">
<Node name="root" dt="0.05" showBoundingTree="0" gravity="0 -9 -1">
<Node name="RequiredPlugins">
<RequiredPlugin name="Sofa.Component.Collision.Detection.Algorithm"/> <!-- Needed to use components [BVHNarrowPhase, BruteForceBroadPhase, DefaultPipeline] -->
<RequiredPlugin name="Sofa.Component.Collision.Detection.Intersection"/> <!-- Needed to use components [MinProximityIntersection] -->
Expand Down Expand Up @@ -43,19 +43,19 @@
<TriangleSetGeometryAlgorithms name="GeomAlgo" template="Vec3d" />

<MechanicalObject name="Mo"/>
<DiagonalMass massDensity="10.0" />
<DiagonalMass massDensity="1.0" />

<BoxROI name="FixedSide" box="-0.1 9.9 0.1 10.1 10.1 -0.1" drawBoxes="1" />
<FixedConstraint name="FixedConstraint" indices="@FixedSide.indices" />

<TriangularFEMForceField name="FEM" youngModulus="60" poissonRatio="0.3" method="large" computePrincipalStress="1"/>
<TriangularFEMForceField name="FEM" youngModulus="300" poissonRatio="0.3" method="large" computePrincipalStress="true"/>
<TriangularBendingSprings name="FEM-Bend" stiffness="300" />
<PlaneForceField normal="0 1 0" d="-30" stiffness="100000" showPlane="1" showPlaneSize="20"/>

<TriangleCollisionModel />

<TearingEngine name="TearingEngine" input_position="@Mo.position" stressThreshold="1.0"
step="30" nbFractureMax="40" showFracturePath="1"/>
<TearingEngine name="TearingEngine" input_position="@Mo.position" stressThreshold="6.0"
step="30" nbFractureMax="40" showFracturePath="1" fractureMaxLength="1.0"/>

<Node >
<OglModel name="Visual" color="red" />
Expand Down
Loading

0 comments on commit 59e325b

Please sign in to comment.