Home › Forum › SOFA › Using SOFA › [SOLVED] Applying Self collision
Tagged: knot
- This topic has 8 replies, 3 voices, and was last updated 5 years, 9 months ago by Wong.
-
AuthorPosts
-
15 December 2017 at 08:55 #10234BEKBlocked
Hi, everyone. I am the new user of SOFA.
I’m interest in knot tying in medical surgery
I tried to make knot model using two method.One knot consist of points and each point was linked by MeshspringForceField and LineBendingSprings. About collision model, Sphere and Line model were applied.
I found selfCollision properties of both collision models, so I applied too.I could tie this knot but it didn’t tie up tightly.
I guess light(?) self-collision and its adaptation process is needed to knot tying.Same problem was happened on the other model
I made knot using mesh models (for realistic… ) but it also has selfcollision problem.
How can I solve this problem?Thank you.
8 January 2018 at 17:20 #10271HugoKeymasterDear @eunkyungbae,
Simulation of suture or knot tying is currently a topic of research. Several groups are starting to focus on this topic. If you are interested, I could invite you to future discussions about it.
To answer your question: yes to have a realistic knot simulation, you need self-collision.
Could you share an example scene with us so that we can better understand and help you?Best
Hugo
19 January 2018 at 01:47 #10355BEKBlockedDear @Hugo
Sorry to late reply.
I tried to asscess c++ code to control self-collision, but I don’t knot how to change or add.This is my thread model I used.
model(PointLine50.obj) only consist of point and line.
I tag on point collision model for control by other tool.<Node name=”springthread”> <Gravity name=”R_Gravity” gravity=”0 0 0″ /> <EulerImplicitSolver rayleighStiffness=”0.01″ rayleighMass=”0.01″ /> <CGLinearSolver template=”GraphScattered” iterations=”20″ threshold=”1e-008″ tolerance=”1e-5″ /> <MeshTopology name=”Mesh” fileTopology=”PointLine50.obj” /> <MechanicalObject template=”Vec3d” name=”DOFs” scale3d=”1 1 1″ restScale=”1″ src=”@Mesh” translation=”-1 -5.0 -2.0″ rotation=”320 0 0″ scale=”2 2 2″/> <UniformMass mass=”1″ /> <FixedConstraint template=”Vec3d” name=”default6″ indices=”0″ /> <MeshSpringForceField name=”Springs” stiffness=”100000″ damping=”0″ /> <LineBendingSprings name=”BS” stiffness=”10000″ damping=”0″ /> <UncoupledConstraintCorrection /> <Point tags=”tip_thread_col” /> <Line selfCollision=”0″ contactStiffness=”10000″/> <Node name=”Collision”> <EdgeSetTopologyContainer /> <EdgeSetTopologyModifier /> <MechanicalObject template=”Vec3d” name=”splineMapped” /> <CatmullRomSplineMapping input=”@../DOFs” output=”@splineMapped” SplittingLevel=”1″ /> <Node name=”Visu”> <OglModel template=”ExtVec3f” name=”VisualModel” src=”@../” lineWidth=”6″ lineSmooth=”1″/> <OglTexture id=”imageTex” textureFilename=”textures/textureorange3569.png” textureUnit=”0″ repeat=”1″ /> <IdentityMapping input=”@..” output=”@VisualModel” /> </Node> </Node> </Node>
19 January 2018 at 02:54 #10356HugoKeymasterHi Bek,
could you please share the mesh/data with us ?
this would help to test,cheers,
Hugo
19 January 2018 at 08:22 #1035719 January 2018 at 14:59 #10360HugoKeymasterHi @eunkyungbae
I fixed it.
The problem was the quote you were using and I changed the MeshTopology into : one MeshObjLoader and one Mesh component.Scene below:
<Node name="springthread"> <VisualStyle displayFlags="showCollisionModels showVisual" /> <Gravity name="R_Gravity" gravity="0 0 0" /> <MeshObjLoader name="Mesh" filename="PointLine50.obj" /> <Mesh src="@Mesh" /> <EulerImplicitSolver rayleighStiffness="0.01" rayleighMass="0.01" /> <CGLinearSolver template="GraphScattered" iterations="20" threshold="1e-008" tolerance="1e-5" /> <MechanicalObject template="Vec3d" name="DOFs" scale3d="1 1 1" restScale="1" src="@Mesh" translation="-1 -5.0 -2.0" rotation="320 0 0" scale="2 2 2"/> <UniformMass mass="1" /> <FixedConstraint template="Vec3d" name="default6" indices="0" /> <MeshSpringForceField name="Springs" stiffness="100000" damping="0" /> <LineBendingSprings name="BS" stiffness="10000" damping="0" /> <UncoupledConstraintCorrection /> <Point tags="tip_thread_col" /> <Line selfCollision="0" contactStiffness="10000"/> <Node name="Collision"> <EdgeSetTopologyContainer /> <EdgeSetTopologyModifier /> <MechanicalObject template="Vec3d" name="splineMapped" /> <CatmullRomSplineMapping input="@../DOFs" output="@splineMapped" SplittingLevel="1" /> <Node name="Visu"> <OglModel template="ExtVec3f" name="VisualModel" src="@../" lineWidth="6" lineSmooth="1"/> <OglTexture id="imageTex" textureFilename="textures/textureorange3569.png" textureUnit="0" repeat="1" /> <IdentityMapping input="@.." output="@VisualModel" /> </Node> </Node> </Node>
Let me know if this is what you need.
Cheers,Hugo
13 March 2019 at 08:50 #13200WongBlockedHello @hugo,
Has the simulation of suture and knot tying been done now?
If done, and possible, I can pay for it to use the plugin. Otherwise, I can take part in the discussion and help develop.Thanks
Wong19 March 2019 at 19:27 #13225HugoKeymasterDear @outtt
There is no ready-to-use plugin for knot tying at my best knowledge. It has been investigated but nothing has come up yet.
Maybe @eunkyungbae has some update about her work?I will close this topic, but do not hesitate a new topic for any further question!
Best,Hugo
20 March 2019 at 02:13 #13232 -
AuthorPosts
- You must be logged in to reply to this topic.