Home › Forum › SOFA › Using SOFA › [SOLVED] Force Induced Topological Modification of Triangular Mesh
Tagged: 64_bits, Plugin_Geomagic, SOFA_2006, Windows_10
- This topic has 10 replies, 4 voices, and was last updated 3 years, 10 months ago by Hugo.
-
AuthorPosts
-
4 November 2020 at 13:02 #17551SinghBlocked
I am trying to simulate the fenestration of a membrane using Geomagic Touch. I am using Triangular FEM from SOFA to model a membrane.
I can not see any example scene in which one does topological modification with a haptic device, say when we push a deformable model using a haptic device, an incision is made, the triangular mesh gets ruptured or fenestrated. Can you please point me in the right direction in order to achieve the same by using SOFA?Regards,
Sukhraj12 November 2020 at 00:16 #17642epernodBlockedHi,
I see several steps to do what you want. Could you tell what you already have:
1. Do you already have a simulation of the Geomagic Touch deforming the membrane ? Everything is ready in SOFA to do that but in my knowledge there is no such example in the repository.
2. Do you already have the triangular mesh ruptured ? If yes I would be interested to know which paper you implemented.
Algorithm to cut triangular mesh are available but from given input coordinates.
3. Do you have simulation of the triangular mesh deforming and starting to cut (full simulation you are targeting but without the haptic interaction) ?best regards
13 November 2020 at 07:08 #17654SinghBlockedHi @epernod
Here are my answers:
Hi,
1. Do you already have a simulation of the Geomagic Touch deforming the membrane ? Everything is ready in SOFA to do that but in my knowledge there is no such example in the repository.
Ans: Yes, I do have that, I used FEM Liver scene, and then replaced the Liver meshes, with a triangular mesh. I use Triangular FEM from SOFA. I can interact with the membrane ( a rectangular Triangle Mesh ) with the geomagic touch, I can push the membrane that produces deformations in it, but it would not tear even if I keep pushing. And I think that requires using of Topological Modifiers.2. Do you already have the triangular mesh ruptured ? If yes I would be interested to know which paper you implemented.
Algorithm to cut triangular mesh are available but from given input coordinates.Ans: I don’t have that. I have not implemented any new algorithm to do so. I intended to use sofa’s implementation for the same. I did run a few sofa examples for topological modification.
3. Do you have simulation of the triangular mesh deforming and starting to cut (full simulation you are targeting but without the haptic interaction) ?
Ans: I did run an example from topological modifier, that creates cut along the edges of a mesh, basically removes the edges of mesh, and the edge indices are provided in a text file. Is that the same you are asking about?
18 November 2020 at 09:56 #1772019 November 2020 at 01:24 #17726epernodBlockedHi,
as I said, the Algorithm to cut triangular mesh are available but from given input coordinates (like from an arbitrary point A (x, y, z) to a point B).
So in your case for rupture, you will need to detect where the cut takes place.
This means to implement a Forcefield or an Engine that will detect elongated triangles and break them as soon as they reach a limit. You will need also to detect the direction of the fracture.
I’m quite sure some research have already been done on the topic.If you could find some articles on the subject I would be interested to follow the implementation in SOFA.
Best regards,
3 January 2021 at 17:02 #18098SinghBlockedHi @epernod
Greetings for the new year!I would like to start simple first. I would like just to first know the colliding triangles of a mesh with the tool, and remove those triangles.
Can you help me know what classes I must look into.
I looked
into bool RemovePrimitivePerformer<DataTypes>::createElementList()
, but it uses:/// picked structure from mouseInteractor. BodyPicked picked;
How can I find colliding faces of an organ(mesh) and tool(mesh) when using geomagic touch device?
4 January 2021 at 10:05 #18104ScheiklBlockedHi @sukhraj,
happy new year!Finding colliding elements between two specific collision models can be achieved with a ContactListener object: https://github.com/sofa-framework/sofa/blob/master/SofaKernel/modules/SofaBaseCollision/src/SofaBaseCollision/ContactListener.h
You can add that to your Scene with
listener = scene_node.addObject( "ContactListener", collisionModel1=node1.LineCollisionModel.getLinkPath(), collisionModel2=node2.innerCollision.LineCollisionModel.getLinkPath(), )
as an example in SofaPython3.
I would be very interested in any solution you come up with for the rupturing part!
Cheers,
Paul4 January 2021 at 16:43 #18105SinghBlockedHi @Scheikl,
Thanks for your inputs.
Sure, I will update you on the progress I make.I have mainly used *.scn files but not SofaPython.
Regards,
Sukhraj14 January 2021 at 09:00 #18205HugoKeymasterHi @sukhraj,
SofaPython3 will be integrated in the upcoming SOFA release v20.12.
Stay tuned in the coming days!Best,
Hugo
14 January 2021 at 09:10 #18207SinghBlocked@Hugo
I pulled the master to use the changes done by Scheikl in ContactListner.h
I intended to use it by creating a scene using CPP. Isn’t that the right direction, what benefits would I have with SofaPython3.Please let me know so that I know is it worth waiting. π
Regards,
Sukhraj14 January 2021 at 09:42 #18211HugoKeymasterYes it is no worry!
-
AuthorPosts
- You must be logged in to reply to this topic.