Eine Gute 3D-mesh-Bibliothek
Ich bin auf der Suche nach einem guten 3D-Mesh-Bibliothek
- Sollte in der Lage sein zu Lesen, gängige Formate (OFF, OBJ...)
- Unterstützen sollte, die beiden half-edge-Struktur und ein Dreieck Suppe
- Sollte tolerant sein gegenüber Fehlern und illegalen Maschen.
- Grundlegende geometrische Operationen - Kreuzungen, normale Berechnung, etc'
- Am wichtigsten ist, Sollte man nicht verworren endlos-Vorlage und Vererbung Hierarchien.
Habe ich versucht, sowohl die CGAL und OpenMesh aber beide kläglich in den letzten Punkt.
Speziell CGAL ist unmöglich, zu Folgen, auch mit den modernsten code-Analyse-tools.
Bisher bin ich ernsthaft in Betracht zu ziehen, meine eigene.
Meine Vorliebe ist C++, aber ich bin offen für andere Optionen.
- Ich weiß nicht, ob es Ihren Anforderungen genügt, aber ein Blick auf VCG
Du musst angemeldet sein, um einen Kommentar abzugeben.
Darf ich Fragen, warum der Letzte Punkt ist eine Voraussetzung?
Bibliotheken geschrieben, der für die öffentlichkeit sind entworfen, um so allgemein wie möglich, so dass es verwendbar ist, die ein möglichst breites Publikum. In C++ ist dies oft am besten mit Vorlagen. Es wäre zu saugen enorm, wenn gefunden, eine gute Bibliothek, nur zu entdecken, es war nutzlos für Ihre Zwecke, da es schwimmt, anstatt verdoppelt.
CGAL, zum Beispiel, zu haben scheint, angenommen die bekannte und gut getestete STL-Paradigma zu schreiben, generische und erweiterbare C++ - Bibliotheken. Dies bedeutet in der Tat machen es schwer zu Folgen, mit code-Analyse-tools; ich bezweifle, dass Sie viel gutes im folgenden STL-Header entweder.
Aber sind Sie versuchen, die Bibliothek zu benutzen oder zu verändern? So oder so, scheinen Sie einige sehr hochwertige Dokumentation (z.B. Kernel Handbuch), sollte es relativ einfach, um herauszufinden, was Sie tun müssen, ist ohne Rückgriff auf das Lesen Ihres Codes.
Disclaimer: ich weiß, das ist nicht, was Sie für Fragen. Aber ich glaube nicht, dass das, was Sie suchen vorhanden ist. Es ist außerordentlich selten zu finden ist open-source-code mit Dokumentation so gut wie das, was ich gesehen habe, das Scannen durch CGAL. Ich würde Ihnen dringend empfehlen, einen anderen Blick auf Sie.
Zunächst einige Allgemeine Bemerkungen über Sie Anforderungen:
Soweit ich Ihre Frage verstehe, es scheint mir, dass Sie nicht deutlich sehen, den Punkt von Bibliotheken wie CGAL und OpenMesh. Solche Bibliotheken können nicht alle die höhere level-Werkzeuge, die Sie brauchen, aber Ihr Ziel ist es, Ihnen (vor allem in der CGAL Fall) alle geometrischen Rahmen, auf dem Sie aufbauen können eine geometrische Anwendung. Solche geometrischen Rahmenbedingungen sind sehr empfindlich design, vor allem wegen der Robustheit Thema, welches sehr spezifisch für "computational geometry". Und ohne einen solchen Rahmen, Aufbau einer robusten Anwendung ist ein horrender Aufwand.
Wenn Sie nicht finden, eine Bibliothek, die Ihre Anzüge brauchen, sollten Sie ernsthaft erwägen Sie die Verwendung einer Bibliothek wie CGAL, wie sich die Rahmenbedingungen für Ihre Entwicklung. Es wird verhindert, dass das Erscheinungsbild der Robustheit in Zusammenhang stehende Probleme, dass Sie in der Regel nur beginnen, bemerkt spät in Ihrer Entwicklung, wenn die änderung der Rahmenbedingungen wird schmerzhaft sein. Als ein beiseite, CGAL hat eine umfangreiche Dokumentation und eine sehr aktive Benutzer-mailing-Liste.
Wenn Sie nicht wissen, über Aspekte hinsichtlich der Robustheit der in der geometrie-software, haben Sie einen Blick auf diese Seite:
Robustheit Fragen
Ich weiß nicht, ob es nützlich sein kann für Sie. Es gibt auch eine andere Bibliothek, die aufgerufen wird, die Mangroven-TDS-Bibliothek frei verfügbar unter http://mangrovetds.sourceforge.net Es unterstützt jede Art von Formen (2d, 3d, jede dimension), mit allen domains (mannigfaltige, nicht-mannigfaltige, pseudo-Mannigfaltigkeiten, iqm-komplexe, simplicial complexes, and so on). Möglicherweise unterstützt nicht-regelmäßige Formen, D. H., gebildet durch Stücke von verschiedenen dimensionalities.
Seine wichtigste Eigenschaft ist, dass es erweiterbar ist, in dem Sinne, dass jede topologische Datenstruktur unterstützt wird. Es ist ein plugin, die geändert werden können und zur Laufzeit geladen.
Ihre Umsetzung basiert auf der array-basierten Indizierung von Personen, codiert, in einer Datenstruktur, die Unterstützung von Iteratoren. Es unterstützt auch dynamische Eigenschaften.
Schließlich unterstützt es eine implizite Repräsentation von Entitäten, die nicht direkt codiert, in einer Datenstruktur (Geist-Entitäten), die Verbesserung der Effizienz der topologische Abfragen