| Operatoren |
simplify_object_model_3d — Vereinfacht ein trianguliertes 3D-Objektmodell.
simplify_object_model_3d( : : ObjectModel3D, Method, Amount, GenParamName, GenParamValue : SimplifiedObjectModel3D)
simplify_object_model_3d vereinfacht das triangulierte 3D-Objektmodell ObjectModel3D, indem sukzessiv Modellpunkte eliminiert werden und gibt das Ergebnis in SimplifiedObjectModel3D zurück. Im Gegensatz zu sample_object_model_3d wird dabei die ursprüngliche Geometrie des 3D-Objektmodells so gut wie möglich bewahrt. Dies bedeutet typischerweise, dass Kanten erhalten bleiben, die Punktdichte in glatten Objektteilen aber gleichzeitig stark reduziert wird. Dies ist z.B. hilfreich, um nachfolgende Operatoren durch die reduzierte Modellkomplexität zu beschleunigen.
Die Vermaschung des Eingabe-3D-Objektmodells bleibt im Gegensatz zum Operator sample_object_model_3d erhalten, der Oberflächen abtastet und dabei äquidistante, unverbundene Punkte erzeugt.
Aktuell wird nur eine Vereinfachungsmethode ('preserve_point_coordintates') unterstützt, die in Method ausgewählt werden kann. Bei dieser Methode haben die Punkte im vereinfachten Objektmodell SimplifiedObjectModel3D die gleichen Koordinaten wie die entsprechenden Punkte im Eingabe-Objektmodell ObjectModel3D.
simplify_object_model_3d setzt voraus, dass die Punkte im Eingabe-Objektmodell trianguliert sind. Dies kann mit get_object_model_3d_params (GenParamName='has_triangles') abgefragt werden. Objektmodelle, die keine Triangulierung enthalten, können mit triangulate_object_model_3d oder prepare_object_model_3d (Purpose='segmentation') zuvor trianguliert werden.
Der Grad der Vereinfachung kann mit Amount festgelegt werden. Standardmäßig wird in Amount der Prozentsatz der Punkte des Eingabe-Objektmodells übergeben, die im Ausgabe-Objektmodell enthalten sein sollen. Je kleiner der Wert für Amount in diesem Fall gewählt wird, desto stärker wird das Objektmodell vereinfacht.
Alternativ kann die Bedeutung des Parameters Amount verändert werden. Dazu kann der generische Parameter 'amount_type' auf die folgenden Werte gesetzt werden:
'percentage_remaining' Amount beschreibt den Prozentsatz der (Default) Punkte des Eingabe-Objektmodells, die im Ausgabe-Objektmodell enthalten sein sollen. Wertebereich: [0.0 ... 100.0] 'percentage_to_remove' Amount beschreibt den Prozentsatz der Punkte des Eingabe-Objektmodells, die eliminiert werden sollen. Wertebereich: [0.0 ... 100.0] 'num_points_remaining' Amount beschreibt die Anzahl der Punkte des Eingabe-Objektmodells, die im Ausgabe-Objektmodell enthalten sein sollen. Wertebereich: [0 ... Anzahl der Punkte im Eingabe-Objektmodell] 'num_points_to_remove' Amount beschreibt die Anzahl der Punkte des Eingabe-Objektmodells, die eliminiert werden sollen. Wertebereich: [0 ... Anzahl der Punkte im Eingabe-Objektmodell]
Manchmal kehren sich Dreiecke der Vermaschung während der Vereinfachung um, d.h. die Richtung ihrer Normalenvektoren ändert sich um 180 Grad. Dies tritt insbesondere bei künstlich generierten CAD-Modellen auf, die ebenen Teilen enthalten. Um die Umkehr der Dreiecke zu verhindern, kann der generische Parameter 'avoid_triangle_flips' auf 'true' gesetzt werden (der Default ist 'false'). In diesem Fall erhöht sich allerdings die Laufzeit von simplify_object_model_3d.
Es ist zu beachten, dass mehrfaches Aufrufen von simplify_object_model_3d mit geringem Vereinfachungsgrad zu anderen Ergebnissen führen kann als ein einmaliger Aufruf mit stärkerem Vereinfachungsgrad. Isolierte (d.h. nicht-triangulierte) Punkte werden bei der Vereinfachung gelöscht. Dies kann dazu führen, dass die Anzahl der Punkte in SimplifiedObjectModel3D leicht vom in Amount gewählten Vereinfachungsgrad abweicht.
Handle des 3D-Objektmodells, das vereinfacht werden soll.
Methode, die zum Vereinfachen verwendet werden soll.
Defaultwert: 'preserve_point_coordinates'
Werteliste: 'preserve_point_coordinates'
Maß der Vereinfachung (Default: Prozentsatz der verbleibenden Modellpunkte).
Namen der generischen Parameter.
Defaultwert: []
Werteliste: 'amount_type', 'avoid_triangle_flips'
Werte der generischen Parameter.
Defaultwert: []
Wertevorschläge: 'percentage_remaining', 'percentage_to_remove', 'num_points_remaining', 'num_points_to_remove', 'true', 'false'
Handle des vereinfachten 3D-Objektmodells.
read_object_model_3d ('mvtec_bunny.om3', 'm', [], [], ObjectModel3D, Status)
visualize_object_model_3d (WindowHandle, ObjectModel3D, [], [], [], [], \
[], [], [], Pose)
simplify_object_model_3d (ObjectModel3D, 'preserve_point_coordinates', \
5.0, 'amount_type', 'percentage_remaining', \
SimplifiedObjectModel3D)
visualize_object_model_3d (WindowHandle, SimplifiedObjectModel3D, [], \
Pose, [], [], [], [], [], Pose)
simplify_object_model_3d liefert den Wert 2 (H_MSG_TRUE) wenn alle Parameter korrekt sind. Andernfalls wird eine Fehlerbehandlung durchgeführt.
prepare_object_model_3d, read_object_model_3d, triangulate_object_model_3d, xyz_to_object_model_3d
disp_object_model_3d, smallest_bounding_box_object_model_3d
sample_object_model_3d, smooth_object_model_3d
Michael Garland, Paul S. Heckbert: Surface Simplification Using Quadric Error Metrics, Proceedings of the 24th Annual Conference on Computer Graphics and Interactive Techniques (SIGGRAPH '97), 209-216, ACM Press, 1997
3D Metrology
| Operatoren |