From e37b5c68423de42a1daf2c888e3b96f074119120 Mon Sep 17 00:00:00 2001 From: Themis Skamagkis Date: Thu, 17 Jul 2025 09:19:35 +0200 Subject: [PATCH 1/5] [scene] scene file clean up --- scenes/NeedleInsertion.py | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/scenes/NeedleInsertion.py b/scenes/NeedleInsertion.py index 18eb747d..cd8b3c89 100644 --- a/scenes/NeedleInsertion.py +++ b/scenes/NeedleInsertion.py @@ -63,8 +63,13 @@ def createScene(root): root.addObject("CollisionLoop") needleBaseMaster = root.addChild("NeedleBaseMaster") - needleBaseMaster.addObject("MechanicalObject", name="mstate_baseMaster", position=[0.04, 0.04, 0, 0, 0, 0, 1], template="Rigid3d", showObjectScale=0.002, showObject="true", drawMode=1) - needleBaseMaster.addObject("LinearMovementProjectiveConstraint",indices=[0], keyTimes=[0,1,7,9],movements=[[0.04, 0.04,0,0,0,0],[0.04, 0.04,0.05,0,3.14/2,0],[0.04, 0.04,-0.07,0,3.14/2,0],[0.05, 0.04,-0.07,0,3.14/2 + 3.14/16,0]],relativeMovements=False) + needleBaseMaster.addObject("MechanicalObject", name="mstate_baseMaster", position=[0.04, 0.04, 0, 0, 0, 0, 1], template="Rigid3d", showObjectScale=0.002, showObject="false", drawMode=1) + needleBaseMaster.addObject("LinearMovementProjectiveConstraint",indices=[0], keyTimes=[0,1,7,9],movements= + [ [0.04, 0.04,0,0,0,0] + , [0.04, 0.04,0.05,0,3.14/2,0] + , [0.04, 0.04,-0.07,0,3.14/2,0] + , [0.05, 0.04,-0.07,0,3.14/2 + 3.14/16,0] + ],relativeMovements=False) @@ -77,7 +82,7 @@ def createScene(root): needle.addObject("EdgeSetTopologyModifier", name="modifier") needle.addObject("PointSetTopologyModifier", name="modifier2") - needle.addObject("MechanicalObject", name="mstate", template="Rigid3d", showObjectScale=0.0002, showObject="true", drawMode=1) + needle.addObject("MechanicalObject", name="mstate", template="Rigid3d", showObjectScale=0.0002, showObject="false", drawMode=1) needle.addObject("UniformMass", totalMass=g_needleTotalMass) needle.addObject("BeamFEMForceField", name="FEM", **g_needleMechanicalParameters) @@ -140,7 +145,7 @@ def createScene(root): volume.addObject("MechanicalObject", name="mstate_gel", template="Vec3d") volume.addObject("TetrahedronGeometry", name="geom_tetra", mstate="@mstate_gel", topology="@TetraContainer", draw=False) #volume.addObject("TriangleGeometry", name="tri_geom", mstate="@mstate_gel", topology="@TetraContainer",draw=True) - volume.addObject("PhongTriangleNormalHandler", name="InternalTriangles", geometry="@geom_tetra") + #volume.addObject("PhongTriangleNormalHandler", name="InternalTriangles", geometry="@geom_tetra") volume.addObject("AABBBroadPhase",name="AABBTetra",geometry="@geom_tetra",nbox=[3,3,3],thread=1) #volume.addObject("ParallelTetrahedronFEMForceField", name="FF",**g_gelMechanicalParameters) volume.addObject("TetrahedronFEMForceField", name="FF",**g_gelMechanicalParameters) @@ -190,7 +195,7 @@ def createScene(root): ) root.addObject("DistanceFilter",algo="@InsertionAlgo",distance=0.01) root.addObject("SecondDirection",name="punctureDirection",handler="@Volume/collision/SurfaceTriangles") - root.addObject("ConstraintUnilateral",input="@InsertionAlgo.output",directions="@punctureDirection",draw_scale="0.001")#, mu="0.001") + root.addObject("ConstraintUnilateral",input="@InsertionAlgo.output",directions="@punctureDirection",draw_scale="0.001") root.addObject("FirstDirection",name="bindDirection", handler="@Needle/bodyCollision/NeedleBeams") root.addObject("ConstraintInsertion",input="@InsertionAlgo.outputList", directions="@bindDirection",draw_scale="0.002", frictionCoeff=0.05) From 6704020b8d115a871fceafd0f0fa7160ca25fa19 Mon Sep 17 00:00:00 2001 From: Themis Skamagkis Date: Mon, 28 Jul 2025 16:47:52 +0200 Subject: [PATCH 2/5] [scene] Converted string to numbers --- scenes/InsertionGeomagic.py | 38 ++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/scenes/InsertionGeomagic.py b/scenes/InsertionGeomagic.py index c4674ee2..6709f342 100644 --- a/scenes/InsertionGeomagic.py +++ b/scenes/InsertionGeomagic.py @@ -68,16 +68,16 @@ def createScene(root): root.addObject("GeomagicDriver" , name='GeomagicDevice' , deviceName='Default Device' - , scale='0.02' - , drawDeviceFrame='false' - , drawDevice='false' - , manualStart='0' - , positionBase='0.12 0 0' - , orientationBase='0 0.174 0 -0.985' + , scale=0.02 + , drawDeviceFrame=False + , drawDevice=False + , manualStart=0 + , positionBase=[0.12, 0, 0] + , orientationBase=[0, 0.174, 0, -0.985] ) toolController = root.addChild("ToolController") - toolController.addObject("MechanicalObject", name="mstate_baseMaster", position="@GeomagicDevice.positionDevice", template="Rigid3d", showObjectScale=0.01, showObject="false", drawMode=1) + toolController.addObject("MechanicalObject", name="mstate_baseMaster", position="@GeomagicDevice.positionDevice", template="Rigid3d", showObjectScale=0.01, showObject=False, drawMode=1) needle = root.addChild("Needle") needle.addObject("EulerImplicitSolver", firstOrder=True) @@ -88,30 +88,30 @@ def createScene(root): needle.addObject("EdgeSetTopologyModifier", name="modifier") needle.addObject("PointSetTopologyModifier", name="modifier2") - needle.addObject("MechanicalObject", name="mstate", template="Rigid3d", showObjectScale=0.002, showObject="false", drawMode=1) + needle.addObject("MechanicalObject", name="mstate", template="Rigid3d", showObjectScale=0.002, showObject=False, drawMode=1) needle.addObject("UniformMass", totalMass=g_needleTotalMass) needle.addObject("BeamFEMForceField", name="FEM", **g_needleMechanicalParameters) # needle.addObject("FixedLagrangianConstraint", indices="0" ) - needle.addObject("LinearSolverConstraintCorrection", printLog="false", linearSolver="@LinearSolver") - needle.addObject("LCPForceFeedback", activate='1', forceCoef='0.01') + needle.addObject("LinearSolverConstraintCorrection", printLog=False, linearSolver="@LinearSolver") + needle.addObject("LCPForceFeedback", activate=1, forceCoef=0.01) needleBase = needle.addChild("needleBase") needleBase.addObject("PointSetTopologyContainer", name="Container_base", position="@../mstate.position")#"@../../GeomagicDevice.positionBase") needleBase.addObject("MechanicalObject",name="mstate_base", template="Rigid3d") needleBase.addObject("RestShapeSpringsForceField",points=[0],stiffness=1e9, angularStiffness=1e9,external_points=[0],external_rest_shape="@/ToolController/mstate_baseMaster") - needleBase.addObject("SubsetMapping", indices="0") + needleBase.addObject("SubsetMapping", indices=0) needleBodyCollision = needle.addChild("bodyCollision") needleBodyCollision.addObject("EdgeSetTopologyContainer", name="Container_body", src="@../Container") - needleBodyCollision.addObject("MechanicalObject",name="mstate_body", template="Vec3d", drawMode=0, showObject="false", showObjectScale="10") + needleBodyCollision.addObject("MechanicalObject",name="mstate_body", template="Vec3d", drawMode=0, showObject=False, showObjectScale=10) needleBodyCollision.addObject("EdgeGeometry",name="geom_body",mstate="@mstate_body", topology="@Container_body") needleBodyCollision.addObject("EdgeNormalHandler", name="NeedleBeams", geometry="@geom_body") needleBodyCollision.addObject("IdentityMapping") needleTipCollision = needle.addChild("tipCollision") - needleTipCollision.addObject("MechanicalObject",name="mstate_tip",position=[g_needleBaseOffset[0], g_needleBaseOffset[1], -(g_needleLength+g_needleBaseOffset[2])],template="Vec3d", showObject="false", showObjectScale=20) + needleTipCollision.addObject("MechanicalObject",name="mstate_tip",position=[g_needleBaseOffset[0], g_needleBaseOffset[1], -(g_needleLength+g_needleBaseOffset[2])],template="Vec3d", showObject=False, showObjectScale=20) needleTipCollision.addObject("PointGeometry",name="geom_tip",mstate="@mstate_tip") needleTipCollision.addObject("RigidMapping",globalToLocalCoords=True,index=g_needleNumberOfElems) @@ -121,7 +121,7 @@ def createScene(root): needleVisual.addObject("QuadSetTopologyModifier", name="Modifier") needleVisual.addObject("Edge2QuadTopologicalMapping", nbPointsOnEachCircle=8, radius=g_needleRadius, input="@../Container", output="@Container_visu") - needleVisual.addObject("MechanicalObject", name="mstate_visu", showObjectScale="0.0002", showObject="false", drawMode="1") + needleVisual.addObject("MechanicalObject", name="mstate_visu", showObjectScale=0.0002, showObject=False, drawMode=1) needleVisual.addObject("TubularMapping", nbPointsOnEachCircle=8, radius=g_needleRadius, input="@../mstate", output="@mstate_visu") @@ -129,7 +129,7 @@ def createScene(root): needleOGL.addObject("OglModel", position="@../Container_visu.position", vertices="@../Container_visu.position", quads="@../Container_visu.quads", - color="0.4 0.34 0.34", + color=[0.4, 0.34, 0.34], material="texture Ambient 1 0.4 0.34 0.34 1.0 Diffuse 0 0.4 0.34 0.34 1.0 Specular 1 0.4 0.34 0.34 0.1 Emissive 1 0.5 0.54 0.54 .01 Shininess 1 20", name="visualOgl") needleOGL.addObject("IdentityMapping") @@ -144,7 +144,7 @@ def createScene(root): volume.addObject("EulerImplicitSolver") volume.addObject("EigenSimplicialLDLT", name="LinearSolver", template='CompressedRowSparseMatrixMat3x3d') #volume.addObject("TetrahedronSetTopologyContainer", name="TetraContainer", position="@../GelGridTopo/HexaTop.position") - volume.addObject("MeshGmshLoader", name="meshLoader", filename="mesh/liver.msh", scale3d="0.08 0.08 0.08", translation="0 -0.3 -0.2") + volume.addObject("MeshGmshLoader", name="meshLoader", filename="mesh/liver.msh", scale3d=[0.08, 0.08, 0.08], translation=[0, -0.3, -0.2]) volume.addObject("TetrahedronSetTopologyContainer", name="TetraContainer", position="@meshLoader.position", tetrahedra="@meshLoader.tetrahedra") volume.addObject("TetrahedronSetTopologyModifier", name="TetraModifier") #volume.addObject("Hexa2TetraTopologicalMapping", input="@../GelGridTopo/HexaTop", output="@TetraContainer", swapping="false") @@ -159,9 +159,9 @@ def createScene(root): volume.addObject("MeshMatrixMass", name="Mass",totalMass=g_gelTotalMass) volume.addObject("BoxROI",name="BoxROI",box=g_gelFixedBoxROI) - volume.addObject("RestShapeSpringsForceField", stiffness='1e6',points="@BoxROI.indices" ) + volume.addObject("RestShapeSpringsForceField", stiffness=1e6,points="@BoxROI.indices" ) - volume.addObject("LinearSolverConstraintCorrection", printLog="false", linearSolver="@LinearSolver") + volume.addObject("LinearSolverConstraintCorrection", printLog=False, linearSolver="@LinearSolver") volumeCollision = volume.addChild("collision") volumeCollision.addObject("TriangleSetTopologyContainer", name="TriContainer") @@ -202,7 +202,7 @@ def createScene(root): ) root.addObject("DistanceFilter",algo="@InsertionAlgo",distance=0.01) root.addObject("SecondDirection",name="punctureDirection",handler="@Volume/collision/SurfaceTriangles") - root.addObject("ConstraintUnilateral",input="@InsertionAlgo.output",directions="@punctureDirection",draw_scale="0.001")#, mu="0.001") + root.addObject("ConstraintUnilateral",input="@InsertionAlgo.output",directions="@punctureDirection",draw_scale=0.001, mu=0.001) root.addObject("FirstDirection",name="bindDirection", handler="@Needle/bodyCollision/NeedleBeams") root.addObject("ConstraintInsertion",input="@InsertionAlgo.outputList", directions="@bindDirection",draw_scale="0.01", frictionCoeff=0.000) From d55e985549493232c21bf08c9a53681f5f34bb88 Mon Sep 17 00:00:00 2001 From: Themis Skamagkis Date: Mon, 28 Jul 2025 17:00:28 +0200 Subject: [PATCH 3/5] [scene] Removed unnecessary comments --- scenes/InsertionGeomagic.py | 19 ++++--------------- 1 file changed, 4 insertions(+), 15 deletions(-) diff --git a/scenes/InsertionGeomagic.py b/scenes/InsertionGeomagic.py index 6709f342..3c7a7413 100644 --- a/scenes/InsertionGeomagic.py +++ b/scenes/InsertionGeomagic.py @@ -62,7 +62,7 @@ def createScene(root): root.addObject("ConstraintAttachButtonSetting") root.addObject("VisualStyle", displayFlags="showVisualModels hideBehaviorModels showCollisionModels hideMappings hideForceFields showWireframe showInteractionForceFields" ) root.addObject("FreeMotionAnimationLoop") - root.addObject("GenericConstraintSolver", tolerance=0.00001, maxIt=5000, printLog=False, computeConstraintForces=True) + root.addObject("GenericConstraintSolver", tolerance=0.00001, maxIt=5000) root.addObject("CollisionLoop") root.addObject("GeomagicDriver" @@ -71,7 +71,7 @@ def createScene(root): , scale=0.02 , drawDeviceFrame=False , drawDevice=False - , manualStart=0 + , manualStart=False , positionBase=[0.12, 0, 0] , orientationBase=[0, 0.174, 0, -0.985] ) @@ -92,12 +92,11 @@ def createScene(root): needle.addObject("UniformMass", totalMass=g_needleTotalMass) needle.addObject("BeamFEMForceField", name="FEM", **g_needleMechanicalParameters) - # needle.addObject("FixedLagrangianConstraint", indices="0" ) - needle.addObject("LinearSolverConstraintCorrection", printLog=False, linearSolver="@LinearSolver") + needle.addObject("LinearSolverConstraintCorrection", linearSolver="@LinearSolver") needle.addObject("LCPForceFeedback", activate=1, forceCoef=0.01) needleBase = needle.addChild("needleBase") - needleBase.addObject("PointSetTopologyContainer", name="Container_base", position="@../mstate.position")#"@../../GeomagicDevice.positionBase") + needleBase.addObject("PointSetTopologyContainer", name="Container_base", position="@../mstate.position") needleBase.addObject("MechanicalObject",name="mstate_base", template="Rigid3d") needleBase.addObject("RestShapeSpringsForceField",points=[0],stiffness=1e9, angularStiffness=1e9,external_points=[0],external_rest_shape="@/ToolController/mstate_baseMaster") needleBase.addObject("SubsetMapping", indices=0) @@ -135,26 +134,17 @@ def createScene(root): needleOGL.addObject("IdentityMapping") - - #gelTopo = root.addChild("GelGridTopo") - #gelTopo.addObject("RegularGridTopology", name="HexaTop", **g_gelRegularGridParameters) - - volume = root.addChild("Volume") volume.addObject("EulerImplicitSolver") volume.addObject("EigenSimplicialLDLT", name="LinearSolver", template='CompressedRowSparseMatrixMat3x3d') - #volume.addObject("TetrahedronSetTopologyContainer", name="TetraContainer", position="@../GelGridTopo/HexaTop.position") volume.addObject("MeshGmshLoader", name="meshLoader", filename="mesh/liver.msh", scale3d=[0.08, 0.08, 0.08], translation=[0, -0.3, -0.2]) volume.addObject("TetrahedronSetTopologyContainer", name="TetraContainer", position="@meshLoader.position", tetrahedra="@meshLoader.tetrahedra") volume.addObject("TetrahedronSetTopologyModifier", name="TetraModifier") - #volume.addObject("Hexa2TetraTopologicalMapping", input="@../GelGridTopo/HexaTop", output="@TetraContainer", swapping="false") volume.addObject("MechanicalObject", name="mstate_gel", template="Vec3d") volume.addObject("TetrahedronGeometry", name="geom_tetra", mstate="@mstate_gel", topology="@TetraContainer", draw=False) - #volume.addObject("TriangleGeometry", name="tri_geom", mstate="@mstate_gel", topology="@TetraContainer",draw=True) volume.addObject("PhongTriangleNormalHandler", name="InternalTriangles", geometry="@geom_tetra") volume.addObject("AABBBroadPhase",name="AABBTetra",geometry="@geom_tetra",nbox=[3,3,3],thread=1) - #volume.addObject("ParallelTetrahedronFEMForceField", name="FF",**g_gelMechanicalParameters) volume.addObject("TetrahedronFEMForceField", name="FF",**g_gelMechanicalParameters) volume.addObject("MeshMatrixMass", name="Mass",totalMass=g_gelTotalMass) @@ -198,7 +188,6 @@ def createScene(root): slideDistance=0.003, drawcollision=True, sphereRadius=0.0001 - #projective=True ) root.addObject("DistanceFilter",algo="@InsertionAlgo",distance=0.01) root.addObject("SecondDirection",name="punctureDirection",handler="@Volume/collision/SurfaceTriangles") From 09d3633fa00b587aeff9c463610a58af2f93ebfd Mon Sep 17 00:00:00 2001 From: Themis Skamagkis Date: Mon, 28 Jul 2025 17:18:35 +0200 Subject: [PATCH 4/5] [scene] Converted strings to numbers in NeedleInsertion script --- scenes/NeedleInsertion.py | 27 +++++++++++---------------- 1 file changed, 11 insertions(+), 16 deletions(-) diff --git a/scenes/NeedleInsertion.py b/scenes/NeedleInsertion.py index cd8b3c89..4ac96001 100644 --- a/scenes/NeedleInsertion.py +++ b/scenes/NeedleInsertion.py @@ -59,11 +59,11 @@ def createScene(root): root.addObject("ConstraintAttachButtonSetting") root.addObject("VisualStyle", displayFlags="showVisualModels hideBehaviorModels showCollisionModels hideMappings hideForceFields showWireframe showInteractionForceFields" ) root.addObject("FreeMotionAnimationLoop") - root.addObject("GenericConstraintSolver", tolerance=0.00001, maxIt=5000, printLog=False, computeConstraintForces=True) + root.addObject("GenericConstraintSolver", tolerance=0.00001, maxIt=5000) root.addObject("CollisionLoop") needleBaseMaster = root.addChild("NeedleBaseMaster") - needleBaseMaster.addObject("MechanicalObject", name="mstate_baseMaster", position=[0.04, 0.04, 0, 0, 0, 0, 1], template="Rigid3d", showObjectScale=0.002, showObject="false", drawMode=1) + needleBaseMaster.addObject("MechanicalObject", name="mstate_baseMaster", position=[0.04, 0.04, 0, 0, 0, 0, 1], template="Rigid3d", showObjectScale=0.002, showObject=False, drawMode=1) needleBaseMaster.addObject("LinearMovementProjectiveConstraint",indices=[0], keyTimes=[0,1,7,9],movements= [ [0.04, 0.04,0,0,0,0] , [0.04, 0.04,0.05,0,3.14/2,0] @@ -82,12 +82,11 @@ def createScene(root): needle.addObject("EdgeSetTopologyModifier", name="modifier") needle.addObject("PointSetTopologyModifier", name="modifier2") - needle.addObject("MechanicalObject", name="mstate", template="Rigid3d", showObjectScale=0.0002, showObject="false", drawMode=1) + needle.addObject("MechanicalObject", name="mstate", template="Rigid3d", showObjectScale=0.0002, showObject=False, drawMode=1) needle.addObject("UniformMass", totalMass=g_needleTotalMass) needle.addObject("BeamFEMForceField", name="FEM", **g_needleMechanicalParameters) - # needle.addObject("FixedLagrangianConstraint", indices="0" ) - needle.addObject("LinearSolverConstraintCorrection", printLog="false", linearSolver="@LinearSolver") + needle.addObject("LinearSolverConstraintCorrection", printLog=False, linearSolver="@LinearSolver") needleBase = needle.addChild("needleBase") needleBase.addObject("PointSetTopologyContainer", name="Container_base", position=[0, 0, 0]) @@ -116,7 +115,7 @@ def createScene(root): needleVisual.addObject("QuadSetTopologyModifier", name="Modifier") needleVisual.addObject("Edge2QuadTopologicalMapping", nbPointsOnEachCircle=8, radius=g_needleRadius, input="@../Container", output="@Container_visu") - needleVisual.addObject("MechanicalObject", name="mstate_visu", showObjectScale="0.0002", showObject="true", drawMode="1") + needleVisual.addObject("MechanicalObject", name="mstate_visu", showObjectScale=0.0002, showObject=True, drawMode=1) needleVisual.addObject("TubularMapping", nbPointsOnEachCircle=8, radius=g_needleRadius, input="@../mstate", output="@mstate_visu") @@ -124,7 +123,7 @@ def createScene(root): needleOGL.addObject("OglModel", position="@../Container_visu.position", vertices="@../Container_visu.position", quads="@../Container_visu.quads", - color="0.4 0.34 0.34", + color=[0.4, 0.34, 0.34], material="texture Ambient 1 0.4 0.34 0.34 1.0 Diffuse 0 0.4 0.34 0.34 1.0 Specular 1 0.4 0.34 0.34 0.1 Emissive 1 0.5 0.54 0.54 .01 Shininess 1 20", name="visualOgl") needleOGL.addObject("IdentityMapping") @@ -140,21 +139,18 @@ def createScene(root): volume.addObject("EigenSimplicialLDLT", name="LinearSolver", template='CompressedRowSparseMatrixMat3x3d') volume.addObject("TetrahedronSetTopologyContainer", name="TetraContainer", position="@../GelGridTopo/HexaTop.position") volume.addObject("TetrahedronSetTopologyModifier", name="TetraModifier") - volume.addObject("Hexa2TetraTopologicalMapping", input="@../GelGridTopo/HexaTop", output="@TetraContainer", swapping="false") + volume.addObject("Hexa2TetraTopologicalMapping", input="@../GelGridTopo/HexaTop", output="@TetraContainer", swapping=False) volume.addObject("MechanicalObject", name="mstate_gel", template="Vec3d") volume.addObject("TetrahedronGeometry", name="geom_tetra", mstate="@mstate_gel", topology="@TetraContainer", draw=False) - #volume.addObject("TriangleGeometry", name="tri_geom", mstate="@mstate_gel", topology="@TetraContainer",draw=True) - #volume.addObject("PhongTriangleNormalHandler", name="InternalTriangles", geometry="@geom_tetra") volume.addObject("AABBBroadPhase",name="AABBTetra",geometry="@geom_tetra",nbox=[3,3,3],thread=1) - #volume.addObject("ParallelTetrahedronFEMForceField", name="FF",**g_gelMechanicalParameters) volume.addObject("TetrahedronFEMForceField", name="FF",**g_gelMechanicalParameters) volume.addObject("MeshMatrixMass", name="Mass",totalMass=g_gelTotalMass) volume.addObject("BoxROI",name="BoxROI",box=g_gelFixedBoxROI) - volume.addObject("RestShapeSpringsForceField", stiffness='1e6',points="@BoxROI.indices" ) + volume.addObject("RestShapeSpringsForceField", stiffness=1e6,points="@BoxROI.indices" ) - volume.addObject("LinearSolverConstraintCorrection", printLog="false", linearSolver="@LinearSolver") + volume.addObject("LinearSolverConstraintCorrection", printLog=False, linearSolver="@LinearSolver") volumeCollision = volume.addChild("collision") volumeCollision.addObject("TriangleSetTopologyContainer", name="TriContainer") @@ -191,11 +187,10 @@ def createScene(root): slideDistance=0.003, drawcollision=True, sphereRadius=0.0001 - #projective=True ) root.addObject("DistanceFilter",algo="@InsertionAlgo",distance=0.01) root.addObject("SecondDirection",name="punctureDirection",handler="@Volume/collision/SurfaceTriangles") - root.addObject("ConstraintUnilateral",input="@InsertionAlgo.output",directions="@punctureDirection",draw_scale="0.001") + root.addObject("ConstraintUnilateral",input="@InsertionAlgo.output",directions="@punctureDirection",draw_scale=0.001) root.addObject("FirstDirection",name="bindDirection", handler="@Needle/bodyCollision/NeedleBeams") - root.addObject("ConstraintInsertion",input="@InsertionAlgo.outputList", directions="@bindDirection",draw_scale="0.002", frictionCoeff=0.05) + root.addObject("ConstraintInsertion",input="@InsertionAlgo.outputList", directions="@bindDirection",draw_scale=0.002, frictionCoeff=0.05) From 0934f25f6eba3069ef880ced0c0bf73070b20754 Mon Sep 17 00:00:00 2001 From: Themis Skamagkis Date: Mon, 28 Jul 2025 17:20:49 +0200 Subject: [PATCH 5/5] [scene] Converted strings to numbers in NeedleInsertionCycles script --- scenes/NeedleInsertionCycles.py | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/scenes/NeedleInsertionCycles.py b/scenes/NeedleInsertionCycles.py index 7dc0baa4..158af515 100644 --- a/scenes/NeedleInsertionCycles.py +++ b/scenes/NeedleInsertionCycles.py @@ -63,7 +63,7 @@ def createScene(root): root.addObject("CollisionLoop") needleBaseMaster = root.addChild("NeedleBaseMaster") - needleBaseMaster.addObject("MechanicalObject", name="mstate_baseMaster", position=[0.04, 0.04, 0, 0, 0, 0, 1], template="Rigid3d", showObjectScale=0.002, showObject="true", drawMode=1) + needleBaseMaster.addObject("MechanicalObject", name="mstate_baseMaster", position=[0.04, 0.04, 0, 0, 0, 0, 1], template="Rigid3d", showObjectScale=0.002, showObject=True, drawMode=1) needleBaseMaster.addObject("LinearMovementProjectiveConstraint",indices=[0], keyTimes=[ 0, 1, 4, 4.5, 5, 8 @@ -97,12 +97,11 @@ def createScene(root): needle.addObject("EdgeSetTopologyModifier", name="modifier") needle.addObject("PointSetTopologyModifier", name="modifier2") - needle.addObject("MechanicalObject", name="mstate", template="Rigid3d", showObjectScale=0.0002, showObject="true", drawMode=1) + needle.addObject("MechanicalObject", name="mstate", template="Rigid3d", showObjectScale=0.0002, showObject=True, drawMode=1) needle.addObject("UniformMass", totalMass=g_needleTotalMass) needle.addObject("BeamFEMForceField", name="FEM", **g_needleMechanicalParameters) - # needle.addObject("FixedLagrangianConstraint", indices="0" ) - needle.addObject("LinearSolverConstraintCorrection", printLog="false", linearSolver="@LinearSolver") + needle.addObject("LinearSolverConstraintCorrection", printLog=False, linearSolver="@LinearSolver") needleBase = needle.addChild("needleBase") needleBase.addObject("PointSetTopologyContainer", name="Container_base", position=[0, 0, 0]) @@ -131,7 +130,7 @@ def createScene(root): needleVisual.addObject("QuadSetTopologyModifier", name="Modifier") needleVisual.addObject("Edge2QuadTopologicalMapping", nbPointsOnEachCircle=8, radius=g_needleRadius, input="@../Container", output="@Container_visu") - needleVisual.addObject("MechanicalObject", name="mstate_visu", showObjectScale="0.0002", showObject="true", drawMode="1") + needleVisual.addObject("MechanicalObject", name="mstate_visu", showObjectScale=0.0002, showObject=True, drawMode=1) needleVisual.addObject("TubularMapping", nbPointsOnEachCircle=8, radius=g_needleRadius, input="@../mstate", output="@mstate_visu") @@ -139,7 +138,7 @@ def createScene(root): needleOGL.addObject("OglModel", position="@../Container_visu.position", vertices="@../Container_visu.position", quads="@../Container_visu.quads", - color="0.4 0.34 0.34", + color=[0.4, 0.34, 0.34], material="texture Ambient 1 0.4 0.34 0.34 1.0 Diffuse 0 0.4 0.34 0.34 1.0 Specular 1 0.4 0.34 0.34 0.1 Emissive 1 0.5 0.54 0.54 .01 Shininess 1 20", name="visualOgl") needleOGL.addObject("IdentityMapping") @@ -155,21 +154,19 @@ def createScene(root): volume.addObject("EigenSimplicialLDLT", name="LinearSolver", template='CompressedRowSparseMatrixMat3x3d') volume.addObject("TetrahedronSetTopologyContainer", name="TetraContainer", position="@../GelGridTopo/HexaTop.position") volume.addObject("TetrahedronSetTopologyModifier", name="TetraModifier") - volume.addObject("Hexa2TetraTopologicalMapping", input="@../GelGridTopo/HexaTop", output="@TetraContainer", swapping="false") + volume.addObject("Hexa2TetraTopologicalMapping", input="@../GelGridTopo/HexaTop", output="@TetraContainer", swapping=False) volume.addObject("MechanicalObject", name="mstate_gel", template="Vec3d") volume.addObject("TetrahedronGeometry", name="geom_tetra", mstate="@mstate_gel", topology="@TetraContainer", draw=False) - #volume.addObject("TriangleGeometry", name="tri_geom", mstate="@mstate_gel", topology="@TetraContainer",draw=True) volume.addObject("PhongTriangleNormalHandler", name="InternalTriangles", geometry="@geom_tetra") volume.addObject("AABBBroadPhase",name="AABBTetra",geometry="@geom_tetra",nbox=[3,3,3],thread=1) - #volume.addObject("ParallelTetrahedronFEMForceField", name="FF",**g_gelMechanicalParameters) volume.addObject("TetrahedronFEMForceField", name="FF",**g_gelMechanicalParameters) volume.addObject("MeshMatrixMass", name="Mass",totalMass=g_gelTotalMass) volume.addObject("BoxROI",name="BoxROI",box=g_gelFixedBoxROI) - volume.addObject("RestShapeSpringsForceField", stiffness='1e6',points="@BoxROI.indices" ) + volume.addObject("RestShapeSpringsForceField", stiffness=1e6,points="@BoxROI.indices" ) - volume.addObject("LinearSolverConstraintCorrection", printLog="false", linearSolver="@LinearSolver") + volume.addObject("LinearSolverConstraintCorrection", printLog=False, linearSolver="@LinearSolver") volumeCollision = volume.addChild("collision") volumeCollision.addObject("TriangleSetTopologyContainer", name="TriContainer") @@ -206,11 +203,10 @@ def createScene(root): slideDistance=0.003, drawcollision=True, sphereRadius=0.0001 - #projective=True ) root.addObject("DistanceFilter",algo="@InsertionAlgo",distance=0.01) root.addObject("SecondDirection",name="punctureDirection",handler="@Volume/collision/SurfaceTriangles") - root.addObject("ConstraintUnilateral",input="@InsertionAlgo.output",directions="@punctureDirection",draw_scale="0.001")#, mu="0.001") + root.addObject("ConstraintUnilateral",input="@InsertionAlgo.output",directions="@punctureDirection",draw_scale=0.001, mu=0.001) root.addObject("FirstDirection",name="bindDirection", handler="@Needle/bodyCollision/NeedleBeams") - root.addObject("ConstraintInsertion",input="@InsertionAlgo.outputList", directions="@bindDirection",draw_scale="0.002", frictionCoeff=0.0023) + root.addObject("ConstraintInsertion",input="@InsertionAlgo.outputList", directions="@bindDirection",draw_scale=0.002, frictionCoeff=0.0023)