Skip to content

Commit be178ee

Browse files
authored
Merge branch 'master' into 2025_sprintsed_basemapping
2 parents 67409b9 + 7a3305f commit be178ee

56 files changed

Lines changed: 710 additions & 713 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/workflows/ci.yml

Lines changed: 39 additions & 57 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,7 @@ jobs:
2929
path: ${{ env.WORKSPACE_SRC_PATH }}
3030

3131
- name: Build and install
32+
id: build-install
3233
shell: bash
3334
run: |
3435
if [[ "$RUNNER_OS" == "Windows" ]]; then
@@ -70,81 +71,62 @@ jobs:
7071
echo "artifact_name=$artifact_name" >> $env:GITHUB_OUTPUT
7172
7273
- name: Create artifact
74+
id: create-artifact
7375
uses: actions/upload-artifact@v4.4.0
7476
with:
7577
name: ${{ steps.sanitize.outputs.artifact_name }}
7678
path: ${{ env.WORKSPACE_INSTALL_PATH }}
7779

7880
- name: Install artifact
81+
id: install-artifact
7982
uses: actions/download-artifact@v4.1.7
8083
with:
8184
name: ${{ steps.sanitize.outputs.artifact_name }}
8285
path: ${{ env.WORKSPACE_ARTIFACT_PATH }}
8386

84-
- name: Set env vars for tests
87+
88+
- name: Launch test
89+
id: tests
90+
uses: sofa-framework/sofa-test-action@v1.0
91+
with:
92+
sofa_root: ${{ github.workspace }}/sofa
93+
sofa_version: ${{ steps.sofa.outputs.sofa_version }}
94+
src_dir: ${{ env.WORKSPACE_SRC_PATH }}
95+
build_dir: ${{ env.WORKSPACE_BUILD_PATH }}
96+
python_exe: ${{ steps.sofa.outputs.python_exe }}
97+
output_dir: ${{ github.workspace }}/tests-results_dir
98+
nb_parallel_threads: '4'
99+
100+
- name: Notify dashboard
101+
if: always() && startsWith(github.repository, 'sofa-framework') && startsWith(github.ref, 'refs/heads/master') # we are not on a fork and on master
102+
env:
103+
DASH_AUTH: ${{ secrets.PLUGIN_DASH }}
85104
shell: bash
86105
run: |
87-
# Set env vars for tests
88-
if [[ "$RUNNER_OS" == "Windows" ]]; then
89-
echo "$WORKSPACE_ARTIFACT_PATH/lib" >> $GITHUB_PATH
90-
echo "$WORKSPACE_ARTIFACT_PATH/bin" >> $GITHUB_PATH
91-
echo "$SOFA_ROOT/plugins/SofaPython3/bin" >> $GITHUB_PATH
92-
echo "SOFA_PLUGIN_PATH=$WORKSPACE_ARTIFACT_PATH/bin" | tee -a $GITHUB_ENV
93-
else
94-
echo "SOFA_PLUGIN_PATH=$WORKSPACE_ARTIFACT_PATH/lib" | tee -a $GITHUB_ENV
95-
fi
96106
97-
if [[ "$RUNNER_OS" == "macOS" ]]; then
98-
echo "DYLD_LIBRARY_PATH=$WORKSPACE_ARTIFACT_PATH/lib:$SOFA_ROOT/lib:$SOFA_ROOT/plugins/SofaPython3/lib:$DYLD_LIBRARY_PATH" | tee -a $GITHUB_ENV
99-
fi
107+
test_status=$([ '${{ steps.tests.outcome }}' == 'success' ] && \&& \
108+
echo 'true' || echo 'false')
100109
101-
if [[ "$RUNNER_OS" == "Linux" ]]; then
102-
echo "LD_LIBRARY_PATH=$WORKSPACE_ARTIFACT_PATH/lib:$SOFA_ROOT/lib:$SOFA_ROOT/plugins/SofaPython3/lib:$LD_LIBRARY_PATH" | tee -a $GITHUB_ENV
103-
fi
110+
build_status=$([ '${{ steps.build-install.outcome }}' == 'success' ] && \
111+
echo 'true' || echo 'false')
104112
105-
# - name: Check environment for tests
106-
# shell: bash
107-
# run: |
108-
# echo '------ ls -la "$WORKSPACE_SRC_PATH" ------'
109-
# ls -la "$WORKSPACE_SRC_PATH"
110-
# echo '------ ls -la "$WORKSPACE_BUILD_PATH" ------'
111-
# ls -la "$WORKSPACE_BUILD_PATH"
112-
# echo '------ ls -la "$WORKSPACE_INSTALL_PATH" ------'
113-
# ls -la "$WORKSPACE_INSTALL_PATH"
114-
# echo '------ ls -la "$WORKSPACE_ARTIFACT_PATH" ------'
115-
# ls -la "$WORKSPACE_ARTIFACT_PATH"
116-
# echo '----------------------'
117-
# echo "SOFA_ROOT = $SOFA_ROOT"
113+
binary_status=$([ '${{ steps.sanitize.outcome }}' == 'success' ] && \
114+
[ '${{ steps.create-artifact.outcome }}' == 'success' ] && \
115+
[ '${{ steps.install-artifact.outcome }}' == 'success' ] && \
116+
echo 'true' || echo 'false')
117+
os=$(echo "${{ matrix.os }}" | awk -F- '{ print $1 }')
118118
119-
- name: Run BeamAdapter_test
120-
if: always()
121-
shell: bash
122-
run: |
123-
chmod +x $WORKSPACE_BUILD_PATH/bin/BeamAdapter_test${{ steps.sofa.outputs.exe }}
124-
cd $WORKSPACE_BUILD_PATH
125-
./bin/BeamAdapter_test${{ steps.sofa.outputs.exe }}
126119
127-
- name: Fetch, install and run Regression_test
128-
if: always()
129-
shell: bash
130-
run: |
131-
if [[ "$RUNNER_OS" != "macOS" ]]; then
132-
# Get regression from github releases
133-
mkdir -p "${{ runner.temp }}/regression_tmp/install"
134-
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
135-
unzip -qq "${{ runner.temp }}/regression_tmp/${RUNNER_OS}.zip" -d "${{ runner.temp }}/regression_tmp/install"
136-
# Install it in the SOFA bin directory
137-
$SUDO mv "${{ runner.temp }}"/regression_tmp/install/Regression_*/bin/* "${SOFA_ROOT}/bin"
138-
chmod +x ${SOFA_ROOT}/bin/Regression_test${{ steps.sofa.outputs.exe }}
139-
# Setup mandatory env vars
140-
export REGRESSION_SCENES_DIR="${WORKSPACE_SRC_PATH}/examples"
141-
export REGRESSION_REFERENCES_DIR="${WORKSPACE_SRC_PATH}/regression/references"
142-
export PYTHONPATH=$SOFA_ROOT/plugins/SofaPython3/lib/python3/site-packages
143-
# Run regression test bench
144-
${SOFA_ROOT}/bin/Regression_test${{ steps.sofa.outputs.exe }}
145-
else
146-
echo "Regression tests are not supported on the CI for macOS yet (TODO)"
147-
fi
120+
curl -X POST -H "X-API-KEY: $DASH_AUTH" -H "Content-Type: application/json" -d \
121+
"{\"id\":\"$(echo "${{ github.repository }}" | awk -F/ '{ print $2 }')\",\
122+
\"github_ref\":\"${{ github.sha }}\",\
123+
\"url\":\"https://github.com/${{ github.repository }}/actions/runs/${{ github.run_id }}\",\
124+
\"build\":$build_status,\
125+
\"tests\":$test_status,\
126+
\"os\":\"$os\",\
127+
\"binary\":$binary_status}"\
128+
https://sofa-framework.org:5000/api/v1/plugins
129+
148130
149131
deploy:
150132
name: Deploy artifacts

BeamAdapter_test/component/controller/AdaptiveBeamController_test.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
* Contact information: contact@sofa-framework.org *
2121
******************************************************************************/
2222
#include <gtest/gtest.h>
23-
#include <sofa/simulation/graph/DAGNode.h>
23+
#include <sofa/simulation/Node.h>
2424
#include <sofa/simpleapi/SimpleApi.h>
2525
#include <sofa/core/ObjectFactory.h>
2626

BeamAdapter_test/component/controller/InterventionalRadiologyController_test.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ class InterventionalRadiologyController_test : public BaseTest
5858
}
5959

6060
/// Unload the scene
61-
void onTearDown() override
61+
void doTearDown() override
6262
{
6363
if (m_root != nullptr) {
6464
sofa::simulation::node::unload(m_root);

BeamAdapter_test/component/model/WireRestShape_test.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ class WireRestShape_test : public BaseTest
4646
typedef typename Coord::value_type Real;
4747
typedef typename sofa::defaulttype::SolidTypes<Real>::Transform Transform;
4848

49-
void onSetUp() override
49+
void doSetUp() override
5050
{
5151
m_root = sofa::simpleapi::createRootNode(sofa::simulation::getSimulation(), "root");
5252

@@ -55,7 +55,7 @@ class WireRestShape_test : public BaseTest
5555
}
5656

5757
/// Unload the scene
58-
void onTearDown() override
58+
void doTearDown() override
5959
{
6060
if (m_root != nullptr) {
6161
sofa::simulation::node::unload(m_root);

CMakeLists.txt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
cmake_minimum_required(VERSION 3.12)
2-
project(BeamAdapter VERSION 1.0)
2+
project(BeamAdapter VERSION 1.0 LANGUAGES CXX)
33

44
include(cmake/environment.cmake)
55

examples/3instruments.scn

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
<?xml version='1.0'?>
22
<Node name='root' dt='0.05' gravity='0 0 0'>
33

4-
<RequiredPlugin name="BeamAdapter"/> <!-- Needed to use components [WireBeamInterpolation WireRestShape] -->
5-
<RequiredPlugin name="Sofa.Component.Constraint.Projective"/> <!-- Needed to use components [FixedProjectiveConstraint] -->
6-
<RequiredPlugin name="Sofa.Component.LinearSolver.Direct"/> <!-- Needed to use components [BTDLinearSolver] -->
7-
<RequiredPlugin name="Sofa.Component.Mapping.Linear"/> <!-- Needed to use components [IdentityMapping] -->
8-
<RequiredPlugin name="Sofa.Component.ODESolver.Backward"/> <!-- Needed to use components [EulerImplicitSolver] -->
9-
<RequiredPlugin name="Sofa.Component.SolidMechanics.Spring"/> <!-- Needed to use components [RestShapeSpringsForceField] -->
10-
<RequiredPlugin name="Sofa.Component.StateContainer"/> <!-- Needed to use components [MechanicalObject] -->
11-
<RequiredPlugin name="Sofa.Component.Topology.Container.Dynamic"/> <!-- Needed to use components [EdgeSetGeometryAlgorithms EdgeSetTopologyContainer EdgeSetTopologyModifier QuadSetGeometryAlgorithms QuadSetTopologyContainer QuadSetTopologyModifier] -->
12-
<RequiredPlugin name="Sofa.Component.Topology.Container.Grid"/> <!-- Needed to use components [RegularGridTopology] -->
13-
<RequiredPlugin name="Sofa.Component.Topology.Mapping"/> <!-- Needed to use components [Edge2QuadTopologicalMapping] -->
14-
<RequiredPlugin name="Sofa.Component.Visual"/> <!-- Needed to use components [VisualStyle] -->
15-
<RequiredPlugin name="Sofa.GL.Component.Rendering3D"/> <!-- Needed to use components [OglModel] -->
4+
<RequiredPlugin pluginName="BeamAdapter"/> <!-- Needed to use components [WireBeamInterpolation WireRestShape] -->
5+
<RequiredPlugin pluginName="Sofa.Component.Constraint.Projective"/> <!-- Needed to use components [FixedProjectiveConstraint] -->
6+
<RequiredPlugin pluginName="Sofa.Component.LinearSolver.Direct"/> <!-- Needed to use components [BTDLinearSolver] -->
7+
<RequiredPlugin pluginName="Sofa.Component.Mapping.Linear"/> <!-- Needed to use components [IdentityMapping] -->
8+
<RequiredPlugin pluginName="Sofa.Component.ODESolver.Backward"/> <!-- Needed to use components [EulerImplicitSolver] -->
9+
<RequiredPlugin pluginName="Sofa.Component.SolidMechanics.Spring"/> <!-- Needed to use components [RestShapeSpringsForceField] -->
10+
<RequiredPlugin pluginName="Sofa.Component.StateContainer"/> <!-- Needed to use components [MechanicalObject] -->
11+
<RequiredPlugin pluginName="Sofa.Component.Topology.Container.Dynamic"/> <!-- Needed to use components [EdgeSetGeometryAlgorithms EdgeSetTopologyContainer EdgeSetTopologyModifier QuadSetGeometryAlgorithms QuadSetTopologyContainer QuadSetTopologyModifier] -->
12+
<RequiredPlugin pluginName="Sofa.Component.Topology.Container.Grid"/> <!-- Needed to use components [RegularGridTopology] -->
13+
<RequiredPlugin pluginName="Sofa.Component.Topology.Mapping"/> <!-- Needed to use components [Edge2QuadTopologicalMapping] -->
14+
<RequiredPlugin pluginName="Sofa.Component.Visual"/> <!-- Needed to use components [VisualStyle] -->
15+
<RequiredPlugin pluginName="Sofa.GL.Component.Rendering3D"/> <!-- Needed to use components [OglModel] -->
1616
<VisualStyle displayFlags='showVisualModels showBehaviorModels showCollisionModels hideMappings hideForceFields' />
1717

1818
<DefaultAnimationLoop />
@@ -65,7 +65,7 @@
6565
ymin='0' ymax='0'
6666
zmin='1' zmax='1'
6767
/>
68-
<MechanicalObject template='Rigid3d' name='DOFs' showIndices='0' ry='-90'/>
68+
<MechanicalObject template='Rigid3d' name='DOFs' showIndices='0' />
6969

7070
<WireBeamInterpolation name='InterpolCatheter' WireRestShape='@../topoLines_cath/catheterRestShape'/>
7171
<AdaptiveBeamForceFieldAndMass name='CatheterForceField' interpolation='@InterpolCatheter'/>

examples/3instruments_collis.scn

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -1,27 +1,27 @@
11
<?xml version="1.0"?>
22
<Node name="root" dt="0.05" gravity="0 0 0">
33
<Node name="Plugins">
4-
<RequiredPlugin name="BeamAdapter"/> <!-- Needed to use components [MultiAdaptiveBeamMapping WireBeamInterpolation WireRestShape] -->
5-
<RequiredPlugin name="Sofa.Component.AnimationLoop"/> <!-- Needed to use components [FreeMotionAnimationLoop] -->
6-
<RequiredPlugin name="Sofa.Component.Collision.Detection.Algorithm"/> <!-- Needed to use components [BVHNarrowPhase BruteForceBroadPhase DefaultPipeline] -->
7-
<RequiredPlugin name="Sofa.Component.Collision.Detection.Intersection"/> <!-- Needed to use components [LocalMinDistance] -->
8-
<RequiredPlugin name="Sofa.Component.Collision.Geometry"/> <!-- Needed to use components [LineCollisionModel PointCollisionModel TriangleCollisionModel] -->
9-
<RequiredPlugin name="Sofa.Component.Collision.Response.Contact"/> <!-- Needed to use components [DefaultContactManager] -->
10-
<RequiredPlugin name="Sofa.Component.Constraint.Lagrangian.Correction"/> <!-- Needed to use components [LinearSolverConstraintCorrection] -->
11-
<RequiredPlugin name="Sofa.Component.Constraint.Lagrangian.Solver"/> <!-- Needed to use components [LCPConstraintSolver] -->
12-
<RequiredPlugin name="Sofa.Component.Constraint.Projective"/> <!-- Needed to use components [FixedProjectiveConstraint] -->
13-
<RequiredPlugin name="Sofa.Component.IO.Mesh"/> <!-- Needed to use components [MeshOBJLoader] -->
14-
<RequiredPlugin name="Sofa.Component.LinearSolver.Direct"/> <!-- Needed to use components [BTDLinearSolver] -->
15-
<RequiredPlugin name="Sofa.Component.Mapping.Linear"/> <!-- Needed to use components [IdentityMapping] -->
16-
<RequiredPlugin name="Sofa.Component.ODESolver.Backward"/> <!-- Needed to use components [EulerImplicitSolver] -->
17-
<RequiredPlugin name="Sofa.Component.SolidMechanics.Spring"/> <!-- Needed to use components [RestShapeSpringsForceField] -->
18-
<RequiredPlugin name="Sofa.Component.StateContainer"/> <!-- Needed to use components [MechanicalObject] -->
19-
<RequiredPlugin name="Sofa.Component.Topology.Container.Constant"/> <!-- Needed to use components [MeshTopology] -->
20-
<RequiredPlugin name="Sofa.Component.Topology.Container.Dynamic"/> <!-- Needed to use components [EdgeSetGeometryAlgorithms EdgeSetTopologyContainer EdgeSetTopologyModifier QuadSetGeometryAlgorithms QuadSetTopologyContainer QuadSetTopologyModifier] -->
21-
<RequiredPlugin name="Sofa.Component.Topology.Container.Grid"/> <!-- Needed to use components [RegularGridTopology] -->
22-
<RequiredPlugin name="Sofa.Component.Topology.Mapping"/> <!-- Needed to use components [Edge2QuadTopologicalMapping] -->
23-
<RequiredPlugin name="Sofa.Component.Visual"/> <!-- Needed to use components [VisualStyle] -->
24-
<RequiredPlugin name="Sofa.GL.Component.Rendering3D"/> <!-- Needed to use components [OglModel] -->
4+
<RequiredPlugin pluginName="BeamAdapter"/> <!-- Needed to use components [MultiAdaptiveBeamMapping WireBeamInterpolation WireRestShape] -->
5+
<RequiredPlugin pluginName="Sofa.Component.AnimationLoop"/> <!-- Needed to use components [FreeMotionAnimationLoop] -->
6+
<RequiredPlugin pluginName="Sofa.Component.Collision.Detection.Algorithm"/> <!-- Needed to use components [BVHNarrowPhase BruteForceBroadPhase DefaultPipeline] -->
7+
<RequiredPlugin pluginName="Sofa.Component.Collision.Detection.Intersection"/> <!-- Needed to use components [LocalMinDistance] -->
8+
<RequiredPlugin pluginName="Sofa.Component.Collision.Geometry"/> <!-- Needed to use components [LineCollisionModel PointCollisionModel TriangleCollisionModel] -->
9+
<RequiredPlugin pluginName="Sofa.Component.Collision.Response.Contact"/> <!-- Needed to use components [DefaultContactManager] -->
10+
<RequiredPlugin pluginName="Sofa.Component.Constraint.Lagrangian.Correction"/> <!-- Needed to use components [LinearSolverConstraintCorrection] -->
11+
<RequiredPlugin pluginName="Sofa.Component.Constraint.Lagrangian.Solver"/> <!-- Needed to use components [LCPConstraintSolver] -->
12+
<RequiredPlugin pluginName="Sofa.Component.Constraint.Projective"/> <!-- Needed to use components [FixedProjectiveConstraint] -->
13+
<RequiredPlugin pluginName="Sofa.Component.IO.Mesh"/> <!-- Needed to use components [MeshOBJLoader] -->
14+
<RequiredPlugin pluginName="Sofa.Component.LinearSolver.Direct"/> <!-- Needed to use components [BTDLinearSolver] -->
15+
<RequiredPlugin pluginName="Sofa.Component.Mapping.Linear"/> <!-- Needed to use components [IdentityMapping] -->
16+
<RequiredPlugin pluginName="Sofa.Component.ODESolver.Backward"/> <!-- Needed to use components [EulerImplicitSolver] -->
17+
<RequiredPlugin pluginName="Sofa.Component.SolidMechanics.Spring"/> <!-- Needed to use components [RestShapeSpringsForceField] -->
18+
<RequiredPlugin pluginName="Sofa.Component.StateContainer"/> <!-- Needed to use components [MechanicalObject] -->
19+
<RequiredPlugin pluginName="Sofa.Component.Topology.Container.Constant"/> <!-- Needed to use components [MeshTopology] -->
20+
<RequiredPlugin pluginName="Sofa.Component.Topology.Container.Dynamic"/> <!-- Needed to use components [EdgeSetGeometryAlgorithms EdgeSetTopologyContainer EdgeSetTopologyModifier QuadSetGeometryAlgorithms QuadSetTopologyContainer QuadSetTopologyModifier] -->
21+
<RequiredPlugin pluginName="Sofa.Component.Topology.Container.Grid"/> <!-- Needed to use components [RegularGridTopology] -->
22+
<RequiredPlugin pluginName="Sofa.Component.Topology.Mapping"/> <!-- Needed to use components [Edge2QuadTopologicalMapping] -->
23+
<RequiredPlugin pluginName="Sofa.Component.Visual"/> <!-- Needed to use components [VisualStyle] -->
24+
<RequiredPlugin pluginName="Sofa.GL.Component.Rendering3D"/> <!-- Needed to use components [OglModel] -->
2525
</Node>
2626
<VisualStyle displayFlags="showVisualModels showBehaviorModels showCollisionModels hideMappings hideForceFields" />
2727
<DefaultVisualManagerLoop/>
@@ -109,8 +109,8 @@
109109
<EdgeSetTopologyModifier name="colliseEdgeModifier" />
110110
<MechanicalObject name="CollisionDOFs"/>
111111
<MultiAdaptiveBeamMapping name="collisMap" controller="../IRController" useCurvAbs="1" printLog="0"/>
112-
<LineCollisionModel proximity="0.0" group="1"/>
113-
<PointCollisionModel proximity="0.0" group="1"/>
112+
<LineCollisionModel contactDistance="0.0" group="1"/>
113+
<PointCollisionModel contactDistance="0.0" group="1"/>
114114
</Node>
115115

116116
<Node name="VisuCatheter" activated="true">

examples/AdaptiveBeamController.scn

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
<?xml version="1.0"?>
22
<Node name="root" gravity="0 -9.81 0" dt="0.01" bbox="0 0 0 10 10 10">
3-
<RequiredPlugin name="Sofa.Component.Constraint.Projective"/> <!-- Needed to use components [FixedProjectiveConstraint] -->
4-
<RequiredPlugin name="Sofa.Component.LinearSolver.Direct"/> <!-- Needed to use components [EigenSparseLU] -->
5-
<RequiredPlugin name="Sofa.Component.ODESolver.Backward"/> <!-- Needed to use components [EulerImplicitSolver] -->
6-
<RequiredPlugin name="Sofa.Component.StateContainer"/> <!-- Needed to use components [MechanicalObject] -->
7-
<RequiredPlugin name="Sofa.Component.Topology.Container.Constant"/> <!-- Needed to use components [MeshTopology] -->
8-
<RequiredPlugin name="Sofa.Component.Visual"/> <!-- Needed to use components [VisualStyle] -->
9-
<RequiredPlugin name="BeamAdapter"/> <!-- Needed to use components [AdaptiveBeamController,AdaptiveBeamForceFieldAndMass,BeamInterpolation] -->
3+
<RequiredPlugin pluginName="Sofa.Component.Constraint.Projective"/> <!-- Needed to use components [FixedProjectiveConstraint] -->
4+
<RequiredPlugin pluginName="Sofa.Component.LinearSolver.Direct"/> <!-- Needed to use components [EigenSparseLU] -->
5+
<RequiredPlugin pluginName="Sofa.Component.ODESolver.Backward"/> <!-- Needed to use components [EulerImplicitSolver] -->
6+
<RequiredPlugin pluginName="Sofa.Component.StateContainer"/> <!-- Needed to use components [MechanicalObject] -->
7+
<RequiredPlugin pluginName="Sofa.Component.Topology.Container.Constant"/> <!-- Needed to use components [MeshTopology] -->
8+
<RequiredPlugin pluginName="Sofa.Component.Visual"/> <!-- Needed to use components [VisualStyle] -->
9+
<RequiredPlugin pluginName="BeamAdapter"/> <!-- Needed to use components [AdaptiveBeamController,AdaptiveBeamForceFieldAndMass,BeamInterpolation] -->
1010

1111
<VisualStyle displayFlags="showBehaviorModels showCollisionModels hideBoundingCollisionModels showForceFields" />
1212
<DefaultAnimationLoop />

0 commit comments

Comments
 (0)