3D Meshes
CADMeshConverter – Open Source Software, Input/Output Formate, Bewertung (01/2019)
Anforderungsanalyse (23.01.2019)
Förderjahr 2018 / Project Call #13 / ProjektID: 3511 / Projekt: CADMeshConverter

Wie bereits im letzten Blogeintrag erläutert ist die Aufbereitung von CAD Modellen für den Einsatz im Mixed Reality Bereich keine triviale Aufgabe. Um diese Aufgabe lösen zu können, bedarf es dementsprechend auch geeigneter Werkzeuge.

Im Open Source Bereich gibt es zwar einige Tools die für die Bearbeitung von 3D Daten ausgelegt sind, allerdings unterscheiden sich diese teilweise doch recht deutlich in Ihrem Funktionsumfang und auch in ihrer Eignung für unseren Einsatzzweck. Es folgt ein Überblick über die Software, welche wir ursprünglich für das Projekt „CADMeshConverter“ in Betracht gezogen haben.

Open Source Software

Unsere Recherche hat ergeben, dass sich die verfügbare Open Source Software grob in zwei verschiedene Kategorien unterteilen lässt. Da wären einerseits vollständige Softwarepakete, im Folgenden als Suites bezeichnet, und andererseits vergleichsweise „einfache“ Programmbibliotheken welche oft nur für einen einzigen Einsatzzweck programmiert wurden.

Suites

Alle hier aufgezählten Softwarepakete haben einen sehr umfangreichen Funktionsumfang gemeinsam. Des Weiteren sind sie alle „out of the box“ verwendbar bzw. für sich alleine lauffähig.

Meshlab

Ist ein komplettes Softwarepaket zur Be- und Verarbeitung von Meshes sowie für deren Erzeugung aus Punktwolken. Der Hauptbestandteil von Meshlab ist ein graphisches Anzeigetool für 3D Meshes/Punktwolken. Von Meshlab geladene Daten können nicht nur von allen Seiten inspiziert, sondern es können auch verschiedenste Operationen, so genannte Filter, darauf angewendet werden. Der Umfang dieser Filter bietet ein breites Spektrum an, etwa Reduzierung der Vertexanzahl von Meshes oder das Neuausrichten von Normalen (ein gängiges Problem in der CAD Welt). Alle durchgeführten Operationen werden in einer Liste aufgezeichnet. Diese Liste kann in ein Skript exportiert werden welches von einem Commandline Tool, dem so genannten Meshlab Server, verarbeitet werden kann. Dadurch ist es möglich Skripte für verschiedene Bearbeitungsschritte anzulegen und diese automatisch durchführen zu lassen.

Darüber hinaus verwendet Meshlab ein Plugin System welches die Erweiterung des, schon sehr ausgedehnten, Funktionsumfangs erleichtert.

OpenFlipper

Dieses Framework legt den Schwerpunkt auf das Rendern und die Bearbeitung von geometrischen Daten im Allgemeinen. Während bei Meshlab der Schwerpunkt auf Mesh-basierenden Daten liegt, versucht OpenFlipper eine Vielzahl von unterschiedlichen Datentypen zu unterstützen, So können unter anderem auch NURBS Daten und skelettbasierende Modelle verarbeitet werden.

Wie auch Meshlab verfügt OpenFlipper über ein Plugin System, der modulare Gedanke wird jedoch weiter ausgeführt. Die zugrundeliegende API kann nicht nur für die Erweiterung des Funktionsumfangs verwendet werden, sondern es kann sogar die graphische Benutzeroberfläche angepasst werden.

Ausgangsbasis für das Framework war ein Projekt der RWTH Aachen.

Blender

Blender ist eine komplette 3D Grafiksuite mit dem Schwerpunkt auf der Erzeugung von 3D Inhalten. Der Einsatzbereich dieser Software liegt aber meist in der Spieleentwicklung unter anderem auch weil Animationen für die erzeugten Modelle direkt in dem Programm erstellt werden können. Mit Blender können auch CAD Modelle für die Verwendung im MR Bereich konvertiert werden. Hauptsächlich wird Blender mit der GUI verwendet, es ist allerdings auch bei Blender möglich Skripte über die Commandline auszuführen.

Libraries

Fast Quadric Mesh Simplification

Hierbei handelt es sich um eine in C++ geschriebene Programmbibliothek welche die Reduzierung von Meshes mittels der „Quadric based edge collapse“ Methode ermöglicht. Das Hauptaugenmerk des Entwicklers liegt dabei auf der Verarbeitungsgeschwindigkeit, worunter jedoch die Qualität des Resultats leiden kann.

JMeshLib

Dieses in C++ geschriebene Framework für die Bearbeitung von Meshes ist auf die Verwendung als Programmbibliothek ausgelegt, d.h. es gibt keine GUI. Es dient hauptsächlich zur Bearbeitung von 3D Scan Daten.

PyMesh

Hierbei handelt es sich um ein Rapid Prototyping Framework bei dem der Schwerpunkt auf der Meshbearbeitung liegt. Bereitgestellt wird es als Programmbibliothek für Python. Es existiert keine Funktion für die Reduzierung von Meshgrößen, allerdings kann diese mit bereits bestehenden Funktionen implementiert werden.

 

Dateiformate

Symbolbild Dateiformate

Für die Reduzierung von Modellen ist es notwendig diese sowohl einlesen als auch ausgeben zu können. Es gibt eine Vielzahl von verschiedenen Dateiformaten im Bereich der Computergrafik & Modellierung sowie in der 3D Konstruktion. Im Rahmen dieses Projekts fokussieren wir uns auf einige wenige, dafür weit verbreitete Formate.

Input

Als Ausgangsbasis für die Aufbereitung dienen Dateiformate welche von CAD Programmen verwendet werden. Das Hauptaugenmerk legen wird dabei auf STP/STEP und STL.

STP/STEP – Standard for the exchange of product model data

In der Industrie wird eine Vielzahl von verschiedenen Systemen für die Konstruktion und Fertigung verwendet. Da diese Vielfalt auch zu einer Heterogenität im Bereich der Dateiformate geführt hat, wurde mit dem STP/STEP Format im Zuge der ISO Norm 10303 ein einheitliches Format geschaffen. Dieses wird heute von den meisten CAD und CAM (Computer Aided Manufacturing) Systemen unterstützt.

STP/STEP ist in verschiedene Anwendungsgebiete unterteilt (z.B. Automobilkonstruktion, Möbelkonstruktion, etc…) welche jedoch dieselben Definitionen für bestimmte Größen (Koordinatensystem, Abmessungen, usw.) verwenden, wodurch die Austauschbarkeit gegeben ist.

STL – StereoLithography

Hierbei handelt es sich um ein vergleichsweise altes Dateiformat. Es wurde 1987 als Dateiformat für den ersten kommerziell verfügbaren 3D Drucker entwickelt. Das STL Format unterscheidet sich von den meisten anderen, im CAD Bereich verwendeten, Formaten in erster Linie dadurch, dass darin nur die geometrische Oberfläche (d.h. keine Farben, Texturen) eines Modells beschrieben wird.  Es ist jedoch auf Grund seines einfachen Aufbaus weit verbreitet.

Output

Die aufbereiteten Modelle müssen natürlich auch in Dateiformate zurückgeschrieben werden, welche für MR Anwendungen geeignet sind. Wir streben die Konvertierung in die Formate „Wavefront obj“, „Filmbox“ und “GL Transmission Format“ an.

Wavefront OBJ

Dieses Dateiformat wurde von Wavefront Technologies in den 1980/90er Jahren für die Verwendung im „The Advanced Visualizer“ entwickelt. Dabei handelte es sich um eine Softwaresammlung für die Erzeugung von Special Effects in Kinofilmen. Eine OBJ Datei dient der Beschreibung eines 3D Modells. Es werden jedoch nicht nur rein geometrische Informationen über das Modell darin beschrieben, sondern es ist auch möglich einfache Farbinformationen hinzuzufügen. Sollte dies nicht ausreichen, können auch externe Texturen sowie Materialdaten in einer OBJ Datei referenziert werden.

Da es sich bei OBJ um ein offenes Dateiformat handelt, ist es sehr weit verbreitet.

Filmbox – fbx

Wie auch OBJ kommt dieses Format aus dem Videobereich. Ursprünglich wurde es von der kanadischen Firma Kaydara für die Aufnahme von Motion Capture Daten entwickelt. Die erste Version unterstützte nur Bewegungsdaten, die Möglichkeit auch Modelle darin zu sichern kam erst später dazu. Mittlerweile gehört dieses Format der Firma Autodesk und ist Teil von Autodesk Gameware. 

Das Format an sich ist proprietär, es gibt allerdings SDKs mit deren Hilfe das Lesen und Schreiben des Formats möglich ist.

GL Transmission Format – glTF

Dieses Format ist ein Open Source Dateiformat welches auf dem JSON Standard basiert. Es wurde entwickelt um die effiziente Übertragung und Verwendung von 3D Szenen und Modellen zu ermöglichen. Das Ziel dieses Formats ist es nicht nur die Dateigröße, sondern auch die für die Verarbeitung notwendige Laufzeit zu minimieren.

Die Entwickler von glTF, die „Khronos Group“ bezeichnet glTF als nicht weniger als das „JPEG des 3D Bereichs“.

Während die 2015 veröffentlichte Version 1.0 des Dateiformats noch umstritten und vom Funktionsumfang her eingeschränkt war, ist die 2016 erstmals veröffentlichte Version 2.0 mittlerweile recht weit verbreitet.

Bewertung

symbolbild bewertung

Die einfache Auflistung von Software sowie von Dateiformaten reicht natürlich nicht für eine Bewertung im Sinne des Projekts aus.

Bei den Dateiformaten haben wir uns zum Ziel gesetzt, dass wir auf der Import Seite sowohl STL als auch STP unterstützen. Diese beiden Formate haben wir ausgewählt, da diese, im Fall von STP tatsächlich und im Fall von STL aufgrund der Verbreitung, Industriestandards entsprechen.

Dateiformate

Beim Export der aufbereiteten Modelle haben wir uns dazu entschlossen, sowohl das Format Wavefront obj als auch, sofern zeitlich möglich, das GL Transmission Format zu unterstützen. Der Grund für das Wavefront Format liegt schlicht und einfach in dessen Verbreitung. Das glTF Format würden wir gerne unterstützen da derzeit alle Dinge darauf hinweisen das sich dieses Format zu dem Standard im Web XR Bereich entwickeln wird.

Software

Die Frage auf welche Softwarelösung wir beim CADMeshConverter setzen werden, war nicht ganz so leicht zu beantworten.

Wir haben sämtliche Software die in diesem Blogeintrag vorgestellt wurde anhand folgender Kriterien evaluiert:

Unterstützte Dateiformate

  • STL
  • STP
  • glTF
  • OBJ

Bereits vorhandene Funktionen für die Meshbearbeitung

  • Vereinfachung
  • Remeshing
  • Oberflächenrekonstruktion
  • (Neu-)berechnung von Normalen
  • Reparaturfunktionen

Texturoperationen        

  • Support für UV Mapping
  • Vertex Farben in Textur exportieren

Verwendete Lizenz

  • GPL
  • BSD
  • MIT

Verwendete Programmiersprache

  • C++
  • C
  • Python

Bei diesem Punkt ist anzumerken, dass Software bei der für dieselben Programmbestandteile (GUI, CLI, Plugins, …) mehrere Programmiersprachen verwendet werden, leicht abgewertet wurde.

Ergebnis

Auf Grund der Evaluierungsergebnisse haben wir uns dazu entschlossen, für die Implementierung des CADMeshConverters Meshlab zu verwenden. Die Plätze zwei und drei wurden von Blender und OpenFlipper belegt.

 

Next Steps

technisches Konzept, Softwaremodule 

 

 

CAPTCHA
Diese Frage dient der Überprüfung, ob Sie ein menschlicher Besucher sind und um automatisierten SPAM zu verhindern.

    Weitere Blogbeiträge