create_cam_pose_look_at_pointT_create_cam_pose_look_at_pointCreateCamPoseLookAtPointCreateCamPoseLookAtPoint (Operator)

Name

create_cam_pose_look_at_pointT_create_cam_pose_look_at_pointCreateCamPoseLookAtPointCreateCamPoseLookAtPoint — Erstellen einer 3D-Kamera-Pose aus Kamerazentrum und Blickrichtung.

Signatur

create_cam_pose_look_at_point( : : CamPosX, CamPosY, CamPosZ, LookAtX, LookAtY, LookAtZ, RefPlaneNormal, CamRoll : CamPose)

Herror T_create_cam_pose_look_at_point(const Htuple CamPosX, const Htuple CamPosY, const Htuple CamPosZ, const Htuple LookAtX, const Htuple LookAtY, const Htuple LookAtZ, const Htuple RefPlaneNormal, const Htuple CamRoll, Htuple* CamPose)

void CreateCamPoseLookAtPoint(const HTuple& CamPosX, const HTuple& CamPosY, const HTuple& CamPosZ, const HTuple& LookAtX, const HTuple& LookAtY, const HTuple& LookAtZ, const HTuple& RefPlaneNormal, const HTuple& CamRoll, HTuple* CamPose)

static HPoseArray HPose::CreateCamPoseLookAtPoint(const HTuple& CamPosX, const HTuple& CamPosY, const HTuple& CamPosZ, const HTuple& LookAtX, const HTuple& LookAtY, const HTuple& LookAtZ, const HTuple& RefPlaneNormal, const HTuple& CamRoll)

void HPose::CreateCamPoseLookAtPoint(double CamPosX, double CamPosY, double CamPosZ, double LookAtX, double LookAtY, double LookAtZ, const HTuple& RefPlaneNormal, double CamRoll)

static void HOperatorSet.CreateCamPoseLookAtPoint(HTuple camPosX, HTuple camPosY, HTuple camPosZ, HTuple lookAtX, HTuple lookAtY, HTuple lookAtZ, HTuple refPlaneNormal, HTuple camRoll, out HTuple camPose)

static HPose[] HPose.CreateCamPoseLookAtPoint(HTuple camPosX, HTuple camPosY, HTuple camPosZ, HTuple lookAtX, HTuple lookAtY, HTuple lookAtZ, HTuple refPlaneNormal, HTuple camRoll)

void HPose.CreateCamPoseLookAtPoint(double camPosX, double camPosY, double camPosZ, double lookAtX, double lookAtY, double lookAtZ, HTuple refPlaneNormal, double camRoll)

Beschreibung

Der Operator create_cam_pose_look_at_pointcreate_cam_pose_look_at_pointCreateCamPoseLookAtPointCreateCamPoseLookAtPointCreateCamPoseLookAtPoint erstellt eine 3D-Kamera-Pose bezüglich eines Weltkoordinatensystems basierend auf zwei Punkten und dem Kamerarollwinkel.

Der erste der beiden Punkte legt die Position des optischen Zentrums der Kamera, d.h. den Ursprung des Kamerakoordinatensystems fest. Seine drei Koordinaten werden in CamPosXCamPosXCamPosXCamPosXcamPosX, CamPosYCamPosYCamPosYCamPosYcamPosY und CamPosZCamPosZCamPosZCamPosZcamPosZ übergeben. Der zweite Punkt legt die Blickrichtung der Kamera fest. Er wird ebenfalls durch seine drei Koordinaten LookAtXLookAtXLookAtXLookAtXlookAtX, LookAtYLookAtYLookAtYLookAtYlookAtY und LookAtZLookAtZLookAtZLookAtZlookAtZ beschrieben. Folglich liegt der zweite Punkt auf der z-Achse des Kamerakoordinatensystems.

Der verbleibende festzulegende Freiheitsgrad ist eine Rotation der Kamera um ihre z-Achse, die auch als Kamerarollwinkel bezeichnet wird. Um diese Rotation zu bestimmen, kann die Normale einer Referenzebene in RefPlaneNormalRefPlaneNormalRefPlaneNormalRefPlaneNormalrefPlaneNormal übergeben werden, die die Referenzorientierung der Kamera festlegt. Bezüglich dieser Referenzorientierung kann schließlich der Kamerarollwinkel in CamRollCamRollCamRollCamRollcamRoll angegeben werden. Der Kamerarollwinkel beschreibt die Rotation der Kamera um ihre z-Achse relativ zur Referenzorientierung.

Die Referenzebene kann als Ebene im Weltkoordinatensystem interpretiert werden, die parallel zur x-Achse der Kamera (in der Referenzorientierung, d.h. mit Kamerarollwinkel 0) liegt. In einer alternativen Interpretation legt der Normalenvektor der Referenzebene projiziert in die Bildebene die Richtung fest, die in der Kamera oben ist. Der in die Bildebene projizierte Normalenvektor zeigt somit in Richtung der negativen y-Achse des Kamerakoordinatensystems. Der Parameter RefPlaneNormalRefPlaneNormalRefPlaneNormalRefPlaneNormalrefPlaneNormal kann einen der folgenden Werte annehmen:

'x'"x""x""x""x":

Die Referenzebene ist die yz-Ebene des Weltkoordinatensystems. Die projizierte x-Achse des Weltkoordinatensystems zeigt in der Bildebene nach oben.

'-x'"-x""-x""-x""-x":

Die Referenzebene ist die yz-Ebene des Weltkoordinatensystems. Die projizierte x-Achse des Weltkoordinatensystems zeigt in der Bildebene nach unten.

'y'"y""y""y""y":

Die Referenzebene ist die xz-Ebene des Weltkoordinatensystems. Die projizierte y-Achse des Weltkoordinatensystems zeigt in der Bildebene nach oben.

'-y'"-y""-y""-y""-y":

Die Referenzebene ist die xz-Ebene des Weltkoordinatensystems. Die projizierte y-Achse des Weltkoordinatensystems zeigt in der Bildebene nach unten.

'z'"z""z""z""z":

Die Referenzebene ist die xy-Ebene des Weltkoordinatensystems. Die projizierte z-Achse des Weltkoordinatensystems zeigt in der Bildebene nach oben.

'-z'"-z""-z""-z""-z":

Die Referenzebene ist die xy-Ebene des Weltkoordinatensystems. Die projizierte z-Achse des Weltkoordinatensystems zeigt in der Bildebene nach unten.

Alternativ zu den obigen Werten kann in RefPlaneNormalRefPlaneNormalRefPlaneNormalRefPlaneNormalrefPlaneNormal auch ein beliebiger Normalenvektor angegeben werden, der nicht mit einer Koordinatenachse übereinstimmt. Dazu kann ein Tupel mit den drei Komponenten des Normalenvektors übergeben werden.

Es ist zu beachten, dass sich die Position des optischen Zentrums der Kamera und der Punkt, der die Blickrichtung der Kamera festlegt, unterscheiden müssen. Außerdem darf der Normalenvektor der Referenzebene nich parallel zur z-Achse der Kamera sein. Andernfalls ist die Kamera-Pose nicht eindeutig definiert.

create_cam_pose_look_at_pointcreate_cam_pose_look_at_pointCreateCamPoseLookAtPointCreateCamPoseLookAtPointCreateCamPoseLookAtPoint ist vor allem für die Visualisierung eines 3D-Objektmodells oder eines 3D-Formmodells von einer bestimmten Kameraposition aus hilfreich. In diesem Fall kann die mit create_cam_pose_look_at_pointcreate_cam_pose_look_at_pointCreateCamPoseLookAtPointCreateCamPoseLookAtPointCreateCamPoseLookAtPoint generierte Pose an project_object_model_3dproject_object_model_3dProjectObjectModel3dProjectObjectModel3dProjectObjectModel3d bzw. project_shape_model_3dproject_shape_model_3dProjectShapeModel3dProjectShapeModel3dProjectShapeModel3d übergeben werden.

Es ist auch möglich, für unterschiedliche Parameter Tupel unterschiedlicher Länge zu übergeben. In diesem Fall wird intern zunächst die maximale Anzahl an übergebenen Werten über alle Eingabeparameter ermittelt. Dieser Wert bestimmt die Anzahl der zu berechnenden Kamera-Poses. Jeder Eingabeparameter kann dann einen einzelnen Wert oder genauso viele Werte wie Kamera-Poses enthalten. Im ersten Fall wird der Wert für die Berechnen aller Kamera-Poses verwendet, im zweiten Fall wird der jeweilige Wert im Eingabeparameter für die Berechnung der entsprechenden Kamera-Pose verwendet.

Ausführungsinformationen

Parameter

CamPosXCamPosXCamPosXCamPosXcamPosX (input_control)  real(-array) HTupleHTupleHtuple (real) (double) (double) (double)

X-Koordinate des optischen Zentrums der Kamera.

CamPosYCamPosYCamPosYCamPosYcamPosY (input_control)  real(-array) HTupleHTupleHtuple (real) (double) (double) (double)

Y-Koordinate des optischen Zentrums der Kamera.

CamPosZCamPosZCamPosZCamPosZcamPosZ (input_control)  real(-array) HTupleHTupleHtuple (real) (double) (double) (double)

Z-Koordinate des optischen Zentrums der Kamera.

LookAtXLookAtXLookAtXLookAtXlookAtX (input_control)  real(-array) HTupleHTupleHtuple (real) (double) (double) (double)

X-Koordinate des 3D-Punktes, in dessen Richtung die Kamera gerichtet ist.

LookAtYLookAtYLookAtYLookAtYlookAtY (input_control)  real(-array) HTupleHTupleHtuple (real) (double) (double) (double)

Y-Koordinate des 3D-Punktes, in dessen Richtung die Kamera gerichtet ist.

LookAtZLookAtZLookAtZLookAtZlookAtZ (input_control)  real(-array) HTupleHTupleHtuple (real) (double) (double) (double)

Z-Koordinate des 3D-Punktes, in dessen Richtung die Kamera gerichtet ist.

RefPlaneNormalRefPlaneNormalRefPlaneNormalRefPlaneNormalrefPlaneNormal (input_control)  string-array HTupleHTupleHtuple (string / real) (string / double) (HString / double) (char* / double)

Normalenvektor der Bezugsebene (zeigt nach oben).

Defaultwert: '-y' "-y" "-y" "-y" "-y"

Werteliste: '-x'"-x""-x""-x""-x", '-y'"-y""-y""-y""-y", '-z'"-z""-z""-z""-z", 'x'"x""x""x""x", 'y'"y""y""y""y", 'z'"z""z""z""z"

CamRollCamRollCamRollCamRollcamRoll (input_control)  angle.rad(-array) HTupleHTupleHtuple (real) (double) (double) (double)

Kamerarollwinkel.

Defaultwert: 0

CamPoseCamPoseCamPoseCamPosecamPose (output_control)  pose(-array) HPose, HTupleHTupleHtuple (real / integer) (double / int / long) (double / Hlong) (double / Hlong)

3D-Lage der Kamera.

Ergebnis

Sind die Parameterwerte korrekt, dann liefert create_cam_pose_look_at_pointcreate_cam_pose_look_at_pointCreateCamPoseLookAtPointCreateCamPoseLookAtPointCreateCamPoseLookAtPoint den Wert 2 (H_MSG_TRUE). Gegebenenfalls wird eine Fehlerbehandlung durchgeführt. Wenn die Parameter so gewählt worden sind, dass die 3D-Lage der Kamera nicht eindeutig definiert ist, wird die Fehlermeldung 8940 zurückgegeben.

Vorgänger

convert_point_3d_spher_to_cartconvert_point_3d_spher_to_cartConvertPoint3dSpherToCartConvertPoint3dSpherToCartConvertPoint3dSpherToCart

Alternativen

create_posecreate_poseCreatePoseCreatePoseCreatePose

Modul

3D Metrology