disp_object_model_3ddisp_object_model_3dDispObjectModel3dDispObjectModel3ddisp_object_model_3d zeigt die 3D Objektmodelle
ObjectModel3DObjectModel3DObjectModel3DobjectModel3Dobject_model_3d im Fenster WindowHandleWindowHandleWindowHandlewindowHandlewindow_handle an.
Die Szene wird über die Kameraparameter CamParamCamParamCamParamcamParamcam_param und die
Posen (in PosePosePoseposepose) der 3D Objektmodelle definiert.
Wird ein leeres Tupel für CamParamCamParamCamParamcamParamcam_param übergeben, verwendet
disp_object_model_3ddisp_object_model_3dDispObjectModel3dDispObjectModel3ddisp_object_model_3d Default-Kameraparameter, die auf der
Fenstergröße beruhen.
PosePosePoseposepose kann entweder eine Pose enthalten, die für alle 3D
Objektmodelle gilt, oder eine individuelle Pose für jedes 3D Objektmodell.
Wird ein leeres Tupel für PosePosePoseposepose übergeben, schätzt
disp_object_model_3ddisp_object_model_3dDispObjectModel3dDispObjectModel3ddisp_object_model_3d diese Parameter so, dass
alle Objekte sichtbar sind.
Die Posen werden in der Form ,
erwartet. Dabei steht
ccs für das Kamerakoordinaten und
mcs für das Modellkoordinatensystem (ein 3D Weltkoordinatensystem),
siehe auch Transformationen / Posen und
„Solution Guide III-C - 3D Vision“.
3D Objektmodelle, die Dreiecke oder Polygone beinhalten, werden als
geschlossene Körper dargestellt. 3D Objektmodelle, die nur Koordinaten
enthalten, werden dagegen als Punktwolken visualisiert. 3D-Primitive
(wie sie zum Beispiel von fit_primitives_object_model_3dfit_primitives_object_model_3dFitPrimitivesObjectModel3dFitPrimitivesObjectModel3dfit_primitives_object_model_3d erzeugt
werden), werden auch als geschlossene Körper dargestellt. Mit dem
generischen Parameter 'attribute'"attribute""attribute""attribute""attribute" kann explizit die Art der
Darstellung ausgewählt werden.
Position der Lichtquelle. Dieser Parameter muss als String mit
vier Fließkommawerten (getrennt durch Leerzeichen) übergeben
werden. Ist der vierte Wert 0.0, wird eine gerichtete Lichtquelle
verwendet, wobei die ersten drei Werte die Richtung bestimmen.
Ansonsten wird eine Punktlichtquelle verwendet, deren Position
durch die ersten drei Werte bestimmt ist.
Die folgenden Parameter können entweder für alle 3D Objektmodelle der Szene
oder für ein einzelnes 3D Objektmodell gesetzt werden (indem der Index des
3D Objektmodells an den Parameternamen angehängt wird, z.B.
'color_0'"color_0""color_0""color_0""color_0").
Farbe des 3D Objektmodells. Die verfügbaren Farben können mit dem
Operator query_colorquery_colorQueryColorQueryColorquery_color erfragt werden.
Darüber hinaus kann die Farbe auch über ein RGB-Tripel in der Form
'#rrggbb'"#rrggbb""#rrggbb""#rrggbb""#rrggbb" gesetzt werden, wobei 'rr', 'gg' und 'bb'
jeweils hexadezimale Zahlen zwischen '00' und 'ff' sind.
Farbe der Konturen, falls 'disp_lines'"disp_lines""disp_lines""disp_lines""disp_lines" auf 'true'"true""true""true""true"
gesetzt ist. Die verfügbaren Farben können mit dem Operator
query_colorquery_colorQueryColorQueryColorquery_color erfragt werden.
Darüber hinaus kann die Farbe auch über ein RGB-Tripel in der Form
'#rrggbb'"#rrggbb""#rrggbb""#rrggbb""#rrggbb" gesetzt werden, wobei 'rr', 'gg' und 'bb'
jeweils hexadezimale Zahlen zwischen '00' und 'ff' sind.
Farbe der Oberflächennormalen, falls 'disp_normals'"disp_normals""disp_normals""disp_normals""disp_normals" auf
'true'"true""true""true""true" gesetzt ist. Die verfügbaren Farben können mit dem
Operator query_colorquery_colorQueryColorQueryColorquery_color erfragt werden.
Darüber hinaus kann die Farbe auch über ein RGB-Tripel in der Form
'#rrggbb'"#rrggbb""#rrggbb""#rrggbb""#rrggbb" gesetzt werden, wobei 'rr', 'gg' und 'bb'
jeweils hexadezimale Zahlen zwischen '00' und 'ff' sind.
Setzt die LUT, die die Werte des mit 'color_attrib'"color_attrib""color_attrib""color_attrib""color_attrib"
gesetzten Attributes in Farben umwandelt.
In der Dokumentation von set_lutset_lutSetLutSetLutset_lut befindet sich eine Liste
der verfügbaren LUTs. Ist 'lut'"lut""lut""lut""lut" auf etwas anderes
als 'default'"default""default""default""default" gesetzt, wird 'color'"color""color""color""color" ignoriert.
Name eines Punktattributes, das für die Falschfarbendarstellung verwendet
wird.
Falls ein Attribut gesetzt ist, wird die Farbe eines dargestellten
3D-Punktes durch den Attributwert des Punktes und die aktuell gesetzte
LUT bestimmt (siehe 'lut'"lut""lut""lut""lut"). Auf diese Weise ist es möglich,
Attribute in Falschfarben darzustellen.
Beispiel: Wenn 'color_attrib'"color_attrib""color_attrib""color_attrib""color_attrib" auf 'coord_z'"coord_z""coord_z""coord_z""coord_z" und 'lut'"lut""lut""lut""lut"
auf 'color1'"color1""color1""color1""color1" gesetzt ist, werden die Z-Koordinaten von rot nach
blau farbkodiert.
Falls 'lut'"lut""lut""lut""lut" auf 'default'"default""default""default""default" gesetzt ist, werden die
Attributwerte verwendet, um die mit 'color'"color""color""color""color" gesetzte Farbe zu
skalieren.
Falls 'lut'"lut""lut""lut""lut" auf etwas anderes gesetzt, werden die Attributwerte
intern auf den Bereich [0,255] skaliert und als Eingabe für die
LUT-Funktion verwendet.
Die Abbildung wird außerdem von den Parametern 'color_attrib_start'"color_attrib_start""color_attrib_start""color_attrib_start""color_attrib_start"
und 'color_attrib_end'"color_attrib_end""color_attrib_end""color_attrib_end""color_attrib_end" bestimmt (siehe unten).
Falls Flächen dargestellt werden, wird ihre Farbe zwischen den
Eckpunktfarben interpoliert.
Wertevorschläge:
'none'"none""none""none""none", '&distance'"&distance""&distance""&distance""&distance",
'coord_x'"coord_x""coord_x""coord_x""coord_x", 'coord_y'"coord_y""coord_y""coord_y""coord_y", 'coord_z'"coord_z""coord_z""coord_z""coord_z",
benutzerdefinierte Punktattribute, oder beliebige andere
verfügbare Punktattribute.
Der maßgebliche Wertebereich für das mit 'color_attrib'"color_attrib""color_attrib""color_attrib""color_attrib"
eingestellte Attribut.
Die Attributwerte zwischen 'color_attrib_start'"color_attrib_start""color_attrib_start""color_attrib_start""color_attrib_start" und
'color_attrib_end'"color_attrib_end""color_attrib_end""color_attrib_end""color_attrib_end" werden auf den Anfang und das Ende der
ausgewählten LUT skaliert. Attributwerte außerhalb des Bereiches werden
beschnitten.
Damit ist es möglich, einen festen Farbbereich darzustellen, der nicht
durch Ausreißer verzerrt wird.
Bei 'auto'"auto""auto""auto""auto" wird der kleinste Attributwert auf den Anfang der LUT
abgebildet, der größte Wert auf das Ende, es sei denn,
'color_attrib'"color_attrib""color_attrib""color_attrib""color_attrib" ist 'normal_x'"normal_x""normal_x""normal_x""normal_x", 'normal_y'"normal_y""normal_y""normal_y""normal_y" oder
'normal_z'"normal_z""normal_z""normal_z""normal_z". In diesem Fall, werden Start und Ende automatisch auf
-1 und 1 gesetzt.
Der Startwert kann höher als der Endwert sein. In dem Fall wird die LUT
umgedreht.
Name eines Punktattributes, das für den Rot-, Grün-, oder Blaukanal
verwendet wird.
Das ist besonders nützlich, wenn drei zusammengehörige Attribute
verwendet werden, z.B. RGB-Farben oder Normalenvektoren.
Auf diese Weise können Punkte mit farbigen Texturen, z.B.
RGB-Sensor-Daten, dargestellt oder Punktnormalen in Falschfarben kodiert
werden.
Um ein einzelnes Attribut in Falschfarben darzustellen, verwenden Sie
bitte 'color_attrib'"color_attrib""color_attrib""color_attrib""color_attrib" (siehe oben).
Per Default wird angenommen, dass die Attributwerte zwischen 0 und 255
liegen. Falls die Attribute andere Wertebereiche haben, müssen
zusätzlich die Parameter 'rgb_channel_attrib_start'"rgb_channel_attrib_start""rgb_channel_attrib_start""rgb_channel_attrib_start""rgb_channel_attrib_start" und
'rgb_channel_attrib_end'"rgb_channel_attrib_end""rgb_channel_attrib_end""rgb_channel_attrib_end""rgb_channel_attrib_end" gesetzt werden (siehe unten).
Falls nur 1 oder 2 Kanäle gesetzt sind, verwenden die übrigen Kanäle den
RGB-Wert der mit 'color'"color""color""color""color" eingestellten Farbe.
Falls Flächen dargestellt werden, wird ihre Farbe zwischen den
Eckpunktfarben interpoliert.
Wertevorschläge:
'none'"none""none""none""none", '&red'"&red""&red""&red""&red",
'&green'"&green""&green""&green""&green", '&blue'"&blue""&blue""&blue""&blue", 'normal_x'"normal_x""normal_x""normal_x""normal_x",
'normal_y'"normal_y""normal_y""normal_y""normal_y", 'normal_z'"normal_z""normal_z""normal_z""normal_z",
benutzerdefinierte Punktattribute, oder beliebige andere
verfügbare Punktattribute.
Der maßgebliche Wertebereich für die mit 'red_channel_attrib'"red_channel_attrib""red_channel_attrib""red_channel_attrib""red_channel_attrib",
'green_channel_attrib'"green_channel_attrib""green_channel_attrib""green_channel_attrib""green_channel_attrib" und 'blue_channel_attrib'"blue_channel_attrib""blue_channel_attrib""blue_channel_attrib""blue_channel_attrib"
eingestellten Attribute.
Diese Parameter definieren den Wertebereich, der auf die gesamten
RGB-Kanäle skaliert wird. Das ist nützlich, wenn die Werte der
Eingabeattribute nicht im Intervall [0,255] liegen.
Bei 'auto'"auto""auto""auto""auto" wird der kleinste Attributwert auf 0 abgebildet, der
größte Wert auf 255, es sei denn, das Attribut ist 'normal_x'"normal_x""normal_x""normal_x""normal_x",
'normal_y'"normal_y""normal_y""normal_y""normal_y" oder 'normal_z'"normal_z""normal_z""normal_z""normal_z". In diesem Fall, werden Start
und Ende automatisch auf -1 und 1 gesetzt.
Der Startwert kann höher als der Endwert sein. In dem Fall werden die
RGB-Farben invertiert.
Der Bereich kann für jeden Kanal einzeln eingestellt werden, indem im
Parameternamen das 'rgb'"rgb""rgb""rgb""rgb" durch den jeweiligen Kanal ersetzt wird,
z.B. 'green_channel_attrib_start'"green_channel_attrib_start""green_channel_attrib_start""green_channel_attrib_start""green_channel_attrib_start".
disp_object_model_3ddisp_object_model_3dDispObjectModel3dDispObjectModel3ddisp_object_model_3d benötigt OpenGL 2.1, GLSL 1.2 und die OpenGL
Extensions GL_EXT_framebuffer_object und GL_EXT_framebuffer_blit.
Andernfalls wird automatisch der Kompatibilitätsmodus mit geringeren
Anforderungen an OpenGL benutzt.
Bei Grafikkarten mit geringem Speicher können bei großer Auflösung des
Renderfensters folgende Fehlermeldungen auftreten:
Low-Level Fehler: 'Incomplete attachment'
Unbehandelte Ausnahme: 'Benötigtes Framebuffer Objekt wird nicht
unterstützt'
Lösungen:
Um die Anforderungen an den Speicher der Grafikkarte zu verringern, kann
der Parameter 'quality'"quality""quality""quality""quality" auf 'low'"low""low""low""low" gesetzt oder der
Kompatibilitätsmodus verwendet werden.
Die Systemvariable (siehe set_systemset_systemSetSystemSetSystemset_system)
'opengl_compatibility_mode_enable'"opengl_compatibility_mode_enable""opengl_compatibility_mode_enable""opengl_compatibility_mode_enable""opengl_compatibility_mode_enable" kann auf 'true'"true""true""true""true" gesetzt
werden, um den Kompatibilitätsmodus permanent einzuschalten.
Dieser Modus benötigt OpenGL 1.1.
Im Kompabilitätsmodus werden die Parameter
'object_index_persistence'"object_index_persistence""object_index_persistence""object_index_persistence""object_index_persistence", 'depth_persistence'"depth_persistence""depth_persistence""depth_persistence""depth_persistence" und
'quality'"quality""quality""quality""quality" nicht unterstützt.
Auf Linux Remote Desktop wird 'disp_background'"disp_background""disp_background""disp_background""disp_background" nicht
unterstützt.
Achtung
Kameras mit hyperzentrischen Objektiven werden nicht unterstützt.
Falls CamParamCamParamCamParamcamParamcam_param Verzeichnungskoeffizienten ungleich null
enthält ist bei der Projektion großer Dreiecke oder Polygone
(oder 3D-Primitive)
darauf zu achten, dass die Verzeichnung nur auf die Punkte des
Objektmodells angewandt werden. In der Projektion werden diese
wiederum mit geraden Linien verbunden. Für eine gute
Approximation der verzeichneten Linien sollte eine Triangulierung
mit ausreichend kleinen Dreiecken verwendet werden.
Ausführungsinformationen
Multithreading-Typ: reentrant (läuft parallel zu nicht-exklusiven Operatoren).
Multithreading-Bereich: global (kann von jedem Thread aufgerufen werden).
disp_object_model_3ddisp_object_model_3dDispObjectModel3dDispObjectModel3ddisp_object_model_3d liefert den Wert 2 (
H_MSG_TRUE)
, falls die
Parameter korrekt sind. Gegebenenfalls wird eine Fehlerbehandlung
durchgeführt.
Sollte das Rendering den verfügbaren Speicher der Grafikkarte überschreiten,
wird die Fehlermeldung 5188 zurückgegeben.