distance_object_model_3dT_distance_object_model_3dDistanceObjectModel3dDistanceObjectModel3ddistance_object_model_3d (Operator)

Name

distance_object_model_3dT_distance_object_model_3dDistanceObjectModel3dDistanceObjectModel3ddistance_object_model_3d — Bestimmt die Abstände der Punkte eines 3D-Objektmodells zu einem anderen 3D-Objektmodell.

Signatur

distance_object_model_3d( : : ObjectModel3DFrom, ObjectModel3DTo, Pose, MaxDistance, GenParamName, GenParamValue : )

Herror T_distance_object_model_3d(const Htuple ObjectModel3DFrom, const Htuple ObjectModel3DTo, const Htuple Pose, const Htuple MaxDistance, const Htuple GenParamName, const Htuple GenParamValue)

void DistanceObjectModel3d(const HTuple& ObjectModel3DFrom, const HTuple& ObjectModel3DTo, const HTuple& Pose, const HTuple& MaxDistance, const HTuple& GenParamName, const HTuple& GenParamValue)

void HObjectModel3D::DistanceObjectModel3d(const HObjectModel3D& ObjectModel3DTo, const HPose& Pose, const HTuple& MaxDistance, const HTuple& GenParamName, const HTuple& GenParamValue) const

void HObjectModel3D::DistanceObjectModel3d(const HObjectModel3D& ObjectModel3DTo, const HPose& Pose, double MaxDistance, const HString& GenParamName, const HString& GenParamValue) const

void HObjectModel3D::DistanceObjectModel3d(const HObjectModel3D& ObjectModel3DTo, const HPose& Pose, double MaxDistance, const char* GenParamName, const char* GenParamValue) const

void HObjectModel3D::DistanceObjectModel3d(const HObjectModel3D& ObjectModel3DTo, const HPose& Pose, double MaxDistance, const wchar_t* GenParamName, const wchar_t* GenParamValue) const   (Nur Windows)

static void HOperatorSet.DistanceObjectModel3d(HTuple objectModel3DFrom, HTuple objectModel3DTo, HTuple pose, HTuple maxDistance, HTuple genParamName, HTuple genParamValue)

void HObjectModel3D.DistanceObjectModel3d(HObjectModel3D objectModel3DTo, HPose pose, HTuple maxDistance, HTuple genParamName, HTuple genParamValue)

void HObjectModel3D.DistanceObjectModel3d(HObjectModel3D objectModel3DTo, HPose pose, double maxDistance, string genParamName, string genParamValue)

def distance_object_model_3d(object_model_3dfrom: HHandle, object_model_3dto: HHandle, pose: Sequence[Union[float, int]], max_distance: Union[float, int], gen_param_name: MaybeSequence[str], gen_param_value: MaybeSequence[Union[int, str, float]]) -> None

Beschreibung

Der Operator distance_object_model_3ddistance_object_model_3dDistanceObjectModel3dDistanceObjectModel3dDistanceObjectModel3ddistance_object_model_3d bestimmt die Abstände der Punkte im 3D-Objektmodell ObjectModel3DFromObjectModel3DFromObjectModel3DFromObjectModel3DFromobjectModel3DFromobject_model_3dfrom zu den Punkten, Dreiecken oder dem Primitiv im 3D-Objektmodell ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DToobject_model_3dto. Die Abstände werden im 3D-Objektmodell ObjectModel3DFromObjectModel3DFromObjectModel3DFromObjectModel3DFromobjectModel3DFromobject_model_3dfrom als erweitertes Attribut mit dem Namen '&distance'"&distance""&distance""&distance""&distance""&distance" gespeichert. Die Abstände können danach mittels get_object_model_3d_paramsget_object_model_3d_paramsGetObjectModel3dParamsGetObjectModel3dParamsGetObjectModel3dParamsget_object_model_3d_params abgerufen werden oder mittels select_points_object_model_3dselect_points_object_model_3dSelectPointsObjectModel3dSelectPointsObjectModel3dSelectPointsObjectModel3dselect_points_object_model_3d oder anderen Operatoren, die erweiterte Attribute verwenden, weiterverarbeitet werden.

Die Zieldaten (Punkte, Dreiecke oder Primitiv) werden anhand der in ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DToobject_model_3dto vorhandenen Daten ausgewählt. Dabei werden die ersten vorhandenen Daten in der folgenden Reihenfolge verwendet: Primitiv, Dreiecke, Punkte. Alternativ zu dieser automatischen Auswahl können die Zieldaten auch manuell mit dem generischen Parameter 'distance_to'"distance_to""distance_to""distance_to""distance_to""distance_to" gesetzt werden (s.u.). Allgemeine Polygone werden intern trianguliert bevor der Abstand zu den Dreiecken berechnet wird. In diesem Sinne ist ein Operator-Aufruf mit schon triangulierten Objekten schneller als einer für Objekte mit allgemeinen Polygonen.

MaxDistanceMaxDistanceMaxDistanceMaxDistancemaxDistancemax_distance kann benutzt werden, um einen Schwellenwert für die berechneten Distanzen zu setzen. Wenn MaxDistanceMaxDistanceMaxDistanceMaxDistancemaxDistancemax_distance auf 0 gesetzt wird, werden alle Distanzen berechnet. Wenn MaxDistanceMaxDistanceMaxDistanceMaxDistancemaxDistancemax_distance auf einen anderen Wert gesetzt wird, werden alle Punkte, bei denen die Distanz MaxDistanceMaxDistanceMaxDistanceMaxDistancemaxDistancemax_distance überschreiten würde, nicht verarbeitet. Für diese Punkte wird der Wert von MaxDistanceMaxDistanceMaxDistanceMaxDistancemaxDistancemax_distance in dem Attribut '&distance'"&distance""&distance""&distance""&distance""&distance" gespeichert. Das Setzen von MaxDistanceMaxDistanceMaxDistanceMaxDistancemaxDistancemax_distance kann also die Geschwindigkeit des Operators deutlich erhöhen, wenn ein Wert ungleich 0 eingestellt wird.

Ist PosePosePosePoseposepose ein nicht-leeres Tupel, so gibt es eine Pose an, welche vor der Distanzbestimmung auf die Punkte von ObjectModel3DFromObjectModel3DFromObjectModel3DFromObjectModel3DFromobjectModel3DFromobject_model_3dfrom angewandt wird. Die Pose kann über den generischen Parameter 'invert_pose'"invert_pose""invert_pose""invert_pose""invert_pose""invert_pose" invertiert werden (s.u.).

Je nach Zieldatentyp (Punkte, Dreiecke oder Primitiv) gibt es verschiedene Methoden zur Abstandsbestimmung. Einige dieser Methoden bauen eine Datenstruktur über den Elementen von ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DToobject_model_3dto auf, welche die Berechnung beschleunigt. Der Aufbau dieser Datenstruktur für das 3D-Objektmodell ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DToobject_model_3dto kann auch durch den Operator prepare_object_model_3dprepare_object_model_3dPrepareObjectModel3dPrepareObjectModel3dPrepareObjectModel3dprepare_object_model_3d durchgeführt werden. Dies hat den Vorteil, dass der Aufbau auch bei mehreren Aufrufen von distance_object_model_3ddistance_object_model_3dDistanceObjectModel3dDistanceObjectModel3dDistanceObjectModel3ddistance_object_model_3d mit demselben Ziel-Objektmodell nur einmal durchgeführt werden muss, beispielsweise bei einem Suchmodell. Objekte mit allgemeinen Polygonen können zusätzlich mit dem Operator prepare_object_model_3dprepare_object_model_3dPrepareObjectModel3dPrepareObjectModel3dPrepareObjectModel3dprepare_object_model_3d trianguliert werden und die Dreiecke werden im 3D-Objekt gespeichert, um die Abstandsberechnung weiter zu beschleunigen. Die Triangulierung wird nur ausgeführt, wenn der generische Parameter 'distance_to'"distance_to""distance_to""distance_to""distance_to""distance_to" auf 'triangles'"triangles""triangles""triangles""triangles""triangles" gesetzt ist. Entgegen der Triangulierung im Operator triangulate_object_model_3dtriangulate_object_model_3dTriangulateObjectModel3dTriangulateObjectModel3dTriangulateObjectModel3dtriangulate_object_model_3d wird hier das Attribut mit den Polygonen nicht gelöscht.

Wenn der Abstand zu Punkten oder zu Dreiecken berechnet wird kann der Operator optional den Index des jeweils nächsten Punktes oder Dreiecks für jeden Punkt aus ObjectModel3DFromObjectModel3DFromObjectModel3DFromObjectModel3DFromobjectModel3DFromobject_model_3dfrom zurückgeben. Dazu muss der generische Parameter 'store_closest_index'"store_closest_index""store_closest_index""store_closest_index""store_closest_index""store_closest_index" auf 'true'"true""true""true""true""true" gesetzt werden (siehe unten). Der Index wird als erweitertes Attribut mit dem Namen '&closest_index'"&closest_index""&closest_index""&closest_index""&closest_index""&closest_index" im 3D-Objektmodell ObjectModel3DFromObjectModel3DFromObjectModel3DFromObjectModel3DFromobjectModel3DFromobject_model_3dfrom gespeichert. Der Index kann nicht berechnet werden, wenn die 'voxel'"voxel""voxel""voxel""voxel""voxel"-Methode verwendet wird. Wenn der Abstand eines Punktes zu seinem nächsten Punkt oder Dreieck die in MaxDistanceMaxDistanceMaxDistanceMaxDistancemaxDistancemax_distance definierte maximale Distanz überschreitet, so wird der Index seines nächsten Elements auf -1 gesetzt.

Optional können auch vorzeichenbehaftete Abstände zu Punkten, Dreiecken oder einem Primitiv berechnet werden. Dazu muss der generische Parameter 'signed_distances'"signed_distances""signed_distances""signed_distances""signed_distances""signed_distances" auf 'true'"true""true""true""true""true" gesetzt werden. Vorzeichenbehaftete Abstände können nicht berechnet werden, wenn bei Abständen von Punkten zu Punkten die 'voxel'"voxel""voxel""voxel""voxel""voxel"-Methode verwendet wird.

Im Folgenden werden die verschiedenen Zieldatentypen und Methoden erklärt, sowie ihre Vor- und Nachteile beschrieben. Der Operator distance_object_model_3ddistance_object_model_3dDistanceObjectModel3dDistanceObjectModel3dDistanceObjectModel3ddistance_object_model_3d bestimmt, abhängig von den Zieldaten, automatisch eine Methode. Alternativ kann die Methode manuell über den generischen Parameter 'mode'"mode""mode""mode""mode""mode" gesetzt werden.

Abstand zu Punkten:

Für die Bestimmung der Punkt-zu-Punkt-Abstände werden die folgenden Methoden unterstützt:

Lineare Suche:

Für jeden Punkt aus ObjectModel3DFromObjectModel3DFromObjectModel3DFromObjectModel3DFromobjectModel3DFromobject_model_3dfrom werden die Abstände zu allen Punkten in ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DToobject_model_3dto berechnet, und der kleinste Abstand verwendet. Diese Methode benötigt keine vorberechnete Datenstruktur, und ist für wenige Punkte in ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DToobject_model_3dto die schnellste.

KD-Baum:

Die Punkte in ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DToobject_model_3dto werden in einem KD-Baum organisiert, welcher die Suche nach dem nächsten Punkt beschleunigt. Der Aufbau des Baums ist sehr effizient. Die Suchzeit ist dabei in etwa logarithmisch zu der Anzahl der Punkten in ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DToobject_model_3dto. Die Suchzeit ist allerdings nicht konstant und kann stark von der Lage der Suchpunkte in ObjectModel3DFromObjectModel3DFromObjectModel3DFromObjectModel3DFromobjectModel3DFromobject_model_3dfrom abhängen.

Voxel:

Die Punkte in ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DToobject_model_3dto werden in einer Voxelstruktur gespeichert. Diese Voxelstruktur erlaubt eine Suche in annähernd konstanter Zeit, d.h. unabhängig von der Lage des Suchpunktes und der Größe der Zielpunktwolke.

Der Aufbau der Voxelstruktur dauert allerdings deutlich länger als der Aufbau eines KD-Baums. Es ist möglich, diese Datenstruktur vorzuberechnen, indem man prepare_object_model_3dprepare_object_model_3dPrepareObjectModel3dPrepareObjectModel3dPrepareObjectModel3dprepare_object_model_3d mit PurposePurposePurposePurposepurposepurpose 'distance_computation'"distance_computation""distance_computation""distance_computation""distance_computation""distance_computation" auf ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DToobject_model_3dto anwendet.

Abstand zu Dreiecken:

Für die Bestimmung des kleinsten Punkt-zu-Dreieck-Abstands werden die folgenden Methoden unterstützt:

Lineare Suche:

Für jeden Punkt aus ObjectModel3DFromObjectModel3DFromObjectModel3DFromObjectModel3DFromobjectModel3DFromobject_model_3dfrom werden die Abstände zu allen Dreiecken in ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DToobject_model_3dto berechnet und der kleinste Abstand verwendet. Diese Methode benötigt keine vorberechnete Datenstruktur, und ist für wenige Dreiecke in ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DToobject_model_3dto die schnellste.

KD-Baum:

Die in ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DToobject_model_3dto gespeicherten Dreiecke werden in einem KD-Baum gespeichert, wodurch die Suche nach dem nächsten Dreieck beschleunigt wird. Der Aufbau des Baums ist vergleichsweise effizient. Die Suchzeit ist in etwa logarithmisch zu der Anzahl der Dreiecke in ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DToobject_model_3dto. Die Suchzeit ist allerdings nicht konstant und kann von der Lage der Suchpunkte in ObjectModel3DFromObjectModel3DFromObjectModel3DFromObjectModel3DFromobjectModel3DFromobject_model_3dfrom abhängen.

Voxel:

Die Dreiecke in ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DToobject_model_3dto werden in einer Voxelstruktur gespeichert. Diese Voxelstruktur erlaubt eine Suche in annähernd konstanter Zeit, d.h. unabhängig von der Lage des Suchpunktes und der Anzahl der Dreiecke in der Zielstruktur.

Der Aufbau der Voxelstruktur dauert allerdings deutlich länger als der Aufbau eines KD-Baums. Es ist möglich, diese Datenstruktur vorzuberechnen, indem man prepare_object_model_3dprepare_object_model_3dPrepareObjectModel3dPrepareObjectModel3dPrepareObjectModel3dprepare_object_model_3d mit PurposePurposePurposePurposepurposepurpose 'distance_computation'"distance_computation""distance_computation""distance_computation""distance_computation""distance_computation" auf ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DToobject_model_3dto anwendet. Für den Aufbau der Voxelstruktur werden die Dreiecke abgetastet. Die entsprechende Abtastdistanz kann mit den generischen Parameter 'sampling_dist_rel'"sampling_dist_rel""sampling_dist_rel""sampling_dist_rel""sampling_dist_rel""sampling_dist_rel" und 'sampling_dist_abs'"sampling_dist_abs""sampling_dist_abs""sampling_dist_abs""sampling_dist_abs""sampling_dist_abs" gesetzt werden.

Standardmäßig wird 'sampling_dist_rel'"sampling_dist_rel""sampling_dist_rel""sampling_dist_rel""sampling_dist_rel""sampling_dist_rel" auf 0.03 gesetzt. Eine genaue Beschreibung der beiden Parameter findet sich unten. Bei der Verwendung der Voxelstruktur für die Bestimmung der Abstände zu Dreiecken können die berechneten Distanzen in einigen Fällen um ca. 10% der Abtastdistanz von den tatsächlichen Abständen nach oben abweichen.

Abstand zu Primitiven:

Da ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DToobject_model_3dto nur ein Primitiv enthalten kann, werden die Punkt-zu-Primitiv-Abstände immer linear durchgeführt. Der Aufbau oder die Verwendung einer Datenstruktur ist weder nötig noch möglich.

Das Berechnen von Abständen zu primitiven Ebenen, die mittels segment_object_model_3dsegment_object_model_3dSegmentObjectModel3dSegmentObjectModel3dSegmentObjectModel3dsegment_object_model_3d oder fit_primitives_object_model_3dfit_primitives_object_model_3dFitPrimitivesObjectModel3dFitPrimitivesObjectModel3dFitPrimitivesObjectModel3dfit_primitives_object_model_3d erzeugt wurden, kann vergleichsweise langsam sein, da diese Ebenen eine komplexe Ausdehnung beinhalten. Wenn nur der Abstand zu der Ebene relevant ist und die Ausdehnung ignoriert werden soll, wird empfohlen, die Pose der Ebene mittels get_object_model_3d_paramsget_object_model_3d_paramsGetObjectModel3dParamsGetObjectModel3dParamsGetObjectModel3dParamsget_object_model_3d_params mit dem Parameter 'primitive_parameter_pose'"primitive_parameter_pose""primitive_parameter_pose""primitive_parameter_pose""primitive_parameter_pose""primitive_parameter_pose" abzurufen und mittels gen_plane_object_model_3dgen_plane_object_model_3dGenPlaneObjectModel3dGenPlaneObjectModel3dGenPlaneObjectModel3dgen_plane_object_model_3d eine neue Ebene ohne Ausdehnung zu erzeugen.

Die folgende Tabelle gibt eine Übersicht über die verschiedenen Zieldaten, Methoden, sowie deren Vor- und Nachteile. N ist die Anzahl von Zielementen in ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DToobject_model_3dto.

Zieldaten Methode Aufbau-Zeit Ungefähre Suchzeit Eigenschaften
Punkte linear 0 - Keine Vorberechnung
- Schnellste Methode für kleine
- Standardmethode für
Punkte kd-tree - Schnelle Vorberechnung
- Suchzeit nicht konstant
- Standardmethode für
Punkte voxel - Langsame Vorberechnung
- Sehr schnelle Suche
- Standardmethode für Vorberechnung mit prepare_object_model_3dprepare_object_model_3dPrepareObjectModel3dPrepareObjectModel3dPrepareObjectModel3dprepare_object_model_3d
Dreiecke linear 0 - Keine Vorberechnung
- Schnellste Methode für kleine
- Standardmethode
Dreiecke kd-tree - Schnelle Vorberechnung
- Suchzeit nicht konstant
Dreiecke voxel - Langsame Vorberechnung
- Benötigt Abtastdistanz
- Sehr schnelle Suche
- Kleine Fehler möglich
- Standardmethode für Vorberechnung mit prepare_object_model_3dprepare_object_model_3dPrepareObjectModel3dPrepareObjectModel3dPrepareObjectModel3dprepare_object_model_3d
Primitiv linear 0

Zusätzlich zu den oben beschriebenen Parametern können die folgenden Parameter verwendet werden, um den Operator zu beeinflussen. Diese Parameter und ihre Werte können in den Parametern GenParamNameGenParamNameGenParamNameGenParamNamegenParamNamegen_param_name und GenParamValueGenParamValueGenParamValueGenParamValuegenParamValuegen_param_value gesetzt werden. Alle der folgenden Parameter sind optional.

'distance_to'"distance_to""distance_to""distance_to""distance_to""distance_to"

Mit diesem Parameter können die Zieldaten explizit ausgewählt werden.

'auto'"auto""auto""auto""auto""auto"

(Standardwert) Die Zieldaten werden automatisch ausgewählt. Dazu wird überprüft, welches der folgenden Attribute in ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DToobject_model_3dto vorhanden ist, und das erste vorhandene verwendet: Primitiv, Dreiecke, Punkte.

'primitive'"primitive""primitive""primitive""primitive""primitive"

Es werden die Abstände zu dem in ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DToobject_model_3dto vorhandenen Primitiv berechnet.

'triangles'"triangles""triangles""triangles""triangles""triangles"

Es werden die Abstände zu den in ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DToobject_model_3dto vorhandenen Dreiecken berechnet.

'points'"points""points""points""points""points"

Es werden die Abstände zu den in ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DToobject_model_3dto vorhandenen Punkten berechnet.

'method'"method""method""method""method""method"

Mit diesem Parameter kann die zu verwendende Methode explizit gesetzt werden. Nicht alle Methoden sind für alle Zieldaten möglich. Die möglichen Kombinationen sind in obiger Tabelle aufgelistet.

'auto'"auto""auto""auto""auto""auto"

(Standardwert) Es wird die Standardmethode für die ausgewählten Zieldaten verwendet.

'linear'"linear""linear""linear""linear""linear"

Die Abstände werden über eine lineare Suche berechnet.

'kd-tree'"kd-tree""kd-tree""kd-tree""kd-tree""kd-tree"

Die Abstände werden über einen KD-Baum berechnet.

'voxel'"voxel""voxel""voxel""voxel""voxel"

Die Abstände werden über eine Voxelstruktur berechnet.

'invert_pose'"invert_pose""invert_pose""invert_pose""invert_pose""invert_pose"

Mit diesem Parameter kann die in PosePosePosePoseposepose übergebene Pose invertiert werden.

'false'"false""false""false""false""false"

(Standardwert) Die Pose wird nicht invertiert.

'true'"true""true""true""true""true"

Die Pose wird invertiert.

'output_attribute'"output_attribute""output_attribute""output_attribute""output_attribute""output_attribute"

Mit diesem Parameter kann der Name des erweiterten Attributs gesetzt werden, in welchem die berechneten Abstände gespeichert werden. Standardmäßig werden die Abstände in dem erweiterten Attribut mit dem Namen '&distance'"&distance""&distance""&distance""&distance""&distance" im Objektmodell ObjectModel3DFromObjectModel3DFromObjectModel3DFromObjectModel3DFromobjectModel3DFromobject_model_3dfrom gespeichert. Wird das gleiche Objektmodell für mehrere Aufrufe von distance_object_model_3ddistance_object_model_3dDistanceObjectModel3dDistanceObjectModel3dDistanceObjectModel3ddistance_object_model_3d verwendet, so wird das Attribut überschrieben. Um dies zu vermeiden, kann der Name des Attributs verändert werden. Gültige Namen von erweiterten Attribute fangen mit einem '&' an.

'sampling_dist_rel'"sampling_dist_rel""sampling_dist_rel""sampling_dist_rel""sampling_dist_rel""sampling_dist_rel", 'sampling_dist_abs'"sampling_dist_abs""sampling_dist_abs""sampling_dist_abs""sampling_dist_abs""sampling_dist_abs"

Diese Parameter werden verwendet, wenn die Abstände zu Dreiecken mit der Voxel-basierten Methode berechnet werden. Für den Aufbau der Voxelstruktur werden die Dreiecke regelmäßig abgetastet. Die Abtastdistanz kann entweder absolut mit dem Parameter 'sampling_dist_abs'"sampling_dist_abs""sampling_dist_abs""sampling_dist_abs""sampling_dist_abs""sampling_dist_abs" gesetzt werden, oder relativ zum Durchmesser des achsenparallelen umschließenden Quaders mit 'sampling_dist_rel'"sampling_dist_rel""sampling_dist_rel""sampling_dist_rel""sampling_dist_rel""sampling_dist_rel". Nur einer der beiden Parameter kann gesetzt werden. Der Durchmesser des achsenparallelen umschließenden Quaders kann mit get_object_model_3d_paramsget_object_model_3d_paramsGetObjectModel3dParamsGetObjectModel3dParamsGetObjectModel3dParamsget_object_model_3d_params abgerufen werden. Die Erstellung der Voxelstruktur für Dreiecke kann sehr lange dauern und wird i.d.R. mittels prepare_object_model_3dprepare_object_model_3dPrepareObjectModel3dPrepareObjectModel3dPrepareObjectModel3dprepare_object_model_3d vorberechnet (siehe oben).

'store_closest_index'"store_closest_index""store_closest_index""store_closest_index""store_closest_index""store_closest_index"

Dieser Parameter aktiviert die Berechnung des Index des nächsten Punktes oder Dreiecks für jeden Punkt in ObjectModel3DFromObjectModel3DFromObjectModel3DFromObjectModel3DFromobjectModel3DFromobject_model_3dfrom (siehe oben). Die Indizes werden im erweiterten Attribut '&closest_index' zurückgegeben.

'false'"false""false""false""false""false"

(Standardwert) Der Index wird nicht zurückgegeben.

'true'"true""true""true""true""true"

Der Index wird zurückgegeben.

'signed_distances'"signed_distances""signed_distances""signed_distances""signed_distances""signed_distances"

Dieser Parameter wird verwendet, um vorzeichenbehaftete Abstände zwischen den Punkten im 3D-Objektmodell ObjectModel3DFromObjectModel3DFromObjectModel3DFromObjectModel3DFromobjectModel3DFromobject_model_3dfrom zu den Punkten, Dreiecken oder dem Primitiv im 3D-Objektmodell ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DToobject_model_3dto zu berechnen.

'false'"false""false""false""false""false"

(Standardwert) Es werden Abstände ohne Vorzeichen zurückgegeben.

'true'"true""true""true""true""true"

Es werden vorzeichenbehaftete Abstände zurückgegeben.

Abhängig von den vorhandenen Zieldaten (Punkte, Dreiecke oder Primitive) sind die folgenden Besonderheiten zu beachten:

Abstand zu Punkten:

Eine Berechnung von vorzeichenbehafteten Abständen zu Punkten wird nur für die Methoden 'kd-tree'"kd-tree""kd-tree""kd-tree""kd-tree""kd-tree"' und 'linear'"linear""linear""linear""linear""linear" unterstützt. Unabhängig davon welche der beiden Methoden für die Bestimmung des kleinsten Punkt-zu-Punkt-Abstands verwendet wird, ist eine Berechnung der vorzeichenbehafteten Distanz nur möglich, wenn Punktnormalen für die Punkte im 3D-Objektmodell ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DToobject_model_3dto vorhanden sind oder mit dem Operator set_object_model_3d_attrib_modset_object_model_3d_attrib_modSetObjectModel3dAttribModSetObjectModel3dAttribModSetObjectModel3dAttribModset_object_model_3d_attrib_mod gesetzt wurden.

Abstand zu Dreiecken:

Vorzeichenbehaftete Distanzen können für alle oben aufgeführten Methoden berechnet werden. Bei vorzeichenbehafteten Abständen von Punkten zu Dreiecken wird die Distanz negativ gesetzt, wenn das Skalarprodukt mit dem Normalenvektor des Dreiecks kleiner Null ist.

Abstand zu Primitiven:

Berechnet man den Abstand zu zylinderförmigen, kugelförmigen oder quaderförmigen Primitiven, so erhalten Punkte des 3D-Objektmodells ObjectModel3DFromObjectModel3DFromObjectModel3DFromObjectModel3DFromobjectModel3DFromobject_model_3dfrom einen negativen Abstand, wenn sie sich innerhalb des Primitivs befinden und einen positiven, wenn sie außerhalb davon liegen. Werden Abstände von Punkten zu Ebenen berechnet, so erhalten Punkte einen negativen Abstand, wenn sie unterhalb der Ebene liegen und einen positiven wenn sie oberhalb davon liegen.

Ausführungsinformationen

Parameter

ObjectModel3DFromObjectModel3DFromObjectModel3DFromObjectModel3DFromobjectModel3DFromobject_model_3dfrom (input_control)  object_model_3d HObjectModel3D, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Handle des 3D-Objektmodells mit den Quelldaten.

ObjectModel3DToObjectModel3DToObjectModel3DToObjectModel3DToobjectModel3DToobject_model_3dto (input_control)  object_model_3d HObjectModel3D, HTupleHHandleHTupleHtuple (handle) (IntPtr) (HHandle) (handle)

Handle des 3D-Objektmodells mit den Zieldaten.

PosePosePosePoseposepose (input_control)  pose HPose, HTupleSequence[Union[float, int]]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Pose der Quelldaten in den Zieldaten.

Defaultwert: []

MaxDistanceMaxDistanceMaxDistanceMaxDistancemaxDistancemax_distance (input_control)  number HTupleUnion[float, int]HTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

Maximal interessanter Abstand.

Defaultwert: 0

GenParamNameGenParamNameGenParamNameGenParamNamegenParamNamegen_param_name (input_control)  attribute.name(-array) HTupleMaybeSequence[str]HTupleHtuple (string) (string) (HString) (char*)

Namen der generischen Parameter.

Defaultwert: []

Werteliste: 'distance_to'"distance_to""distance_to""distance_to""distance_to""distance_to", 'invert_pose'"invert_pose""invert_pose""invert_pose""invert_pose""invert_pose", 'method'"method""method""method""method""method", 'output_attribute'"output_attribute""output_attribute""output_attribute""output_attribute""output_attribute", 'sampling_dist_abs'"sampling_dist_abs""sampling_dist_abs""sampling_dist_abs""sampling_dist_abs""sampling_dist_abs", 'sampling_dist_rel'"sampling_dist_rel""sampling_dist_rel""sampling_dist_rel""sampling_dist_rel""sampling_dist_rel", 'signed_distances'"signed_distances""signed_distances""signed_distances""signed_distances""signed_distances", 'store_closest_index'"store_closest_index""store_closest_index""store_closest_index""store_closest_index""store_closest_index"

GenParamValueGenParamValueGenParamValueGenParamValuegenParamValuegen_param_value (input_control)  attribute.value(-array) HTupleMaybeSequence[Union[int, str, float]]HTupleHtuple (string / integer / real) (string / int / long / double) (HString / Hlong / double) (char* / Hlong / double)

Werte der generischen Parameter.

Defaultwert: []

Werteliste: 'auto'"auto""auto""auto""auto""auto", 'false'"false""false""false""false""false", 'kd-tree'"kd-tree""kd-tree""kd-tree""kd-tree""kd-tree", 'linear'"linear""linear""linear""linear""linear", 'points'"points""points""points""points""points", 'polygons'"polygons""polygons""polygons""polygons""polygons", 'primitive'"primitive""primitive""primitive""primitive""primitive", 'triangles'"triangles""triangles""triangles""triangles""triangles", 'true'"true""true""true""true""true", 'voxel'"voxel""voxel""voxel""voxel""voxel"

Ergebnis

distance_object_model_3ddistance_object_model_3dDistanceObjectModel3dDistanceObjectModel3dDistanceObjectModel3ddistance_object_model_3d liefert den Wert 2 (H_MSG_TRUE) wenn alle Parameter korrekt sind. Wenn notwendig wird eine Ausnahmebehaldung durchgeführt.

Vorgänger

prepare_object_model_3dprepare_object_model_3dPrepareObjectModel3dPrepareObjectModel3dPrepareObjectModel3dprepare_object_model_3d, read_object_model_3dread_object_model_3dReadObjectModel3dReadObjectModel3dReadObjectModel3dread_object_model_3d, find_surface_modelfind_surface_modelFindSurfaceModelFindSurfaceModelFindSurfaceModelfind_surface_model, xyz_to_object_model_3dxyz_to_object_model_3dXyzToObjectModel3dXyzToObjectModel3dXyzToObjectModel3dxyz_to_object_model_3d

Nachfolger

get_object_model_3d_paramsget_object_model_3d_paramsGetObjectModel3dParamsGetObjectModel3dParamsGetObjectModel3dParamsget_object_model_3d_params, render_object_model_3drender_object_model_3dRenderObjectModel3dRenderObjectModel3dRenderObjectModel3drender_object_model_3d, disp_object_model_3ddisp_object_model_3dDispObjectModel3dDispObjectModel3dDispObjectModel3ddisp_object_model_3d, clear_object_model_3dclear_object_model_3dClearObjectModel3dClearObjectModel3dClearObjectModel3dclear_object_model_3d

Siehe auch

prepare_object_model_3dprepare_object_model_3dPrepareObjectModel3dPrepareObjectModel3dPrepareObjectModel3dprepare_object_model_3d

Modul

3D Metrology