surface_normals_object_model_3dT_surface_normals_object_model_3dSurfaceNormalsObjectModel3dSurfaceNormalsObjectModel3d (Operator)
Name
surface_normals_object_model_3dT_surface_normals_object_model_3dSurfaceNormalsObjectModel3dSurfaceNormalsObjectModel3d
— Berechnet die 3D-Oberflächennormalen eines 3D-Objektmodells.
Signatur
void SurfaceNormalsObjectModel3d(const HTuple& ObjectModel3D, const HTuple& Method, const HTuple& GenParamName, const HTuple& GenParamValue, HTuple* ObjectModel3DNormals)
static HObjectModel3DArray HObjectModel3D::SurfaceNormalsObjectModel3d(const HObjectModel3DArray& ObjectModel3D, const HString& Method, const HTuple& GenParamName, const HTuple& GenParamValue)
HObjectModel3D HObjectModel3D::SurfaceNormalsObjectModel3d(const HString& Method, const HTuple& GenParamName, const HTuple& GenParamValue) const
HObjectModel3D HObjectModel3D::SurfaceNormalsObjectModel3d(const char* Method, const HTuple& GenParamName, const HTuple& GenParamValue) const
HObjectModel3D HObjectModel3D::SurfaceNormalsObjectModel3d(const wchar_t* Method, const HTuple& GenParamName, const HTuple& GenParamValue) const
(Nur Windows)
Beschreibung
Der Operator surface_normals_object_model_3dsurface_normals_object_model_3dSurfaceNormalsObjectModel3dSurfaceNormalsObjectModel3dSurfaceNormalsObjectModel3d
berechnet die
3D-Oberflächennormalen eines Objekts ObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D
. Die Berechnung
wird mit dem in MethodMethodMethodMethodmethod
gewählten Verfahren durchgeführt.
Für MethodMethodMethodMethodmethod
='mls'"mls""mls""mls""mls" wird das Verfahren Moving Least Squares
(MLS) angewandt.
Das MLS-Verfahren für Normalenberechnung ist identisch zu dem
MLS-Verfahren für Punktglättung, das im Operator
smooth_object_model_3dsmooth_object_model_3dSmoothObjectModel3dSmoothObjectModel3dSmoothObjectModel3d
implementiert ist. Anders als
smooth_object_model_3dsmooth_object_model_3dSmoothObjectModel3dSmoothObjectModel3dSmoothObjectModel3d
glättet der Operator
surface_normals_object_model_3dsurface_normals_object_model_3dSurfaceNormalsObjectModel3dSurfaceNormalsObjectModel3dSurfaceNormalsObjectModel3d
die Punkte allerdings nicht, d.h.
die ursprünglichen 3D-Punkte von ObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D
bleiben unverändert.
Weitere Information über das MLS-Verfahren und seine Parameter stehen
mit der Beschreibung des Operators smooth_object_model_3dsmooth_object_model_3dSmoothObjectModel3dSmoothObjectModel3dSmoothObjectModel3d
zur
Verfügung.
Beinhaltet das Objekt ObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D
Dreiecke, können
mit dem Verfahren MethodMethodMethodMethodmethod
='triangles'"triangles""triangles""triangles""triangles" die Punktnormalen
aus den Flächennormalen der angrenzenden Dreiecke berechnet werden.
Die Flächennormalen werden dabei mit dem Winkel gewichtet, den die
Dreiecke an dem Punkt umschließen.
Beinhaltet das Objekt ObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D
ein 2D-Mapping (wie z.B.
3D-Objektmodelle, die mittels xyz_to_object_model_3dxyz_to_object_model_3dXyzToObjectModel3dXyzToObjectModel3dXyzToObjectModel3d
erstellt
wurden), können mit dem Verfahren MethodMethodMethodMethodmethod
='xyz_mapping'"xyz_mapping""xyz_mapping""xyz_mapping""xyz_mapping"
die Punktnormalen aus der Umgebung der Punkte im 2D-Mapping
berechnet werden. Dazu wird in einer 5x5-Nachbarschaft der Punkte im
2D-Mapping eine Ebene durch die zugehörigen 3D-Punkte gefittet. Die
Richtung der Normale dieser Ebene wird anschließend konsistent zum 2D-Mapping
gewählt, z.B. in oder entgegen der Blickrichtung des Sensors.
Kann der Normalenvektor eines Punktes nicht bestimmt werden, so wird dieser
auf 0 gesetzt. Dies ist beispielsweise der Fall, wenn das 3D-Objektmodell
den gleichen Punkt mehr als 'mls_kNN'"mls_kNN""mls_kNN""mls_kNN""mls_kNN" mal enthält.
Ausführungsinformationen
- Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
- Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
- Automatisch parallelisiert auf interner Datenebene.
Dieser Operator unterstützt Cancel-Timeouts und Interrupts.
Parameter
ObjectModel3DObjectModel3DObjectModel3DObjectModel3DobjectModel3D
(input_control) object_model_3d(-array) →
HObjectModel3D, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)
Handle eines 3D-Objektmodells mit 3D-Punktdaten.
MethodMethodMethodMethodmethod
(input_control) string →
HTupleHTupleHtuple (string) (string) (HString) (char*)
Methode für Normalenberechnung.
Defaultwert:
'mls'
"mls"
"mls"
"mls"
"mls"
Werteliste: 'mls'"mls""mls""mls""mls", 'triangles'"triangles""triangles""triangles""triangles", 'xyz_mapping'"xyz_mapping""xyz_mapping""xyz_mapping""xyz_mapping"
GenParamNameGenParamNameGenParamNameGenParamNamegenParamName
(input_control) attribute.name-array →
HTupleHTupleHtuple (string) (string) (HString) (char*)
Namen der generischen Parameter.
Defaultwert: []
Werteliste: '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_kNN'"mls_kNN""mls_kNN""mls_kNN""mls_kNN", '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"
GenParamValueGenParamValueGenParamValueGenParamValuegenParamValue
(input_control) attribute.value-array →
HTupleHTupleHtuple (real / integer / string) (double / int / long / string) (double / Hlong / HString) (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, 'true'"true""true""true""true", 'false'"false""false""false""false"
ObjectModel3DNormalsObjectModel3DNormalsObjectModel3DNormalsObjectModel3DNormalsobjectModel3DNormals
(output_control) object_model_3d(-array) →
HObjectModel3D, HTupleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)
Handle des 3D-Objektmodells mit berechneten
3D-Normalen.
Vorgänger
sample_object_model_3dsample_object_model_3dSampleObjectModel3dSampleObjectModel3dSampleObjectModel3d
Nachfolger
create_surface_modelcreate_surface_modelCreateSurfaceModelCreateSurfaceModelCreateSurfaceModel
,
fuse_object_model_3dfuse_object_model_3dFuseObjectModel3dFuseObjectModel3dFuseObjectModel3d
Alternativen
smooth_object_model_3dsmooth_object_model_3dSmoothObjectModel3dSmoothObjectModel3dSmoothObjectModel3d
Modul
3D Metrology