2016-08-05 64 views
1

Ich habe eine Datei aus einer 3D-Anwendung wie Blender oder Maya exportiert. Ich kann die Dateien lesen. Ich am Ende mit Indizes, die jedes Dreieck und eine Eckpunktliste beschreiben.So finden Sie verbundene Dreiecke auf einem 3D-Mesh

Die Datei kann mehr als ein verbundenes Netz haben, z. B. zwei Kugeln. Ich möchte einzelne Netze auswählen, indem ich verbundene Dreiecke finde. Was ist der beste Weg, dies zu tun? Welche geometrischen Algorithmen kann ich verwenden? Irgendwelche Beispiele? Kann es Multi-Threading sein?

+0

Dies wird wahrscheinlich besser erreicht, indem die Netze separate Knoten im Szenegraphen bilden und die gesamte Szene beim Exportieren nicht auf einen Knoten reduziert wird. – samgak

+0

Wahr. Aber ich kann das nicht garantieren, weil ich nicht alle Dateien erstellen kann. Ich kann nur die Informationen extrahieren. 3D-Pakete haben einen verbundenen oder verknüpften Auswahlbefehl. Ich frage mich, wie sie das machen. – user6682440

+0

Mit "verbunden" meinst du, mindestens am Scheitelpunkt zu teilen oder sich zu schneiden? Wenn es der erste ist, erzeuge Nachbarschaftsinformation für jeden Knoten (verwende Hashing?) Und führe dann eine Traversierung aus, die von einem beliebigen Eckpunkt aus beginnt, wobei Markierung als besucht markiert wird. – samgak

Antwort

2

Was Sie brauchen, ist eine Grafiklösung.

Nehmen Sie alle Daten, die Scheitelpunkte werden zu Knoten im Graphen, die Kanten, die Vertices verbinden, verknüpfen Sie die Knoten im Graphen. Führen Sie ein DSF/BFS für alle Knoten aus, die Sie besuchen. Alle markierten Knoten gehören zum selben Objekt.

Führen Sie es erneut ausgehend von einem unmarkierten Knoten aus, um weitere Objekte zu finden.

Sie können einen Graphen parallel erstellen, wenn Sie denken, dass es einfacher ist, aber Sie sollten es auch mit den geometrischen Daten tun können.