Camera QML Type
Definiert eine abstrakte Basis für Cameras. Mehr...
Import Statement: | import QtQuick3D |
Inherits: | |
Inherited By: |
Eigenschaften
- frustumCullingEnabled : bool
- levelOfDetailBias : real
(since 6.5)
- lookAtNode : Node
Methoden
- vector3d lookAt(QtQuick3D::Node node)
- vector3d lookAt(vector3d scenePos)
- vector3d mapFromViewport(vector3d viewportPos)
- vector3d mapToViewport(vector3d scenePos)
Detaillierte Beschreibung
Eine Kamera definiert, wie der Inhalt der 3D-Szene auf eine 2D-Oberfläche projiziert wird, z. B. auf eine View3D. Eine Szene benötigt mindestens eine Kamera, um ihren Inhalt zu visualisieren.
Es ist möglich, die Kamera wie jede andere räumliche Node in der Szene zu positionieren und zu drehen. Die Position und Ausrichtung der Node bestimmt, wo sich die Kamera in der Szene befindet und in welche Richtung sie blickt. Bei der Standardausrichtung der Kamera zeigt der Vorwärtsvektor entlang der negativen Z-Achse und der Aufwärtsvektor entlang der positiven Y-Achse.
Zusammen mit der Position und der Ausrichtung definiert der Kegelstumpf, welche Teile einer Szene für die Kamera sichtbar sind und wie sie auf die 2D-Oberfläche projiziert werden. Die verschiedenen Kamera-Subtypen bieten mehrere Optionen, um die Form des Kamerastumpfes zu bestimmen.
- PerspectiveCamera bietet eine Kamera mit einem pyramidenförmigen Kegelstumpf, bei dem die Objekte so projiziert werden, dass die weiter von der Kamera entfernten Objekte kleiner erscheinen. Dies ist der am häufigsten verwendete Kameratyp und entspricht der Funktionsweise der meisten Kameras in der realen Welt.
- OrthographicCamera Bei dieser Kamera sind die Linien des Kegelstumpfes parallel, so dass die wahrgenommene Größe eines Objekts nicht von seiner Entfernung zur Kamera abhängt. Typische Anwendungsfälle für diesen Kameratyp sind CAD-Anwendungen (Computer-Assisted Design) und Kartografie.
- FrustumCamera ist ein perspektivischer Kameratyp, bei dem der Kegelstumpf durch die Koordinaten seines Schnittpunkts mit der nahen Ebene frei angepasst werden kann. Er kann nützlich sein, wenn ein asymmetrischer Kamerastumpf benötigt wird.
- CustomCamera ist ein Kameratyp, bei dem die Projektionsmatrix frei angepasst werden kann, und kann für fortgeschrittene Benutzer nützlich sein, die ihre eigene Projektionsmatrix berechnen möchten.
Um den Unterschied zu verdeutlichen, zeigen diese Screenshots dieselbe Szene, wie sie von einer PerspectiveCamera und einer OrthographicCamera projiziert wird. Beachten Sie, dass der rote Kasten kleiner ist als der grüne Kasten im Bild, das mit der perspektivischen Projektion gerendert wurde.
Perspektivische Kamera | Orthografische Kamera |
---|---|
Siehe auch Qt Quick 3D - View3D Beispiel.
Eigenschaft Dokumentation
frustumCullingEnabled : bool |
Wenn diese Eigenschaft auf true
gesetzt ist, werden Objekte außerhalb des Kamerastumpfes herausgefiltert, d. h. sie werden nicht an den Renderer weitergegeben. Standardmäßig ist diese Eigenschaft auf false
eingestellt. Bei Szenen, in denen sich alle oder die meisten Objekte innerhalb des Kamerarahmens befinden, ist die Ausblendung von Objekten ein unnötiger Leistungsaufwand. Bei komplexen Szenen, bei denen sich große Teile außerhalb des Kamerablickfeldes befinden, kann die Aktivierung des Frustum Culling jedoch die Leistung verbessern.
levelOfDetailBias : real |
Diese Eigenschaft ändert die Größe, die ein Modell beim Rendern haben muss, bevor die automatischen Level of Detail-Meshes verwendet werden. Jedes generierte Level-of-Detail-Mesh enthält einen idealen Größenwert für jede Ebene, der angibt, wie viel von der gerenderten Szene aus diesem Mesh bestehen wird. Ein Modell, das nur wenige Pixel auf dem Bildschirm darstellt, benötigt nicht die gesamte Geometrie, um korrekt auszusehen, daher wird in diesem Fall ein Mesh mit geringerer Detailgenauigkeit verwendet. Dieser Wert ist eine Annäherung an den Idealwert, so dass ein Wert kleiner als 1.0
eine noch kleinere gerenderte Größe erfordert, bevor auf eine geringere Detailstufe umgeschaltet wird. Werte über 1.0
führen dazu, dass niedrigere Detailstufen früher verwendet werden. Ein Wert von 0.0
schaltet die Verwendung von Detailstufen vollständig ab.
Der Standardwert ist 1.0
Hinweis: Diese Eigenschaft wirkt sich nur auf Modelle aus, deren Geometrie Detailebenen enthält.
Diese Eigenschaft wurde in Qt 6.5 eingeführt.
Siehe auch Model::levelOfDetailBias.
lookAtNode : Node |
Wenn diese Eigenschaft auf einen non-null
Wert gesetzt ist, wird die Rotation dieser Kamera automatisch aktualisiert, so dass diese Kamera immer auf den angegebenen Knoten schaut, wenn sich die Szenenposition dieser Kamera oder des angegebenen Knotens ändert. Standardmäßig ist diese Eigenschaft auf null
gesetzt.
Siehe auch lookAt.
Methode Dokumentation
vector3d lookAt(QtQuick3D::Node node) |
Setzt den Rotationswert der Kamera so, dass sie auf node zeigt.
Setzt den Rotationswert der Kamera so, dass sie auf scenePos zeigt.
Transformiert viewportPos vom Ansichtsfensterraum (2D) in den globalen Szenenraum (3D).
Die x- und y-Werte von viewportPos müssen normalisiert werden, wobei die obere linke Ecke des Ansichtsfensters bei [0, 0] und die untere rechte Ecke bei [1, 1] liegen muss. Der z-Wert wird als der Abstand von der nahen Clipebene des Kegelstumpfes (clipNear) interpretiert.
Wenn viewportPos nicht erfolgreich auf eine Position in der Szene abgebildet werden kann, wird eine Position von [0, 0, 0] zurückgegeben.
Siehe auch mapToViewport und View3D.mapTo3DScene().
Transformiert scenePos vom globalen Szenenraum (3D) in den Ansichtsfensterraum (2D).
Die zurückgegebene Position ist normalisiert, wobei die obere linke Ecke des Ansichtsfensters bei [0, 0] und die untere rechte Ecke bei [1, 1] liegt. Der zurückgegebene z-Wert enthält den Abstand von der nahen Clipebene des Kegelstumpfes (clipNear) zu scenePos in Szenekoordinaten. Wenn der Abstand negativ ist, befindet sich der Punkt hinter der Kamera.
Wenn scenePos nicht erfolgreich auf eine Position im Ansichtsfenster abgebildet werden kann, wird eine Position von [0, 0, 0] zurückgegeben.
Siehe auch mapFromViewport() und View3D.mapFrom3DScene().
© 2025 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.