BeamAdapter icon indicating copy to clipboard operation
BeamAdapter copied to clipboard

Strange second tool "corkscrew tail" behavior

Open epernod opened this issue 2 years ago • 0 comments

When using very small tip length/spireDiameter The edge Discretization behave strangely. Or problem of rigidity or beamMapping ?

https://user-images.githubusercontent.com/21199245/190588491-924fc922-9a03-46a7-9647-6e53d6efd2ae.mp4

Scene to reproduce the behavior

<?xml version="1.0"?>
<Node name="root" dt="0.05"  gravity="0 0 0"> 
	<Node name="Plugins">
        <RequiredPlugin name="Sofa.GL.Component.Rendering3D"/> <!-- Needed to use components [OglModel] -->  
        <RequiredPlugin name="Sofa.Component.Visual"/> <!-- Needed to use components [VisualStyle] -->  
        <RequiredPlugin name="Sofa.Component.Topology.Mapping"/> <!-- Needed to use components [Edge2QuadTopologicalMapping] -->  
        <RequiredPlugin name="Sofa.Component.Topology.Container.Grid"/> <!-- Needed to use components [RegularGridTopology] -->  
        <RequiredPlugin name="Sofa.Component.Topology.Container.Dynamic"/> <!-- Needed to use components [EdgeSetGeometryAlgorithms, EdgeSetTopologyContainer, EdgeSetTopologyModifier, QuadSetGeometryAlgorithms, QuadSetTopologyContainer, QuadSetTopologyModifier] -->  
        <RequiredPlugin name="Sofa.Component.Topology.Container.Constant"/> <!-- Needed to use components [MeshTopology] -->  
        <RequiredPlugin name="Sofa.Component.StateContainer"/> <!-- Needed to use components [MechanicalObject] -->  
        <RequiredPlugin name="Sofa.Component.SolidMechanics.Spring"/> <!-- Needed to use components [RestShapeSpringsForceField] -->  
        <RequiredPlugin name="Sofa.Component.SceneUtility"/> <!-- Needed to use components [InfoComponent] -->  
        <RequiredPlugin name="Sofa.Component.ODESolver.Backward"/> <!-- Needed to use components [EulerImplicitSolver] -->  
        <RequiredPlugin name="Sofa.Component.Mapping.Linear"/> <!-- Needed to use components [IdentityMapping] -->  
        <RequiredPlugin name="Sofa.Component.LinearSolver.Direct"/> <!-- Needed to use components [BTDLinearSolver] -->  
        <RequiredPlugin name="Sofa.Component.IO.Mesh"/> <!-- Needed to use components [MeshOBJLoader] -->  
        <RequiredPlugin name="Sofa.Component.Constraint.Projective"/> <!-- Needed to use components [FixedConstraint] -->  
        <RequiredPlugin name="Sofa.Component.Constraint.Lagrangian.Solver"/> <!-- Needed to use components [LCPConstraintSolver] -->  
        <RequiredPlugin name="Sofa.Component.Constraint.Lagrangian.Correction"/> <!-- Needed to use components [LinearSolverConstraintCorrection] -->  
        <RequiredPlugin name="Sofa.Component.Collision.Response.Contact"/> <!-- Needed to use components [DefaultContactManager] -->  
        <RequiredPlugin name="Sofa.Component.Collision.Geometry"/> <!-- Needed to use components [LineCollisionModel, PointCollisionModel, TriangleCollisionModel] -->  
        <RequiredPlugin name="Sofa.Component.Collision.Detection.Intersection"/> <!-- Needed to use components [LocalMinDistance] -->  
        <RequiredPlugin name="Sofa.Component.Collision.Detection.Algorithm"/> <!-- Needed to use components [BVHNarrowPhase, BruteForceBroadPhase, DefaultPipeline] -->  
        <RequiredPlugin name="Sofa.Component.AnimationLoop"/> <!-- Needed to use components [FreeMotionAnimationLoop] -->  
        <RequiredPlugin name="BeamAdapter" />
	</Node>
    <VisualStyle displayFlags="hideVisualModels showBehaviorModels hideMappings hideForceFields showCollisionModels" />
 	<DefaultVisualManagerLoop/>

 	<FreeMotionAnimationLoop />
	<LCPConstraintSolver mu="0.1" tolerance="1e-4" maxIt="1000" build_lcp="false" />
	
    <DefaultPipeline depth="6" verbose="1" draw="0"/>
    <BruteForceBroadPhase/>
    <BVHNarrowPhase/>
    <LocalMinDistance name="localmindistance" alarmDistance="0.2" contactDistance="0.1" angleCone="0.02"/>
    <DefaultContactManager name="Response" response="FrictionContactConstraint" />

	<Node name="GuideCatheter">
		<WireRestShape template="Rigid3d" name="GC_RestShape" length="500.0" straightLength="499.5" 
            spireDiameter="0.4" spireHeight="0.0" radius="1" massDensity="0.1" poissonRatio="0.3"
			densityOfBeams="350 5" numEdgesCollis="350 10" 
            youngModulus="400" youngModulusExtremity="200" />

		<EdgeSetTopologyContainer name="GC_mesh" />
		<EdgeSetTopologyModifier />
		<EdgeSetGeometryAlgorithms template="Rigid3d" />
		<MechanicalObject name="GC_dof" template="Rigid3d" />
	</Node>


	<Node name='GuideWire'>
		<WireRestShape template='Rigid3d' name='GW_RestShape' length='100.0'  straightLength='99.8' 
            spireDiameter='0.15' spireHeight='0.0' radius="1"
			densityOfBeams='350 6' numEdgesCollis='350 6'  
            youngModulus='200' youngModulusExtremity='100'/>
            
		<EdgeSetTopologyContainer name='GW_mesh' />
		<EdgeSetTopologyModifier />
		<EdgeSetGeometryAlgorithms template='Rigid3d' />
		<MechanicalObject template='Rigid3d' name='GC_dof' />
	</Node>


    <Node name="Instrument">
        <EulerImplicitSolver rayleighStiffness="0.2" rayleighMass="0.1" />
        <BTDLinearSolver />
        <RegularGridTopology name="MeshLines" nx="60" ny="1" nz="1"
            xmax="0.0" xmin="0.0" ymin="0" ymax="0" zmax="0" zmin="0"
            p0="0 0 0" drawEdges="0"/>
                                
        <MechanicalObject name="Instrument_DOFs" template="Rigid3d" translation="96.0 6.0 6.5" rotation="0 30 -70" /> 
        
        <WireBeamInterpolation name="Interpol_GCatheter" WireRestShape="@../GuideCatheter/GC_RestShape" radius="0.05" printLog="0"/> 
		<AdaptiveBeamForceFieldAndMass name="FF_GCatheter" interpolation="@Interpol_GCatheter" massDensity="0.00000155"/>

		<WireBeamInterpolation name='Interpol_GWire' WireRestShape='@../GuideWire/GW_RestShape' radius='0.01' printLog='0'/> 
		<AdaptiveBeamForceFieldAndMass name='FF_GWire' interpolation='@Interpol_GWire' massDensity='0.0000000155'/> 	



        <InterventionalRadiologyController name="IRController" template="Rigid3d" listening="true" controlledInstrument="0" 
            instruments="Interpol_GCatheter Interpol_GWire" printLog="0" 
            speed="0"  step="0.1" startingPos="96.0 6.0 6.5   0 0 0 1" 
            rotationInstrument="0 0 0" xtip="0 0 0"  />


        <LinearSolverConstraintCorrection printLog="false" wire_optimization="true"/>
        
        <FixedConstraint name="FixedConstraint" indices="0" />
        <RestShapeSpringsForceField  points="@IRController.indexFirstNode" stiffness="1e8" angularStiffness="1e8" />

        <Node name="Instrument_collision" activated="true">
				<EdgeSetTopologyContainer name="IC_mesh"/>
				<EdgeSetTopologyModifier />
				<MechanicalObject name="IC_dofs"/>
				<MultiAdaptiveBeamMapping  name="IC_MultiBeamMapping" controller="../IRController" useCurvAbs="1" printLog="0"/> 
				<LineCollisionModel proximity="0.0" group="1"/>
				<PointCollisionModel proximity="0.0" group="1"/>
		</Node>	
    </Node>
</Node>

epernod avatar Sep 16 '22 08:09 epernod