KlassenKlassenKlassenKlassen | | | | Operatoren

smooth_object_model_3dsmooth_object_model_3dSmoothObjectModel3dsmooth_object_model_3dSmoothObjectModel3dSmoothObjectModel3d (Operator)

Name

smooth_object_model_3dsmooth_object_model_3dSmoothObjectModel3dsmooth_object_model_3dSmoothObjectModel3dSmoothObjectModel3d — Glätten von 3D-Punkten eines 3D-Objektmodells.

Signatur

smooth_object_model_3d( : : ObjectModel3D, Method, GenParamName, GenParamValue : SmoothObjectModel3D)

Herror smooth_object_model_3d(const Hlong ObjectModel3D, const char* Method, const char* GenParamName, double GenParamValue, Hlong* SmoothObjectModel3D)

Herror T_smooth_object_model_3d(const Htuple ObjectModel3D, const Htuple Method, const Htuple GenParamName, const Htuple GenParamValue, Htuple* SmoothObjectModel3D)

Herror smooth_object_model_3d(const HTuple& ObjectModel3D, const HTuple& Method, const HTuple& GenParamName, const HTuple& GenParamValue, Hlong* SmoothObjectModel3D)

Herror smooth_object_model_3d(const HTuple& ObjectModel3D, const HTuple& Method, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* SmoothObjectModel3D)

HTuple HObjectModel3D::SmoothObjectModel3d(const HTuple& Method, const HTuple& GenParamName, const HTuple& GenParamValue) const

void SmoothObjectModel3d(const HTuple& ObjectModel3D, const HTuple& Method, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* SmoothObjectModel3D)

static HObjectModel3DArray HObjectModel3D::SmoothObjectModel3d(const HObjectModel3DArray& ObjectModel3D, const HString& Method, const HTuple& GenParamName, const HTuple& GenParamValue)

HObjectModel3D HObjectModel3D::SmoothObjectModel3d(const HString& Method, const HString& GenParamName, double GenParamValue) const

HObjectModel3D HObjectModel3D::SmoothObjectModel3d(const char* Method, const char* GenParamName, double GenParamValue) const

void HOperatorSetX.SmoothObjectModel3d(
[in] VARIANT ObjectModel3D, [in] VARIANT Method, [in] VARIANT GenParamName, [in] VARIANT GenParamValue, [out] VARIANT* SmoothObjectModel3D)

IHObjectModel3DX* HObjectModel3DX.SmoothObjectModel3d(
[in] BSTR Method, [in] VARIANT GenParamName, [in] VARIANT GenParamValue)

static void HOperatorSet.SmoothObjectModel3d(HTuple objectModel3D, HTuple method, HTuple genParamName, HTuple genParamValue, out HTuple smoothObjectModel3D)

static HObjectModel3D[] HObjectModel3D.SmoothObjectModel3d(HObjectModel3D[] objectModel3D, string method, HTuple genParamName, HTuple genParamValue)

HObjectModel3D HObjectModel3D.SmoothObjectModel3d(string method, string genParamName, double genParamValue)

Beschreibung

Der Operator smooth_object_model_3dsmooth_object_model_3dSmoothObjectModel3dsmooth_object_model_3dSmoothObjectModel3dSmoothObjectModel3d glättet die 3D-Punkte des in ObjectModel3DObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D eingegebenen 3D-Objektmodells. Die Glättung wird mit dem in MethodMethodMethodMethodMethodmethod eingegeben Verfahren durchgeführt. Zurzeit wird nur das Verfahren Moving Least Squares (MLS, MethodMethodMethodMethodMethodmethod='mls'"mls""mls""mls""mls""mls") unterstützt.

Für jeden Punkt P berechnet der MLS-Algorithmus eine Ebene oder eine Oberfläche höherer Ordnung, welche optimal an die k-Nachbarschaft des Punktes (d.h. die nächsten k Nachbarn) angepasst wird. Das Oberflächenfitting ist im Wesentlichen als gewichtete Methode der kleinsten Quadraten für die Schätzung der Ebene- bzw. Oberflächenparameter implementiert. Die nächsten Nachbarn von P haben einen größeren Einfluss auf die Parameterschätzung als die ferneren Punkte. Dieser Einfluss wird durch die folgende Gewichtungsfunktion und der Parameter gesteuert:

Der Punkt wird dann auf die Oberfläche projiziert. Dieses Verfahren wird für jeden einzelnen Punkt wiederholt, was in einem geglätteten Punktsatz resultiert. Die Punkte auf der gefitteten Oberflächen haben leicht zu berechnende Normalen (d.h. die Normalen können direkt aus den jeweiligen Oberflächenparametern berechnet werden). Folglich werden die Punkte nicht nur geglättet, sondern als Nebeneffekt des Glättens bekommen sie eine Schätzung für ihre Normalen.

Mit GenParamNameGenParamNameGenParamNameGenParamNameGenParamNamegenParamName und GenParamValueGenParamValueGenParamValueGenParamValueGenParamValuegenParamValue können die folgenden zusätzlichen Parameternamen und -werte des MLS-Algorithmus eingestellt werden:

'mls_kNN'"mls_kNN""mls_kNN""mls_kNN""mls_kNN""mls_kNN":

Setzt die Anzahl der nächsten k Nachbarn, welche beim Fitten einer Ebene, bzw. Oberfläche zu jedem Punkt betrachtet werden.

Wertevorschläge: 40, 60 (Standardwert), 80, 100, 400

'mls_order'"mls_order""mls_order""mls_order""mls_order""mls_order":

Setzt die Ordnung der der MLS-Oberfläche. Für 'mls_order'"mls_order""mls_order""mls_order""mls_order""mls_order"=1 ist die Oberfläche eine einfache Ebene.

Wertevorschläge: 1, 2 (Standardwert), 3

'mls_abs_sigma'"mls_abs_sigma""mls_abs_sigma""mls_abs_sigma""mls_abs_sigma""mls_abs_sigma":

Setzt der Gewichtungsparameter als Festwert in Meter. Der auszuwählende Wert hängt stark vom Maßstab der eingegebenen Punktdaten ab. Als Daumenregel sollte man einen Wert für nehmen, der den typischen Abstand jedes Punktes P zu seinem k/2. (mittleren) Nachbarn entspricht. Es ist zu beachten, dass, wenn die Daten eine variierende Dichte haben, das Setzen eines Festwerts für zu ungleiche Glättungsergebnissen für die Bereiche mit unterschiedlicher Punktdichte führt. Dieses Problem kann umgegangen werden indem man statt 'mls_abs_sigma'"mls_abs_sigma""mls_abs_sigma""mls_abs_sigma""mls_abs_sigma""mls_abs_sigma" den Parameter 'mls_relative_sigma'"mls_relative_sigma""mls_relative_sigma""mls_relative_sigma""mls_relative_sigma""mls_relative_sigma" benutzt. Der letztere ist unabhängig vom Maßstab und deswegen auch einfacher zu bedienen. Es sollte allerdings auch beachtet werden, dass der Parameter 'mls_relative_sigma'"mls_relative_sigma""mls_relative_sigma""mls_relative_sigma""mls_relative_sigma""mls_relative_sigma" ignoriert wird, wenn der Parameter 'mls_abs_sigma'"mls_abs_sigma""mls_abs_sigma""mls_abs_sigma""mls_abs_sigma""mls_abs_sigma" gesetzt ist.

Wertevorschläge: 0.0001, 0.001, 0.01, 0.1, 1.0

'mls_relative_sigma'"mls_relative_sigma""mls_relative_sigma""mls_relative_sigma""mls_relative_sigma""mls_relative_sigma":

Setzt einen Multiplikationsfaktor der verwendet wird, um für jeden Punkt P nach der Forlmel zu berechnen:

wobei der k/2. Nachbar von P ist. Anders als der global für alle Punkte wirkende Parameter wird allein für den jeweiligen Punkt P berechnet. Dadurch werden Probleme vermieden, welche durch das Verwenden eines festen Wertes für Daten mit variierender Punktdichte entstehen. Es sollte allerdings auch beachtet werden, dass der Parameter 'mls_relative_sigma'"mls_relative_sigma""mls_relative_sigma""mls_relative_sigma""mls_relative_sigma""mls_relative_sigma" ignoriert wird, wenn der Parameter 'mls_abs_sigma'"mls_abs_sigma""mls_abs_sigma""mls_abs_sigma""mls_abs_sigma""mls_abs_sigma" gesetzt ist.

Wertevorschläge: 0.1, 0.5, 1.0 (Standardwert), 1.5, 2.0

'mls_force_inwards'"mls_force_inwards""mls_force_inwards""mls_force_inwards""mls_force_inwards""mls_force_inwards":

Ist dieser Parameter auf den Wert 'true'"true""true""true""true""true" gesetzt, so werden alle Normalen so orientiert, dass sie „zum Koordinatenursprung zeigen“. Mathematisch ausgedrückt bedeutet das, dass das Skalarprodukt zwischem dem Normalenvektor und dem Vektor, der vom entsprechenden Oberflächenpunkt zum Koordinatenursprung zeigt, positiv ist. Dies kann notwendig sein, wenn das resultierende SmoothObjectModel3DSmoothObjectModel3DSmoothObjectModel3DSmoothObjectModel3DSmoothObjectModel3DsmoothObjectModel3D für das oberflächenbasierte Matching verwendet werden soll --- entweder als Modell im Operator create_surface_modelcreate_surface_modelCreateSurfaceModelcreate_surface_modelCreateSurfaceModelCreateSurfaceModel oder als 3D-Szene im Operator find_surface_modelfind_surface_modelFindSurfaceModelfind_surface_modelFindSurfaceModelFindSurfaceModel --- da hier die konsistente Orientierung der Normalen wichtig ist. Wird der Parameter 'mls_force_inwards'"mls_force_inwards""mls_force_inwards""mls_force_inwards""mls_force_inwards""mls_force_inwards" auf den Wert 'false'"false""false""false""false""false" gesetzt, so ist die Orientierung der Normalen beliebig.

Werteliste: 'true'"true""true""true""true""true", 'false'"false""false""false""false""false" (Standardwert)

Es ist zu beachten, dass wenn ein 3D-Objektmodell nicht mehr benötigt wird oder überschrieben werden soll, zuerst der Operator clear_object_model_3dclear_object_model_3dClearObjectModel3dclear_object_model_3dClearObjectModel3dClearObjectModel3d aufgerufen werden muss, um den entsprechenden Speicher freizugeben.

Parallelisierung

Parameter

ObjectModel3DObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D (input_control)  object_model_3d(-array) HObjectModel3D, HTupleHTupleHObjectModel3D, HTupleHObjectModel3DX, VARIANTHtuple (integer) (IntPtr) (Hlong) (Hlong) (Hlong) (Hlong)

Handle eines 3D-Objektmodells mit 3D-Punktdaten.

MethodMethodMethodMethodMethodmethod (input_control)  string HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

Glättungsmethode.

Defaultwert: 'mls' "mls" "mls" "mls" "mls" "mls"

Werteliste: 'mls'"mls""mls""mls""mls""mls"

GenParamNameGenParamNameGenParamNameGenParamNameGenParamNamegenParamName (input_control)  attribute.name(-array) HTupleHTupleHTupleVARIANTHtuple (string) (string) (HString) (char*) (BSTR) (char*)

Namen der generischen Parameter.

Defaultwert: []

Werteliste: 'mls_abs_sigma'"mls_abs_sigma""mls_abs_sigma""mls_abs_sigma""mls_abs_sigma""mls_abs_sigma", 'mls_force_inwards'"mls_force_inwards""mls_force_inwards""mls_force_inwards""mls_force_inwards""mls_force_inwards", 'mls_kNN'"mls_kNN""mls_kNN""mls_kNN""mls_kNN""mls_kNN", 'mls_order'"mls_order""mls_order""mls_order""mls_order""mls_order", 'mls_relative_sigma'"mls_relative_sigma""mls_relative_sigma""mls_relative_sigma""mls_relative_sigma""mls_relative_sigma"

GenParamValueGenParamValueGenParamValueGenParamValueGenParamValuegenParamValue (input_control)  attribute.value(-array) HTupleHTupleHTupleVARIANTHtuple (real / integer / string) (double / int / long / string) (double / Hlong / HString) (double / Hlong / char*) (double / Hlong / BSTR) (double / Hlong / char*)

Werte der generischen Parameter.

Defaultwert: []

Wertevorschläge: 10, 20, 40, 60, 0.1, 0.5, 1.0, 2.0, 0, 1, 2

SmoothObjectModel3DSmoothObjectModel3DSmoothObjectModel3DSmoothObjectModel3DSmoothObjectModel3DsmoothObjectModel3D (output_control)  object_model_3d(-array) HObjectModel3D, HTupleHTupleHObjectModel3D, HTupleHObjectModel3DX, VARIANTHtuple (integer) (IntPtr) (Hlong) (Hlong) (Hlong) (Hlong)

Handle des geglätteten 3D-Objektmodells.

Alternativen

surface_normals_object_model_3dsurface_normals_object_model_3dSurfaceNormalsObjectModel3dsurface_normals_object_model_3dSurfaceNormalsObjectModel3dSurfaceNormalsObjectModel3d, sample_object_model_3dsample_object_model_3dSampleObjectModel3dsample_object_model_3dSampleObjectModel3dSampleObjectModel3d, simplify_object_model_3dsimplify_object_model_3dSimplifyObjectModel3dsimplify_object_model_3dSimplifyObjectModel3dSimplifyObjectModel3d

Modul

3D Metrology


KlassenKlassenKlassenKlassen | | | | Operatoren