Model QML Type
Ermöglicht das Laden von 3D-Modelldaten. Mehr...
Import Statement: | import QtQuick3D |
Inherits: | |
Inherited By: |
Eigenschaften
- bakedLightmap : BakedLightmap
- bounds : Bounds
- castsReflections : bool
(since 6.4)
- castsShadows : bool
- depthBias : real
- geometry : Geometry
- instanceRoot : QtQuick3D::Node
- instancing : QtQuick3D::Instancing
- instancingLodMax : real
- instancingLodMin : real
- inverseBindPoses : List<matrix4x4>
- levelOfDetailBias : real
(since 6.5)
- lightmapBaseResolution : int
- materials : List<QtQuick3D::Material>
- morphTargets : List<QtQuick3D::MorphTarget>
- pickable : bool
- receivesReflections : bool
- receivesShadows : bool
- skeleton : Skeleton
- skin : Skin
- source : url
- usedInBakedLighting : bool
Detaillierte Beschreibung
Das Element "Modell" ermöglicht das Laden eines Meshes und die Änderung seiner Schattierung, indem Materialien hinzugefügt werden. Damit ein Modell gerendert werden kann, benötigt es mindestens ein Mesh und ein Material.
Mesh-Format und eingebaute Primitive
Das Modell kann statische Meshes aus dem Speicher oder einen der eingebauten Primitivtypen laden. Das verwendete Mesh-Format ist ein Laufzeitformat, das der Engine eigen ist, aber zusätzliche Formate werden durch das Asset-Import-Tool Balsam unterstützt.
Die eingebauten Primitive können geladen werden, indem die Eigenschaft source
auf einen der folgenden Werte gesetzt wird: #Rectangle, #Sphere, #Cube, #Cylinder or #Cone
.
Model { source: "#Sphere" }
Benutzerdefinierte Geometrie
Zusätzlich zur Verwendung statischer Meshes können Sie einen custom geometry Provider implementieren, der das Modell zur Laufzeit mit benutzerdefinierten Eckpunktdaten versorgt. Im Beispiel für benutzerdefinierte Geometrie finden Sie ein Beispiel dafür, wie Sie ein benutzerdefiniertes Material für Ihr Modell erstellen und verwenden können.
Materialien
Ein Modell kann aus mehreren Teilmaschen bestehen, von denen jede ihr eigenes Material haben kann. Das Teilnetz verwendet ein Material aus der Liste materials, das seinem Index entspricht. Wenn die Anzahl der Materialien geringer ist als die Anzahl der Teilmaschen, wird das letzte Material in der Liste für die nachfolgenden Teilmaschen verwendet. Dies wird im Beispiel Untermasche demonstriert.
Sie können die folgenden Materialien mit dem Modellelement verwenden: PrincipledMaterial, DefaultMaterial, und CustomMaterial.
Kommissionierung
Beim Picking wird ein Strahl von einer bestimmten Startposition aus durch die Szene geschickt, um herauszufinden, welche Modelle sich mit diesem Strahl schneiden. In Qt Quick 3D wird der Strahl normalerweise von der Ansicht aus unter Verwendung von 2D-Koordinaten gesendet, die aus einem Touch- oder Mausereignis resultieren. Wenn ein Modell von dem Strahl getroffen wurde, wird pickResult mit einem Handle zu dem Modell und Informationen darüber, wo der Strahl das Modell getroffen hat, zurückgegeben. Bei Modellen, die custom geometry verwenden, ist die Auswahl weniger genau als bei statischen Netzdaten, da die Auswahl nur anhand der bounding volume des Modells erfolgt. Wenn der Strahl durch mehr als ein Modell geht, wird das am nächsten gelegene pickable Modell ausgewählt.
Beachten Sie, dass für Modelle, die pickable sein sollen, die Eigenschaft pickable auf true
gesetzt sein muss. Weitere Informationen finden Sie unter Qt Quick 3D - Beispiel für die Auswahl.
Eigenschaft Dokumentation
bakedLightmap : BakedLightmap |
Wenn diese Eigenschaft auf ein gültiges, aktiviertes BakedLightmap Objekt gesetzt ist, erhält das Modell eine Lichtkarte, die beim Backen der Beleuchtung generiert wird; die Lichtkarte wird dann persistent gespeichert. Beim Rendern lädt und verwendet das Modell die zugehörige Lightmap. Der Standardwert ist null.
Hinweis: Wenn eine dauerhaft gespeicherte Lightmap für ein Modell erzeugt werden soll, müssen sowohl bakedLightmap als auch usedInBakedLighting gesetzt werden, um anzuzeigen, dass das Modell nicht nur an der Lightmap-Szene teilnimmt, sondern auch eine vollständige Lightmap gebacken und gespeichert werden soll.
Weitere Informationen über das Backen von Lightmaps finden Sie in der Dokumentation Lightmapper.
Diese Eigenschaft ist sowohl beim Backen als auch bei der Verwendung von Lightmaps relevant. Ein konsistenter Zustand zwischen dem Baking-Lauf und den nachfolgenden Läufen, die die generierten Daten verwenden, ist unerlässlich. Wenn Sie beispielsweise den Schlüssel der Lichtkarte ändern, können Sie die zuvor generierten Daten nicht mehr laden. Eine Ausnahme ist enabled, mit der die Verwendung von Lightmaps dynamisch umgeschaltet werden kann (außerhalb des Backlaufs). Beachten Sie jedoch, dass die gerenderten Ergebnisse von den Einstellungen der Lichter bakeMode in der Szene abhängen.
Siehe auch usedInBakedLighting und Lightmapper.
bounds : Bounds |
Die Grenzen des Modells beschreiben die Ausmaße des Begrenzungsvolumens um das Modell.
Hinweis: Die Begrenzungen sind möglicherweise nicht sofort verfügbar, wenn das Modell erst geladen werden muss.
castsReflections : bool |
Wenn diese Eigenschaft auf true
gesetzt ist, wird das Modell durch Reflektionssonden gerendert und ist in den Reflektionen zu sehen.
Diese Eigenschaft wurde in Qt 6.4 eingeführt.
castsShadows : bool |
Wenn diese Eigenschaft auf true
gesetzt ist, wird die Geometrie dieses Modells beim Rendering für die Shadow Maps verwendet und erzeugt auch Schatten bei Baked Lighting.
Der Standardwert ist true
.
depthBias : real |
Enthält die Tiefenverzerrung des Modells. Die Tiefenverzerrung wird beim Sortieren von Objekten zum Objektabstand von der Kamera addiert. Dies kann verwendet werden, um die Rendering-Reihenfolge zwischen nahe beieinander liegenden Objekten zu erzwingen, die ansonsten in verschiedenen Frames in unterschiedlicher Reihenfolge gerendert werden könnten. Negative Werte bewirken, dass der Sortierwert näher an die Kamera heranrückt, während positive Werte ihn weiter von der Kamera wegbewegen.
geometry : Geometry |
Geben Sie eine benutzerdefinierte Geometrie für das Modell an. Die Model::source muss leer sein, wenn eine benutzerdefinierte Geometrie verwendet wird.
instanceRoot : QtQuick3D::Node |
Diese Eigenschaft definiert den Ursprung des Koordinatensystems der Instanz.
Siehe die Übersichtsdokumentation für eine detaillierte Erklärung.
Siehe auch instancing und Instancing.
instancing : QtQuick3D::Instancing |
Wenn diese Eigenschaft gesetzt ist, wird das Modell nicht normal gerendert. Stattdessen wird eine Anzahl von Instanzen des Modells gerendert, wie in der Instanztabelle definiert.
Siehe auch Instancing.
instancingLodMax : real |
Definiert die maximale Entfernung von der Kamera, in der eine Instanz dieses Modells angezeigt wird. Wird für eine Level-of-Detail-Implementierung verwendet.
instancingLodMin : real |
Definiert die minimale Entfernung von der Kamera, in der eine Instanz dieses Modells angezeigt wird. Wird für eine Level-of-Detail-Implementierung verwendet.
inverseBindPoses : List<matrix4x4> |
Diese Eigenschaft enthält eine Liste von InverseBindPose-Matrizen, die für die Skelettanimation verwendet werden. Jede inverseBindPose-Matrix bedeutet die Umkehrung der globalen Transformation der jeweiligen Joint::index in skeleton, die anfangs verwendet wird.
Hinweis: Diese Eigenschaft wird nur verwendet, wenn die Model::skeleton gültig ist.
Hinweis: Wenn einige der Matrizen nicht gesetzt sind, werden Identitätswerte verwendet.
Siehe auch Joint::index.
levelOfDetailBias : real |
Diese Eigenschaft ändert die Größe, die das Modell haben muss, wenn es gerendert wird, bevor die automatischen Level of Detail-Netze 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 aus, wenn die Geometrie des Modells Detailebenen enthält.
Diese Eigenschaft wurde in Qt 6.5 eingeführt.
Siehe auch Camera::levelOfDetailBias.
lightmapBaseResolution : int |
Legt die ungefähre Größe der Lightmap für dieses Modell fest. Der Standardwert ist 1024, was 1024x1024 als Basisgröße angibt. Die tatsächliche Größe der Lightmap-Textur wird wahrscheinlich anders sein, oft größer, abhängig vom Mesh.
Für einfachere, kleinere Meshes oder wenn bekannt ist, dass die Verwendung einer größeren Lightmap unnötig ist, kann der Wert auf etwas Kleineres gesetzt werden, zum Beispiel 512 oder 256.
Der Mindestwert ist 128.
Diese Einstellung gilt sowohl für dauerhaft gespeicherte als auch für zwischengespeicherte, partielle Lightmaps. Beim Backen von Lightmaps sind alle Modelle, die usedInBakedLighting aktiviert haben, Teil der Szene mit Pfadverfolgung. Daher müssen für alle Modelle das UV-Unwrapping der Lichtkarten und die Rasterisierungsschritte durchgeführt werden, die für die Berechnung der direkten Beleuchtung erforderlich sind, die dann für die indirekten Lichtabstrahlungen in der Szene berücksichtigt werden kann. Für Modelle, die nur zu einer Lightmap beitragen, diese aber nicht speichern, ist der Standardwert jedoch oft ausreichend. Die Feinabstimmung ist für Modelle, die die erzeugten Lightmaps speichern und dann verwenden, wichtiger.
Diese Eigenschaft ist nur beim Backen von Lightmaps relevant. Sie hat keine Auswirkung auf die spätere Verwendung der erzeugten Lightmaps beim Rendern.
Modelle, bei denen während des Asset-Imports (z. B. mit dem Balsam-Werkzeug) bereits UV-Daten für die Lichtabbildung erzeugt wurden, ignorieren diese Eigenschaft, da das UV-Unwrapping der Lichtabbildung und die Auswertung des Größenhinweises für die Lichtabbildung bereits erfolgt sind und beim Backen der Lichtabbildung nicht erneut durchgeführt werden.
materials : List<QtQuick3D::Material> |
Diese Eigenschaft enthält eine Liste von Materialien, die zum Rendern der angegebenen Geometrie verwendet werden. Um etwas zu rendern, muss mindestens ein Material vorhanden sein. Normalerweise sollte es ein Material für jedes in der Quellgeometrie enthaltene Sub-Mesh geben.
Siehe auch Qt Quick 3D - Sub-mesh Example.
morphTargets : List<QtQuick3D::MorphTarget> |
Diese Eigenschaft enthält eine Liste von MorphTarget, die zum Rendern der angegebenen Geometrie verwendet wird. Meshes sollten mindestens ein Attribut unter Positionen, Normalen, Tangenten, Binormalen, Texturkoordinaten und Vertexfarben für die Morph-Ziele haben.
Siehe auch MorphTarget.
pickable : bool |
Diese Eigenschaft steuert, ob das Modell wählbar ist oder nicht. Setzen Sie diese Eigenschaft auf true
, um das Modell wählbar zu machen. Standardmäßig sind Modelle nicht wählbar.
Siehe auch View3D::pick.
receivesReflections : bool |
Wenn diese Eigenschaft auf true
gesetzt ist, nehmen die Materialien des Modells Reflexionsbeiträge von einer Reflexionssonde an. Befindet sich das Modell gleichzeitig in mehr als einer Reflexionssonde, wird die nächstgelegene Reflexionssonde berücksichtigt.
receivesShadows : bool |
Wenn diese Eigenschaft auf true
gesetzt ist, berücksichtigen die Materialien des Modells den Schattenbeitrag von schattenwerfenden Lichtern.
Hinweis: Wenn Lightmapping für dieses Modell aktiviert ist, erzeugen vollständig gebackene Lichter mit der Einstellung Light::bakeMode auf Light.BakeModeAll immer (gebackene) Schatten auf dem Modell, unabhängig vom Wert dieser Eigenschaft.
Der Standardwert ist true
.
skeleton : Skeleton |
Enthält das Skelett für das Modell. Das Skelett wird zusammen mit inverseBindPoses für das Skinning verwendet.
Hinweis: Meshes des Modells müssen sowohl Gelenke als auch Gewichtsattribute haben.
Hinweis: Wenn diese Eigenschaft gesetzt ist, ist die Skinning-Animation aktiviert. Das bedeutet, dass Model auf der Grundlage von Skeleton transformiert wird, wobei die globale Transformation des Modells ignoriert wird.
Siehe auch Model::inverseBindPoses und Qt Quick 3D - Simple Skinning Example.
skin : Skin |
Enthält das Skelett für das Modell. Das Skelett wird für das Skinning verwendet.
Hinweis: Meshes des Modells müssen sowohl Gelenke als auch Gewichtungsattribute haben.
Hinweis: Wenn diese Eigenschaft gesetzt ist, ist die Skinning-Animation aktiviert. Das bedeutet, dass Model auf der Grundlage von Skin::joints transformiert wird und die globale Transformation des Modells ignoriert wird.
Hinweis: Wenn ein Modell sowohl ein Skelett als auch eine Haut hat, wird die Haut verwendet.
Siehe auch Qt Quick 3D - Simple Skinning Example.
source : url |
Diese Eigenschaft definiert den Speicherort der Mesh-Datei, die die Geometrie dieses Modells oder eines der unten aufgeführten eingebauten primitiven Meshes enthält, wie in Mesh format and built-in primitives beschrieben.
- "#Rechteck"
- "#Sphere"
- "#Würfel"
- "#Kegel"
- "#Zylinder"
usedInBakedLighting : bool |
Wenn diese Eigenschaft auf true
gesetzt ist, trägt das Modell zur gebackenen Beleuchtung bei, wie z.B. Lightmaps, zum Beispiel in Form von Schattenwurf oder indirektem Licht. Diese Einstellung ist unabhängig von der Steuerung der Lightmap-Erzeugung für das Modell, verwenden Sie dazu bakedLightmap.
Der Standardwert ist false
.
Hinweis: Der Standardwert ist false, da Designer und Entwickler immer für jedes Modell einzeln prüfen müssen, ob das Objekt geeignet ist, an der gebackenen Beleuchtung teilzunehmen.
Warnung: Modelle mit sich dynamisch ändernden Eigenschaften, z. B. animierte Position, Drehung oder andere Eigenschaften, sind nicht für die Teilnahme an gebackenem Licht geeignet.
Weitere Informationen zum Backen von Lightmaps finden Sie in der Dokumentation Lightmapper.
Diese Eigenschaft ist nur beim Baking von Lightmaps relevant. Sie hat keine Auswirkung auf die Verwendung der erzeugten Lichtabbildungen beim Rendern.
Siehe auch Light::bakeMode, bakedLightmap, Lightmapper, und Lightmaps und Globale Beleuchtung.
© 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.