Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
59 changes: 59 additions & 0 deletions extensions/Shell.Adaptivity/examples/Test2DAdapter.scn
Original file line number Diff line number Diff line change
@@ -0,0 +1,59 @@
<?xml version="1.0"?>
<Node name="Root">
<VisualStyle displayFlags="showWireframe showBehavior" />
<AdaptiveCuttingSetting button="Left" />

<CollisionPipeline verbose="0" />
<BruteForceDetection name="N2" />
<CollisionResponse response="default" />
<MinProximityIntersection name="Proximity" alarmDistance="0.8" contactDistance="0.5" />
<CollisionGroup />

<Node>
<MeshObjLoader name="mesh" filename="../mesh/plane2048-noise.obj"/>
<TriangleSetTopologyContainer name="points" src="@mesh" />

<!-- Used for mouse tracking
TODO: need to pass MO to the adapter for so that the distances are computed properly
<Node name="original">
<TriangleSetTopologyContainer name="points" src="@../mesh" />
<MechanicalObject template="Vec3d" name="MO_orig" rest_position="@mesh.position" />
<Triangle />
<Node name="Render">
<OglModel name="Visual" color="gray"/>
<IdentityMapping input="@.." output="@Visual"/>
</Node>
</Node>
-->

<TriangleSetTopologyModifier />
<TriangleSetTopologyAlgorithms />
<TriangleSetGeometryAlgorithms />

<!--
-->
<Test2DAdapter template="Vec3d" name="adapter" sigma="1e-5" />
<MechanicalObject template="Vec3d" name="MO" rest_position="@mesh.position" />

<Triangle />
<!--
-->

<Node name="Data">
<DataDisplay cellData="@../adapter.functionals" colorNaN="1 0 1 1" />
<ColorMap colorScheme="Green" />
<IdentityMapping input="@.." output="@."/>
</Node>
<!--
-->

<Node name="Render">
<OglModel name="Visual" color="black" depthTest="false" />
<IdentityMapping input="@.." output="@Visual"/>
</Node>



</Node>

</Node>
121 changes: 121 additions & 0 deletions extensions/Shell.Adaptivity/examples/cutting.scn
Original file line number Diff line number Diff line change
@@ -0,0 +1,121 @@
<?xml version="1.0"?>
<Node name="Root" gravity="0 0 0" >

<Node name="plugins">
<RequiredPlugin name="Shell"/>
<RequiredPlugin name="Sofa.Component.AnimationLoop"/> <!-- Needed to use components [FreeMotionAnimationLoop] -->
<RequiredPlugin name="Sofa.Component.Collision.Detection.Algorithm"/> <!-- Needed to use components [BVHNarrowPhase,BruteForceBroadPhase,BruteForceDetection,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.Constraint.Lagrangian.Solver"/> <!-- Needed to use components [LCPConstraintSolver] -->
<RequiredPlugin name="Sofa.Component.Constraint.Projective"/> <!-- Needed to use components [FixedProjectiveConstraint] -->
<RequiredPlugin name="Sofa.Component.Engine.Transform"/> <!-- Needed to use components [TransformEngine] -->
<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 [UniformMass] -->
<RequiredPlugin name="Sofa.Component.ODESolver.Backward"/> <!-- Needed to use components [EulerImplicitSolver] -->
<RequiredPlugin name="Sofa.GL.Component.Rendering2D"/> <!-- Needed to use components [OglColorMap] -->
<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 [RestShapeSpringsForceField] -->
<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.Collision.Geometry"/> <!-- Needed to use components [TriangleCollisionModel] -->
<RequiredPlugin name="Sofa.Component.Visual"/> <!-- Needed to use components [VisualStyle] -->
<RequiredPlugin name="Sofa.GL.Component.Rendering3D"/> <!-- Needed to use components [DataDisplay,OglModel] -->
<RequiredPlugin name="Sofa.Component.IO.Mesh"/> <!-- Needed to use components [MeshOBJLoader] -->
</Node>

<DefaultAnimationLoop/>
<!--FreeMotionAnimationLoop/--> <!-- Je ne sais pas pourquoi mais lorsque j'utilise FreeMotionAnimationLoop, l'animation ne fonction plus...
Alors que je souhaite utiliser FreeMotionAnimationLoop pour que ça soit plus réaliste que DefaultAnimationLoop-->
<!--LCPConstraintSolver tolerance="1e-3" maxIt="1000"/-->
<VisualStyle displayFlags="showBehavior" />
<!--<AdaptiveCuttingSetting button="Left" /-->

<CollisionPipeline verbose="0"/>
<BruteForceBroadPhase name="N2" />
<BVHNarrowPhase/>
<MinProximityIntersection name="Proximity" alarmDistance="0.8" contactDistance="0.5" />
<CollisionResponse name="Response" response="PenaltyContactForceField" />

<Node name="points">
<MechanicalObject template="Vec3d" name="fixedPoints"
position="-1.2 -1 0 -1.2 1 0"
showObject="true" />
<FixedProjectiveConstraint indices="0 1" />
</Node>

<Node name="Mesh">

<EulerImplicitSolver rayleighMass="1" rayleighStiffness="1" />
<CGLinearSolver iterations="100" tolerance="1e-15" threshold="1e-15"/>

<MeshOBJLoader name="mesh" filename="../../mesh/plane128.obj"/>
<TriangleSetTopologyContainer name="topo" src="@mesh" />

<MechanicalObject template="Vec3d" name="MO" />
<UniformMass totalMass="0.1" />

<AdaptiveCuttingController template="Vec3d" />
<Test2DAdapter template="Vec3d" name="adapter" sigma="1e-5" />

<TriangleSetTopologyModifier />
<!--<TriangleSetTopologyContainer />-->
<TriangleSetGeometryAlgorithms />

<FixedProjectiveConstraint indices="0 1" />

<RestShapeSpringsForceField name="Springs" external_rest_shape="@../points/fixedPoints"
points="2 3"
external_points="1 0"
stiffness="50000"
angularStiffness="50000" />


<TriangularFEMForceField name="FEM" youngModulus="5000" poissonRatio="0.3" method="large" />

<!--
<Point />
<Line />
-->
<TriangleCollisionModel />

<Node name="Render">
<OglModel name="Visual" color="#90EE90"/>
<IdentityMapping input="@.." output="@Visual"/>
</Node>

<Node name="Render wire">
<VisualStyle displayFlags="showWireframe" />
<OglModel name="Visual" color="#BC8F8F" depthTest="false" />
<IdentityMapping input="@.." output="@Visual"/>
</Node>



<Node name="Rest state">
<TriangleSetTopologyContainer name="topo" points="@../topo.points" edges="@../topo.edges" triangles="@../topo.triangles" />
<TransformEngine name="transform" template="Vec3d" translation="2.5 0 0" input_position="@../MO.rest_position" />
<MechanicalObject template="Vec3d" rest_position="@transform.output_position" position="@transform.output_position" />

<Node name="Data">
<DataDisplay cellData="@../../adapter.functionals" />
<OglColorMap colorScheme="Green" />
<IdentityMapping input="@.." output="@."/>
</Node>

<!--
<Node name="Render wire">
<VisualStyle displayFlags="showWireframe" />
<OglModel name="Visual" color="white" depthTest="false" />
<IdentityMapping input="@.." output="@Visual"/>
</Node>
-->
</Node>
<!--
-->


</Node>
</Node>
117 changes: 117 additions & 0 deletions extensions/Shell.Adaptivity/examples/cutting2.scn
Original file line number Diff line number Diff line change
@@ -0,0 +1,117 @@
<?xml version="1.0"?>
<Node name="Root" gravity="0 0 0" >
<VisualStyle displayFlags="showVisual" />
<AdaptiveCuttingSetting button="Left" />

<CollisionPipeline verbose="0" />
<BruteForceDetection name="N2" />
<CollisionResponse response="default" />
<MinProximityIntersection name="Proximity" alarmDistance="0.8" contactDistance="0.5" />
<CollisionGroup />

<Node name="points">
<MechanicalObject template="Vec3d" name="fixedPoints"
position="-1.2 -1 0 -1.2 1 0"
showObject="true" />
<FixedConstraint indices="0 1" />
</Node>

<Node name="Base">
<RegularGridTopology name="topo" template="Vec3d"
min="-1 -1 0"
max=" 1 1 0"
n="10 10 1" />
</Node>

<Node name="Fine">
<RegularGridTopology name="topo" template="Vec3d"
min="-1 -1 0"
max=" 1 1 0"
n="20 20 1" />
</Node>

<Node>

<EulerImplicitSolver rayleighMass="1" rayleighStiffness="1" />
<CGLinearSolver iterations="100" tolerance="1e-15" threshold="1e-15"/>

<TriangleSetTopologyModifier />
<TriangleSetTopologyAlgorithms />
<TriangleSetGeometryAlgorithms />

<!--
<MeshObjLoader name="mesh" filename="../mesh/plane128.obj"/>
<TriangleSetTopologyContainer name="topo" src="@mesh" />
-->
<TriangleSetTopologyContainer name="topo" />
<Quad2TriangleTopologicalMapping input="@/Base/topo" output="@topo" />

<MechanicalObject template="Vec3d" name="MO" />
<UniformMass mass="0.1" />

<Test2DAdapter template="Vec3d" name="adapter" sigma="1e-5"
projectedPoints="@/Fine/topo.position" />
<!-- />-->
<AdaptiveCuttingController template="Vec3d" />

<!-- Match corners -->
<BoxROI name="box1" box="0.99 -1.01 -0.01 1.01 -0.99 0.01" />
<BoxROI name="box2" box="0.99 0.99 -0.01 1.01 1.01 0.01" />
<BoxROI name="box3" box="-1.01 -1.01 -0.01 -0.99 -0.99 0.01" />
<BoxROI name="box4" box="-1.01 0.99 -0.01 -0.99 1.01 0.01" />

<FixedConstraint indices="@box1.indices" />
<FixedConstraint indices="@box2.indices" />

<RestShapeSpringsForceField name="Springs" external_rest_shape="../points/fixedPoints"
points="@box3.indices"
external_points="0"
stiffness="50000"
angularStiffness="50000" />
<RestShapeSpringsForceField name="Springs" external_rest_shape="../points/fixedPoints"
points="@box4.indices"
external_points="1"
stiffness="50000"
angularStiffness="50000" />


<TriangularFEMForceField name="FEM" youngModulus="5000" poissonRatio="0.3" method="large" />

<!--
<Point />
<Line />
-->
<Triangle />

<!--
<Node name="Render">
<OglModel name="Visual" color="#90EE90"/>
<IdentityMapping input="@.." output="@Visual"/>
</Node>
-->

<Node name="Mapping">
<RegularGridTopology src="@/Fine/topo" />
<MechanicalObject name="MO" template="Vec3d" />
<ExternalInterpolationMapping
InterpolationIndices="@../adapter.interpolationIndices"
InterpolationValues="@../adapter.interpolationValues" />
<Node name="Render">
<OglModel name="Visual" color="#BC0F0F" depthTest="false" />
<IdentityMapping input="@.." output="@Visual"/>
</Node>
</Node>
<!--
-->




<Node name="Render wire">
<VisualStyle displayFlags="showWireframe" />
<OglModel name="Visual" color="#BC8F8F" depthTest="false" />
<IdentityMapping input="@.." output="@Visual"/>
</Node>

</Node>
</Node>
Loading