11import Sofa
22
3+ GeomagicActive = False
4+
35g_needleLength = 0.200 #(m)
46g_needleNumberOfElems = 40 #(# of edges)
57g_needleBaseOffset = [0.15 ,0.04 ,0.04 ]
@@ -67,27 +69,33 @@ def createScene(root):
6769 root .addObject ("CollisionLoop" )
6870
6971 toolController = root .addChild ("ToolController" )
70- toolController .addObject ("GeomagicDriver"
71- , name = 'GeomagicDevice'
72- , deviceName = 'Default Device'
73- , scale = 0.02
74- , drawDeviceFrame = False
75- , drawDevice = False
76- , manualStart = False
77- , positionBase = [0.12 , 0 , 0 ]
78- , orientationBase = [0 , 0.174 , 0 , - 0.985 ]
79- )
72+ controllerPos = ""
73+ if (GeomagicActive ):
74+ controllerPos = "@GeomagicDevice.positionDevice"
75+ toolController .addObject ("GeomagicDriver"
76+ , name = 'GeomagicDevice'
77+ , deviceName = 'Default Device'
78+ , scale = 0.02
79+ , drawDeviceFrame = False
80+ , drawDevice = False
81+ , manualStart = False
82+ , positionBase = [0.12 , 0 , 0 ]
83+ , orientationBase = [0 , 0.174 , 0 , - 0.985 ]
84+ )
85+ #toolController.addObject("WriteState", name="writer", filename="RecordState/NeedleInsertionHaptics.txt"
86+ # , period=0.01, writeX=True, writeV=True, time=0)
87+ else :
88+ controllerPos = "@reader.position"
89+
8090 toolController .addObject ("MechanicalObject" , name = "mstate_baseMaster"
81- #, position="@GeomagicDevice.positionDevice"
82- , position = "@reader.position"
91+ , position = controllerPos
8392 , template = "Rigid3d"
8493 , showObjectScale = 0.01
8594 , showObject = False
8695 , drawMode = 1
8796 )
88- #toolController.addObject("WriteState", name="writer", filename="RecordState/Haptics_Liver.txt"
89- # , period=0.01, writeX=True, writeV=True, time=0)
90- toolController .addObject ("ReadState" , name = "reader" , filename = "RecordState/Haptics_Liver.txt" )
97+ if (not GeomagicActive ):
98+ toolController .addObject ("ReadState" , name = "reader" , filename = "RecordState/NeedleInsertionHaptics.txt" )
9199
92100 needle = root .addChild ("Needle" )
93101 needle .addObject ("EulerImplicitSolver" , firstOrder = True )
@@ -165,8 +173,7 @@ def createScene(root):
165173 volume .addObject ("MechanicalObject" , name = "mstate_gel" , template = "Vec3d" )
166174 volume .addObject ("TetrahedronGeometry" , name = "geom_tetra" , mstate = "@mstate_gel" , topology = "@TetraContainer" , draw = False )
167175 volume .addObject ("PhongTriangleNormalHandler" , name = "InternalTriangles" , geometry = "@geom_tetra" )
168- volume .addObject ("AABBBroadPhase" ,name = "AABBTetra" ,geometry = "@geom_tetra" ,nbox = [3 ,3 ,3 ],thread = 1 )
169- volume .addObject ("TetrahedronFEMForceField" , name = "FF" ,** g_gelMechanicalParameters )
176+ volume .addObject ("FastTetrahedralCorotationalForceField" , name = "FF" ,** g_gelMechanicalParameters )
170177 volume .addObject ("MeshMatrixMass" , name = "Mass" ,totalMass = g_gelTotalMass )
171178
172179 volume .addObject ("BoxROI" ,name = "BoxROI" ,box = g_gelFixedBoxROI )
@@ -181,7 +188,7 @@ def createScene(root):
181188 volumeCollision .addObject ("MechanicalObject" , name = "mstate_gelColi" ,position = "@../TetraContainer.position" )
182189 volumeCollision .addObject ("TriangleGeometry" , name = "geom_tri" , mstate = "@mstate_gelColi" , topology = "@TriContainer" ,draw = False )
183190 volumeCollision .addObject ("PhongTriangleNormalHandler" , name = "SurfaceTriangles" , geometry = "@geom_tri" )
184- volumeCollision .addObject ("AABBBroadPhase" ,name = "AABBTriangles" ,thread = 1 ,nbox = [2 ,2 ,3 ])
191+ volumeCollision .addObject ("AABBBroadPhase" , name = "AABBTriangles" , thread = 1 , nbox = [2 ,2 ,3 ], method = 2 )
185192
186193 volumeCollision .addObject ("IdentityMapping" , name = "identityMappingToCollision" , input = "@../mstate_gel" , output = "@mstate_gelColi" , isMechanical = True )
187194
0 commit comments