surface_normals_object_model_3dT_surface_normals_object_model_3dSurfaceNormalsObjectModel3dSurfaceNormalsObjectModel3dsurface_normals_object_model_3d (Operator)
Name
surface_normals_object_model_3dT_surface_normals_object_model_3dSurfaceNormalsObjectModel3dSurfaceNormalsObjectModel3dsurface_normals_object_model_3d — 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)
def surface_normals_object_model_3d(object_model_3d: MaybeSequence[HHandle], method: str, gen_param_name: Sequence[str], gen_param_value: Sequence[Union[float, int, str]]) -> Sequence[HHandle]
def surface_normals_object_model_3d_s(object_model_3d: MaybeSequence[HHandle], method: str, gen_param_name: Sequence[str], gen_param_value: Sequence[Union[float, int, str]]) -> HHandle
Beschreibung
Der Operator surface_normals_object_model_3dsurface_normals_object_model_3dSurfaceNormalsObjectModel3dSurfaceNormalsObjectModel3dsurface_normals_object_model_3d berechnet die
3D-Oberflächennormalen eines Objekts ObjectModel3DObjectModel3DObjectModel3DobjectModel3Dobject_model_3d. 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_3dSmoothObjectModel3dSmoothObjectModel3dsmooth_object_model_3d implementiert ist. Anders als
smooth_object_model_3dsmooth_object_model_3dSmoothObjectModel3dSmoothObjectModel3dsmooth_object_model_3d glättet der Operator
surface_normals_object_model_3dsurface_normals_object_model_3dSurfaceNormalsObjectModel3dSurfaceNormalsObjectModel3dsurface_normals_object_model_3d die Punkte allerdings nicht, d.h.
die ursprünglichen 3D-Punkte von ObjectModel3DObjectModel3DObjectModel3DobjectModel3Dobject_model_3d bleiben unverändert.
Weitere Information über das MLS-Verfahren und seine Parameter stehen
mit der Beschreibung des Operators smooth_object_model_3dsmooth_object_model_3dSmoothObjectModel3dSmoothObjectModel3dsmooth_object_model_3d zur
Verfügung.
Beinhaltet das Objekt ObjectModel3DObjectModel3DObjectModel3DobjectModel3Dobject_model_3d 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.
Die Normalen der Dreiecke werden in den erweiterten Attributen
'&triangle_normal_x', '&triangle_normal_y' und '&triangle_normal_z'
zurückgeben.
Falls die erweiterten Attribute bereits existieren, werden sie nicht
überschrieben.
Beinhaltet das Objekt ObjectModel3DObjectModel3DObjectModel3DobjectModel3Dobject_model_3d ein 2D-Mapping (wie z.B.
3D-Objektmodelle, die mittels xyz_to_object_model_3dxyz_to_object_model_3dXyzToObjectModel3dXyzToObjectModel3dxyz_to_object_model_3d 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 11x11-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
ObjectModel3DObjectModel3DObjectModel3DobjectModel3Dobject_model_3d (input_control) object_model_3d(-array) → HObjectModel3D, HTupleMaybeSequence[HHandle]HTupleHtuple (handle) (IntPtr) (HHandle) (handle)
Handle eines 3D-Objektmodells mit 3D-Punktdaten.
MethodMethodMethodmethodmethod (input_control) string → HTuplestrHTupleHtuple (string) (string) (HString) (char*)
Methode für Normalenberechnung.
Default:
'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"
GenParamNameGenParamNameGenParamNamegenParamNamegen_param_name (input_control) attribute.name-array → HTupleSequence[str]HTupleHtuple (string) (string) (HString) (char*)
Namen der generischen Parameter.
Default:
[]
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"
GenParamValueGenParamValueGenParamValuegenParamValuegen_param_value (input_control) attribute.value-array → HTupleSequence[Union[float, int, str]]HTupleHtuple (real / integer / string) (double / int / long / string) (double / Hlong / HString) (double / Hlong / char*)
Werte der generischen Parameter.
Default:
[]
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"
ObjectModel3DNormalsObjectModel3DNormalsObjectModel3DNormalsobjectModel3DNormalsobject_model_3dnormals (output_control) object_model_3d(-array) → HObjectModel3D, HTupleSequence[HHandle]HTupleHtuple (handle) (IntPtr) (HHandle) (handle)
Handle des 3D-Objektmodells mit berechneten
3D-Normalen.
Vorgänger
sample_object_model_3dsample_object_model_3dSampleObjectModel3dSampleObjectModel3dsample_object_model_3d
Nachfolger
create_surface_modelcreate_surface_modelCreateSurfaceModelCreateSurfaceModelcreate_surface_model,
fuse_object_model_3dfuse_object_model_3dFuseObjectModel3dFuseObjectModel3dfuse_object_model_3d
Alternativen
smooth_object_model_3dsmooth_object_model_3dSmoothObjectModel3dSmoothObjectModel3dsmooth_object_model_3d
Modul
3D Metrology