Auf dieser Seite

QQuick3DInstancing Class

Basisklasse zur Definition von Instanztabellen. Mehr...

Header: #include <QQuick3DInstancing>
Since: Qt 6.2
In QML: Instancing
Inherits: QQuick3DObject

Eigenschaften

Öffentliche Funktionen

bool depthSortingEnabled() const
bool hasTransparency() const
int instanceCountOverride() const
QVector3D shadowBoundsMaximum() const
QVector3D shadowBoundsMinimum() const

Öffentliche Slots

void setDepthSortingEnabled(bool enabled)
void setHasTransparency(bool hasTransparency)
void setInstanceCountOverride(int instanceCountOverride)
void setShadowBoundsMaximum(const QVector3D &newShadowBoundsMinimum)
void setShadowBoundsMinimum(const QVector3D &newShadowBoundsMinimum)

Signale

Geschützte Funktionen

virtual QByteArray getInstanceBuffer(int *instanceCount) = 0
void markDirty()

Statische geschützte Mitglieder

QQuick3DInstancing::InstanceTableEntry calculateTableEntry(const QVector3D &position, const QVector3D &scale, const QVector3D &eulerRotation, const QColor &color, const QVector4D &customData = {})
QQuick3DInstancing::InstanceTableEntry calculateTableEntryFromQuaternion(const QVector3D &position, const QVector3D &scale, const QQuaternion &rotation, const QColor &color, const QVector4D &customData = {})

Ausführliche Beschreibung

Die Klasse „QQuick3DInstancing“ kann vererbt werden, um eine benutzerdefinierte Instanztabelle für ein Modell in der Szene „ Qt Quick 3D “ festzulegen.

Diese Klasse ist abstrakt: Um sie zu verwenden, erstellen Sie eine Unterklasse und implementieren Sie ` getInstanceBuffer()`.

Dokumentation der Eigenschaften

depthSortingEnabled : bool

Speichert den Wert für die aktivierte Tiefensortierung der Instanztabelle. Wenn diese Option aktiviert ist, werden die Instanzen von der am weitesten von der Kamera entfernten Instanz zur nächstgelegenen sortiert und gerendert, d. h. von hinten nach vorne. Ist diese Option deaktiviert (Standardeinstellung), werden die Instanzen in der Reihenfolge gerendert, in der sie in der Instanztabelle angegeben sind.

Hinweis: Die Instanzen werden nur untereinander sortiert. Sie werden nicht im Vergleich zu anderen Objekten in der Szene sortiert.

Hinweis: Die Sortierung verlängert die Frame-Vorbereitungszeit, insbesondere bei einer großen Anzahl von Instanzen.

Zugriffsfunktionen:

bool depthSortingEnabled() const
void setDepthSortingEnabled(bool enabled)

Notifier-Signal:

void depthSortingEnabledChanged()

hasTransparency : bool

Setzen Sie diese Eigenschaft auf „true“, wenn die Instanzierungstabelle Alpha-Werte enthält, die beim Rendern des Modells verwendet werden sollen. Diese Eigenschaft hat nur dann Auswirkungen, wenn das Modell undurchsichtig ist: Wenn das Modell einen transparenten „ material “ oder einen „ opacity “ von weniger als eins aufweist, wird in jedem Fall der Alpha-Wert aus der Tabelle verwendet.

Hinweis: Das Aktivieren von Alpha-Blending kann zu Darstellungsproblemen führen, wenn sich Instanzen überlappen. Weitere Informationen finden Sie in der Dokumentation zu Alpha-Blending und Instanzierung.

Zugriffsfunktionen:

bool hasTransparency() const
void setHasTransparency(bool hasTransparency)

Notifier-Signal:

void hasTransparencyChanged()

instanceCountOverride : int

Setzen Sie diese Eigenschaft, um die Anzahl der Instanzen zu begrenzen, ohne die Instanztabelle neu zu generieren oder erneut hochzuladen. Dies ermöglicht eine sehr ressourcenschonende Animation der Anzahl der gerenderten Instanzen.

Zugriffsfunktionen:

int instanceCountOverride() const
void setInstanceCountOverride(int instanceCountOverride)

Benachrichtigungssignal:

void instanceCountOverrideChanged()

[since 6.9] shadowBoundsMaximum : QVector3D

Legt die maximalen Grenzen fest, die bei der Berechnung der Schattenkartengrenzen der Modelle in der Instanztabelle verwendet werden.

Standardwert: (-1, -1, -1)

Hinweis: Diese Eigenschaft ist nur aktiviert, wenn die entsprechenden Komponenten von ` shadowBoundsMinimum ` kleiner sind als die in `shadowBoundsMaximum`. Andernfalls werden die Begrenzungen automatisch berechnet.

Diese Aufzählung wurde in Qt 6.9 eingeführt.

Zugriffsfunktionen:

QVector3D shadowBoundsMaximum() const
void setShadowBoundsMaximum(const QVector3D &newShadowBoundsMinimum)

Notifier-Signal:

void shadowBoundsMaximumChanged()

Siehe auch ` shadowBoundsMinimum`.

[since 6.9] shadowBoundsMinimum : QVector3D

Legt die Mindestgrenzen fest, die bei der Berechnung der Schattenkartengrenzen der Modelle in der Instanztabelle verwendet werden.

Standardwert: (1, 1, 1)

Hinweis: Diese Eigenschaft ist nur aktiviert, wenn die entsprechenden Komponenten von `shadowBoundsMinimum` kleiner sind als die in ` shadowBoundsMaximum`. Andernfalls werden die Grenzen automatisch berechnet.

Diese Aufzählung wurde in Qt 6.9 eingeführt.

Zugriffsfunktionen:

QVector3D shadowBoundsMinimum() const
void setShadowBoundsMinimum(const QVector3D &newShadowBoundsMinimum)

Notifier-Signal:

void shadowBoundsMinimumChanged()

Siehe auch „ shadowBoundsMaximum “.

Dokumentation der Mitgliedsfunktionen

[static protected] QQuick3DInstancing::InstanceTableEntry QQuick3DInstancing::calculateTableEntry(const QVector3D &position, const QVector3D &scale, const QVector3D &eulerRotation, const QColor &color, const QVector4D &customData = {})

Konvertiert die Dateien „ position “, „ scale “, „ eulerRotation “, „ color “ und „ customData “ in das von den Standard-Vertex-Shadern erwartete Instanztabellenformat. Typisches Muster:

QByteArray MyInstanceTable::getInstanceBuffer(int *instanceCount)
{
    QByteArray instanceData;

    ...

    auto entry = calculateTableEntry({xPos, yPos, zPos}, {xScale, yScale, zScale}, {xRot, yRot, zRot}, color, {});
    instanceData.append(reinterpret_cast<const char *>(&entry), sizeof(entry));

Siehe auch calculateTableEntryFromQuaternion.

[static protected] QQuick3DInstancing::InstanceTableEntry QQuick3DInstancing::calculateTableEntryFromQuaternion(const QVector3D &position, const QVector3D &scale, const QQuaternion &rotation, const QColor &color, const QVector4D &customData = {})

Konvertiert die Funktionen „ position “, „ scale “, „ rotation “, „ color “ und „ customData “ in das von den Standard-Vertex-Shadern erwartete Instanztabellenformat.

Dies entspricht der Funktion calculateTableEntry(), mit dem Unterschied, dass die Drehung mithilfe eines Quaternions angegeben wird.

[pure virtual protected] QByteArray QQuick3DInstancing::getInstanceBuffer(int *instanceCount)

Implementieren Sie diese Funktion, um den Inhalt der Instanztabelle zurückzugeben. Die Anzahl der Instanzen sollte in ` instanceCount` zurückgegeben werden. Die Unterklasse ist dafür verantwortlich, das Ergebnis bei Bedarf zwischenzuspeichern. Wenn sich die Instanztabelle ändert, sollte die Unterklasse ` markDirty()` aufrufen.

[protected] void QQuick3DInstancing::markDirty()

Beachten Sie, dass sich die Instanzdaten geändert haben und erneut hochgeladen werden müssen.

Siehe auch getInstanceBuffer und instanceCountOverride.

© 2026 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.