set_object_model_3d_attrib
— Setzen von Attributen eines 3D-Objektmodells.
set_object_model_3d_attrib( : : ObjectModel3D, AttribName, AttachExtAttribTo, AttribValues : ObjectModel3DOut)
set_object_model_3d_attrib_mod
setzt Standard-Attribute und
erweiterte Attribute in AttribName
eines 3D-Objektmodells
ObjectModel3D
auf die Werte in AttribValues
und
liefert ein 3D-Objektmodell mit den neuen Attributwerten in
ObjectModel3DOut
zurück.
set_object_model_3d_attrib
ist identisch mit set_object_model_3d_attrib_mod
mit der Ausnahme,
dass set_object_model_3d_attrib
ein neues 3D-Objektmodell
erzeugt, anstatt das bestehende zu verändern.
Es ist über den Parameter AttachExtAttribTo
möglich, die Werte von erweiterten Attributen an bereits existierende
Standard-Attribute des 3D-Objektmodells zu binden.
Für Standard-Attribute wird AttachExtAttribTo
ignoriert.
Falls die Attribute in AttribName
nicht existieren, werden
sie wenn möglich neu erstellt. Sollen bereits im
3D-Objektmodell vorhandene Attribute gesetzt werden, muss die Länge der
neuen Daten der Länge der alten Daten entsprechen. Ist dies der Fall,
werden die alten Daten überschrieben.
Falls erweiterte Attribute mit AttachExtAttribTo
an bereits
existierende Standard-Attribute gehängt werden sollen, muss die
Länge der neuen Daten den bereits vorhandenen Standard-Attribut-Werten
entsprechen.
Standardattribute
Die folgenden Standardattribute können gesetzt werden:
Die x-Koordinaten einer 3D-Punktmenge werden
im Parameter AttribValues
übergeben. Ist das Attribut nicht
vorhanden, müssen die x-, y- und z-Koordinaten gleichzeitig
mittels 'point_coord_x' , 'point_coord_y' und
'point_coord_z' gesetzt werden. Die Anzahl der
x-, y- und z-Koordinaten muss identisch sein.
Die y-Koordinaten einer 3D-Punktmenge werden
im Parameter AttribValues
übergeben. Ist das Attribut nicht
vorhanden, müssen die x-, y- und z-Koordinaten gleichzeitig
mittels 'point_coord_x' , 'point_coord_y' und
'point_coord_z' gesetzt werden. Die Anzahl der
x-, y- und z-Koordinaten muss identisch sein.
Die z-Koordinaten einer 3D-Punktmenge werden
im Parameter AttribValues
übergeben. Ist das Attribut nicht
vorhanden, müssen die x-, y- und z-Koordinaten gleichzeitig
mittels 'point_coord_x' , 'point_coord_y' und
'point_coord_z' gesetzt werden. Die Anzahl der
x-, y- und z-Koordinaten muss identisch sein.
Die x-Komponenten der 3D-Punktnormalen einer 3D-Punktmenge werden
im Parameter AttribValues
übergeben. Ist das Attribut nicht
vorhanden, müssen die x-, y- und z-Komponenten der
3D-Punktnormalen gleichzeitig mittels 'point_normal_x' ,
'point_normal_y' und 'point_normal_z' gesetzt
werden. Die Anzahl der x-, y- und z-Komponenten der Anzahl an
vorhandenen 3D-Punkten entsprechen.
Die 3D-Punktnormalen werden nicht auf die Länge 1 normiert.
Die y-Komponenten der 3D-Punktnormalen einer 3D-Punktmenge werden
im Parameter AttribValues
übergeben. Ist das Attribut nicht
vorhanden, müssen die x-, y- und z-Komponenten der
3D-Punktnormalen gleichzeitig mittels 'point_normal_x' ,
'point_normal_y' und 'point_normal_z' gesetzt
werden. Die Anzahl der x-, y- und z-Komponenten muss
der Anzahl an vorhandenen 3D-Punkten entsprechen.
Die 3D-Punktnormalen werden nicht auf die Länge 1 normiert.
Die z-Komponenten der 3D-Punktnormalen einer 3D-Punktmenge werden
im Parameter AttribValues
übergeben. Ist das Attribut nicht
vorhanden, müssen die x-, y- und z-Komponenten der
3D-Punktnormalen gleichzeitig mittels 'point_normal_x' ,
'point_normal_y' und 'point_normal_z' gesetzt
werden. Die Anzahl der x-, y- und z-Komponenten muss
der Anzahl an vorhandenen 3D-Punkten entsprechen.
Die 3D-Punktnormalen werden nicht auf die Länge 1 normiert.
Das Qualitätsmaß der Rekonstruktion einer
3D-Punktmenge wird im Parameter AttribValues
übergeben. Da
dieses Attribut pro 3D-Punkt gesetzt wird, muss die Anzahl der
Komponente der Anzahl an vorhandenen 3D-Punkten entsprechen.
Der Rotkanal einer 3D-Punktmenge wird im Parameter
AttribValues
übergeben. Die Anzahl der Komponente muss
der Anzahl an vorhandenen 3D-Punkten entsprechen.
Der Grünkanal einer 3D-Punktmenge wird im
Parameter AttribValues
übergeben. Die Anzahl der Komponente muss
der Anzahl an vorhandenen 3D-Punkten entsprechen.
Der Blaukanal einer 3D-Punktmenge wird im Parameter
AttribValues
übergeben. Die Anzahl der Komponente muss
der Anzahl an vorhandenen 3D-Punkten entsprechen.
Die Indizes der 3D-Punkte, die Dreiecke repräsentieren, in der
folgenden Reihenfolge: Die ersten drei Werte des Parameters
AttribValues
(Eingabewerte 0,1,2) stellen das erste Dreieck dar, die nächsten
drei Werte (Eingabewerte 3,4,5) stellen das zweite Dreieck
dar, usw. Alle Indizes entsprechen schon vorhandenen 3D-Punkten.
Zu beachten ist, dass sich die Richtung der Dreiecke aus der
Reihenfolge der Indizes der Punkte ergibt.
Die Indizes der 3D-Punkte, die Polygone repräsentieren, in der
folgenden Reihenfolge: Der erste Wert des Parameters
AttribValues
enthält die Anzahl
n der 3D-Punkte des ersten Polygons. Die folgenden Werte
(Eingabewerte 1,2,..,n) repräsentieren das erste Polygon. Der
nächste Wert (Eingabewert n+1) enthält die Anzahl m der
3D-Punkte des zweiten Polygons. Die folgenden Werte
(Eingabewerte n+2,n+3,..,n+1+m) repräsentieren das zweite
Polygon, usw. Alle Indizes entsprechen schon vorhandenen 3D-Punkten.
Die Indizes der 3D-Punkte, die Linienzüge repräsentieren, in der
folgenden Reihenfolge: Der erste Wert des Parameters
AttribValues
enthält die Anzahl
n der 3D-Punkte des ersten Linienzuges. Die folgenden Werte
(Eingabewerte 1,2,..,n) repräsentieren den ersten Linienzug. Der
nächste Wert (Eingabewert n+1) enthält die Anzahl m der
3D-Punkte des zweiten Linienzuges. Die folgenden Werte
(Eingabewerte n+2,n+3,..,n+1+m) repräsentieren den zweiten
Linienzug usw. Alle Indizes entsprechen schon vorhandenen
3D-Punkten.
Die Zuordnung der Bildkoordinaten zu
den 3D-Punkten, in der folgenden Reihenfolge: Der erste Wert
(Eingabewert 0) des Parameters AttribValues
enthält die Breite
des entsprechenden Bildes. Der zweite Wert (Eingabewert 1)
enthält die Höhe des entsprechenden Bildes. Die folgenden n
Werte (Eingabewerte 2,3,..,n+1, mit n der Anzahl von
3D-Punkten) repräsentieren die Zeilenkoordinaten der n Punkte in
Bildkoordinaten. Die nächsten n Werte (Eingabewerte
n+2,n+3,..,n*2+1) repräsentieren die Spaltenkoordinaten der n
Punkte in Bildkoordinaten. Daraus ergibt sich die Gesamtanzahl
der Eingabewerte von n*2+2.
Die originalen Punktindizes der 3D-Punkte werden mit
AttribValues
gesetzt. Die Anzahl an originalen Punktindizes
muss mit der Anzahl an 3D-Punkten übereinstimmen.
Erweiterte Attribute
Erweiterte Attribute sind Attribute, die aus Standard-Attributen von
speziellen Operatoren (z.B. distance_object_model_3d
) berechnet
werden oder benutzerdefinierte Attribute. Die Namen von
erweiterten Attributen sind frei wählbar, müssen aber mit dem Präfix
'&' beginnen, also z.B., '&my_attrib' .
Erweiterte Attribute können eine beliebige Anzahl von Fließkommawerten
annehmen.
Erweiterte Attribute können über den Parameter AttachExtAttribTo
an bereits existierende Standard-Attribute des 3D-Objektmodells gebunden
werden.
Die folgenden Werte für AttachExtAttribTo
sind möglich:
Ist dieser Wert gesetzt, wird das erweiterte Attribut an das
3D-Objektmodell als Ganzes gebunden. Die Anzahl der Werte in
AttribValues
ist nicht eingeschränkt.
Ist dieser Wert gesetzt, wird das erweiterte Attribut an die
3D-Punkte des 3D-Objektmodells gebunden. Die Anzahl der Werte in
AttribValues
muss gleich der Anzahl der bereits bestehenden
3D-Punkte sein.
Ist dieser Wert gesetzt, wird das erweiterte Attribut an die
Dreiecke des 3D-Objektmodells gebunden. Die Anzahl der Werte in
AttribValues
muss gleich der Anzahl der bereits bestehenden
Dreiecke sein.
Ist dieser Wert gesetzt, wird das erweiterte Attribut an die
Polygone des 3D-Objektmodells gebunden. Die Anzahl der Werte in
AttribValues
muss gleich der Anzahl der bereits bestehenden
Polygone sein.
Ist dieser Wert gesetzt, wird das erweiterte Attribut an die
Linienzüge des 3D-Objektmodells gebunden. Die Anzahl der Werte in
AttribValues
muss gleich der Anzahl der bereits bestehenden
Linienzüge sein.
Falls mehrere Attribute in AttribName
übergeben werden, wird
AttribValues
in gleich lange Teiltupel unterteilt. Jedes
Teiltupel wird dann einem Attribut zugeordnet.
Z.B.: Wenn AttribName
und AttribValues
folgende
Werte haben:
AttribName
:= ['&attrib1','&attrib2','&attrib3'] ,
AttribValues
:= [0.0,1.0,2.0,3.0,4.0,5.0],
werden die Attribute mit folgenden Werten gesetzt:
'&attrib1' = [0.0,1.0], '&attrib2' = [2.0,3.0], '&attrib3' = [4.0,5.0].
Folglich ist es nicht möglich, mehrere Attribute unterschiedlicher Länge in einem Aufruf zu setzen.
set_object_model_3d_attrib
speichert die Eingabedaten AttribValues
unverändert im 3D-Objektmodell. Daher ist auf Konsistenz der
Eingabedaten zu achten, da die meisten Operatoren
konsistente 3D-Objektmodelle erwarten.
ObjectModel3D
(input_control) object_model_3d →
(handle)
Handle des Eingabe-3D-Objektmodells.
AttribName
(input_control) string(-array) →
(string)
Namen der Attribute.
Werteliste: 'blue' , 'green' , 'lines' , 'original_point_indices' , 'point_coord_x' , 'point_coord_y' , 'point_coord_z' , 'point_normal_x' , 'point_normal_y' , 'point_normal_z' , 'polygons' , 'red' , 'score' , 'triangles' , 'xyz_mapping'
AttachExtAttribTo
(input_control) string →
(string)
Beschreibt, woran ein erweitertes Attribut gehängt werden soll.
Defaultwert: []
Werteliste: [], 'lines' , 'object' , 'points' , 'polygons' , 'triangles'
AttribValues
(input_control) real(-array) →
(real / integer)
Attribut-Werte.
ObjectModel3DOut
(output_control) object_model_3d →
(handle)
Handle des Ausgabe-3D-Objektmodells.
set_object_model_3d_attrib
liefert den Wert 2 (H_MSG_TRUE) wenn alle
Parameter korrekt sind. Andernfalls wird eine Fehlerbehandlung
durchgeführt.
set_object_model_3d_attrib_mod
copy_object_model_3d
,
remove_object_model_3d_attrib
3D Metrology