![]() |
Qt 6.x
The Qt SDK
|
\inmodule QtQuick3D \inherits QQuick3DObject More...
#include <qquick3dinstancing.h>
Classes | |
struct | InstanceTableEntry |
Public Slots | |
void | setInstanceCountOverride (int instanceCountOverride) |
void | setHasTransparency (bool hasTransparency) |
void | setDepthSortingEnabled (bool enabled) |
![]() | |
void | update () |
void | setParentItem (QQuick3DObject *parentItem) |
![]() | |
void | deleteLater () |
\threadsafe | |
Signals | |
void | instanceTableChanged () |
void | instanceNodeDirty () |
void | instanceCountOverrideChanged () |
void | hasTransparencyChanged () |
void | depthSortingEnabledChanged () |
![]() | |
void | parentChanged () |
void | childrenChanged () |
void | stateChanged () |
![]() | |
void | destroyed (QObject *=nullptr) |
This signal is emitted immediately before the object obj is destroyed, after any instances of QPointer have been notified, and cannot be blocked. | |
void | objectNameChanged (const QString &objectName, QPrivateSignal) |
This signal is emitted after the object's name has been changed. | |
Public Member Functions | |
QQuick3DInstancing (QQuick3DObject *parent=nullptr) | |
~QQuick3DInstancing () override | |
QByteArray | instanceBuffer (int *instanceCount) |
int | instanceCountOverride () const |
bool | hasTransparency () const |
bool | depthSortingEnabled () const |
Q_REVISION (6, 3) Q_INVOKABLE QVector3D instancePosition(int index) | |
Q_REVISION (6, 3) Q_INVOKABLE QVector3D instanceScale(int index) | |
Q_REVISION (6, 3) Q_INVOKABLE QQuaternion instanceRotation(int index) | |
Q_REVISION (6, 3) Q_INVOKABLE QColor instanceColor(int index) | |
Q_REVISION (6, 3) Q_INVOKABLE QVector4D instanceCustomData(int index) | |
![]() | |
Q_INVOKABLE | QObject (QObject *parent=nullptr) |
Constructs an object with parent object parent. | |
virtual | ~QObject () |
Destroys the object, deleting all its child objects. | |
virtual bool | event (QEvent *event) |
This virtual function receives events to an object and should return true if the event e was recognized and processed. | |
virtual bool | eventFilter (QObject *watched, QEvent *event) |
Filters events if this object has been installed as an event filter for the watched object. | |
QString | objectName () const |
Q_WEAK_OVERLOAD void | setObjectName (const QString &name) |
Sets the object's name to name. | |
void | setObjectName (QAnyStringView name) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
QBindable< QString > | bindableObjectName () |
bool | isWidgetType () const |
Returns true if the object is a widget; otherwise returns false . | |
bool | isWindowType () const |
Returns true if the object is a window; otherwise returns false . | |
bool | isQuickItemType () const |
Returns true if the object is a QQuickItem; otherwise returns false . | |
bool | signalsBlocked () const noexcept |
Returns true if signals are blocked; otherwise returns false . | |
bool | blockSignals (bool b) noexcept |
If block is true, signals emitted by this object are blocked (i.e., emitting a signal will not invoke anything connected to it). | |
QThread * | thread () const |
Returns the thread in which the object lives. | |
void | moveToThread (QThread *thread) |
Changes the thread affinity for this object and its children. | |
int | startTimer (int interval, Qt::TimerType timerType=Qt::CoarseTimer) |
This is an overloaded function that will start a timer of type timerType and a timeout of interval milliseconds. | |
int | startTimer (std::chrono::milliseconds time, Qt::TimerType timerType=Qt::CoarseTimer) |
void | killTimer (int id) |
Kills the timer with timer identifier, id. | |
template<typename T > | |
T | findChild (const QString &aName=QString(), Qt::FindChildOptions options=Qt::FindChildrenRecursively) const |
Returns the child of this object that can be cast into type T and that is called name, or \nullptr if there is no such object. | |
template<typename T > | |
QList< T > | findChildren (const QString &aName, Qt::FindChildOptions options=Qt::FindChildrenRecursively) const |
Returns all children of this object with the given name that can be cast to type T, or an empty list if there are no such objects. | |
template<typename T > | |
QList< T > | findChildren (Qt::FindChildOptions options=Qt::FindChildrenRecursively) const |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. | |
const QObjectList & | children () const |
Returns a list of child objects. | |
void | setParent (QObject *parent) |
Makes the object a child of parent. | |
void | installEventFilter (QObject *filterObj) |
Installs an event filter filterObj on this object. | |
void | removeEventFilter (QObject *obj) |
Removes an event filter object obj from this object. | |
QMetaObject::Connection | connect (const QObject *sender, const char *signal, const char *member, Qt::ConnectionType type=Qt::AutoConnection) const |
bool | disconnect (const char *signal=nullptr, const QObject *receiver=nullptr, const char *member=nullptr) const |
bool | disconnect (const QObject *receiver, const char *member=nullptr) const |
void | dumpObjectTree () const |
Dumps a tree of children to the debug output. | |
void | dumpObjectInfo () const |
Dumps information about signal connections, etc. | |
bool | setProperty (const char *name, const QVariant &value) |
Sets the value of the object's name property to value. | |
bool | setProperty (const char *name, QVariant &&value) |
QVariant | property (const char *name) const |
Returns the value of the object's name property. | |
QList< QByteArray > | dynamicPropertyNames () const |
QBindingStorage * | bindingStorage () |
const QBindingStorage * | bindingStorage () const |
QObject * | parent () const |
Returns a pointer to the parent object. | |
bool | inherits (const char *classname) const |
Returns true if this object is an instance of a class that inherits className or a QObject subclass that inherits className; otherwise returns false . | |
![]() | |
QQmlParserStatus () | |
virtual | ~QQmlParserStatus () |
virtual void | classBegin ()=0 |
Invoked after class creation, but before any properties have been set. | |
virtual void | componentComplete ()=0 |
Invoked after the root component that caused this instantiation has completed construction. | |
Protected Member Functions | |
virtual QByteArray | getInstanceBuffer (int *instanceCount)=0 |
Implement this function to return the contents of the instance table. | |
void | markDirty () |
Mark that the instance data has changed and must be uploaded again. | |
QSSGRenderGraphObject * | updateSpatialNode (QSSGRenderGraphObject *node) override |
![]() | |
virtual QSSGRenderGraphObject * | updateSpatialNode (QSSGRenderGraphObject *node) |
virtual void | markAllDirty () |
virtual void | itemChange (ItemChange, const ItemChangeData &) |
QQuick3DObject (QQuick3DObjectPrivate &dd, QQuick3DObject *parent=nullptr) | |
void | classBegin () override |
Invoked after class creation, but before any properties have been set. | |
void | componentComplete () override |
Invoked after the root component that caused this instantiation has completed construction. | |
bool | isComponentComplete () const |
virtual void | preSync () |
![]() | |
QObject * | sender () const |
Returns a pointer to the object that sent the signal, if called in a slot activated by a signal; otherwise it returns \nullptr. | |
int | senderSignalIndex () const |
int | receivers (const char *signal) const |
Returns the number of receivers connected to the signal. | |
bool | isSignalConnected (const QMetaMethod &signal) const |
virtual void | timerEvent (QTimerEvent *event) |
This event handler can be reimplemented in a subclass to receive timer events for the object. | |
virtual void | childEvent (QChildEvent *event) |
This event handler can be reimplemented in a subclass to receive child events. | |
virtual void | customEvent (QEvent *event) |
This event handler can be reimplemented in a subclass to receive custom events. | |
virtual void | connectNotify (const QMetaMethod &signal) |
virtual void | disconnectNotify (const QMetaMethod &signal) |
QObject (QObjectPrivate &dd, QObject *parent=nullptr) | |
Static Protected Member Functions | |
static InstanceTableEntry | calculateTableEntry (const QVector3D &position, const QVector3D &scale, const QVector3D &eulerRotation, const QColor &color, const QVector4D &customData={}) |
Converts the position scale eulerRotation color and customData to the instance table format expected by the standard vertex shaders. | |
static InstanceTableEntry | calculateTableEntryFromQuaternion (const QVector3D &position, const QVector3D &scale, const QQuaternion &rotation, const QColor &color, const QVector4D &customData={}) |
Converts the position scale rotation color and customData to the instance table format expected by the standard vertex shaders. | |
Properties | |
int | instanceCountOverride |
bool | hasTransparency |
\qmlproperty bool Instancing::hasTransparency | |
bool | depthSortingEnabled |
\qmlproperty bool Instancing::depthSortingEnabled | |
![]() | |
QQuick3DObject * | parent |
\qmlproperty Object3D QtQuick3D::Object3D::parent This property holds the parent of the Object3D in a 3D scene. | |
![]() | |
QString | objectName |
the name of this object | |
Additional Inherited Members | |
![]() | |
static QMetaObject::Connection | connect (const QObject *sender, const char *signal, const QObject *receiver, const char *member, Qt::ConnectionType=Qt::AutoConnection) |
\threadsafe | |
static QMetaObject::Connection | connect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &method, Qt::ConnectionType type=Qt::AutoConnection) |
template<typename Func1 , typename Func2 > | |
static QMetaObject::Connection | connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::ContextTypeForFunctor< Func2 >::ContextType *context, Func2 &&slot, Qt::ConnectionType type=Qt::AutoConnection) |
template<typename Func1 , typename Func2 > | |
static QMetaObject::Connection | connect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, Func2 &&slot) |
static bool | disconnect (const QObject *sender, const char *signal, const QObject *receiver, const char *member) |
\threadsafe | |
static bool | disconnect (const QObject *sender, const QMetaMethod &signal, const QObject *receiver, const QMetaMethod &member) |
static bool | disconnect (const QMetaObject::Connection &) |
Disconnect a connection. | |
template<typename Func1 , typename Func2 > | |
static bool | disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const typename QtPrivate::FunctionPointer< Func2 >::Object *receiver, Func2 slot) |
template<typename Func1 > | |
static bool | disconnect (const typename QtPrivate::FunctionPointer< Func1 >::Object *sender, Func1 signal, const QObject *receiver, void **zero) |
![]() | |
QScopedPointer< QObjectData > | d_ptr |
![]() | |
template< class T > T | qobject_cast (const QObject *object) |
Returns the given object cast to type T if the object is of type T (or of a subclass); otherwise returns \nullptr. | |
template< typename T > T | qFindChildqFindChildren (const QObject *obj, const QString &name)() |
template< typename T > QList< T > | qFindChildrenqFindChildren (const QObject *obj, const QString &name)() |
QObjectList | |
\macro Q_CLASSINFO(Name, Value) | |
\inmodule QtQuick3D \inherits QQuick3DObject
Base class for defining instance tables.
The QQuick3DInstancing class can be inherited to specify a custom instance table for a Model in the Qt Quick 3D scene.
This class is abstract: To use it, create a subclass and implement \l getInstanceBuffer().
Definition at line 16 of file qquick3dinstancing.h.
|
explicit |
Definition at line 124 of file qquick3dinstancing.cpp.
|
override |
Definition at line 129 of file qquick3dinstancing.cpp.
|
staticprotected |
Converts the position scale eulerRotation color and customData to the instance table format expected by the standard vertex shaders.
Typical pattern:
Definition at line 422 of file qquick3dinstancing.cpp.
References calculate(), and position().
Referenced by QQuick3DParticleInstanceTable::addInstance(), and QQuick3DFileInstancing::loadFromXmlFile().
|
staticprotected |
Converts the position scale rotation color and customData to the instance table format expected by the standard vertex shaders.
This is the same as calculateTableEntry(), except for using a quaternion to specify the rotation.
Definition at line 440 of file qquick3dinstancing.cpp.
References position(), QQuaternion::toRotationMatrix(), and xform.
Referenced by QQuick3DFileInstancing::loadFromXmlFile().
bool QQuick3DInstancing::depthSortingEnabled | ( | ) | const |
Definition at line 158 of file qquick3dinstancing.cpp.
References d.
|
signal |
|
protectedpure virtual |
Implement this function to return the contents of the instance table.
The number of instances should be returned in instanceCount. The subclass is responsible for caching the result if necessary. If the instance table changes, the subclass should call markDirty().
Implemented in QQuick3DRandomInstancing, QQuick3DInstanceList, QQuick3DFileInstancing, and QQuick3DParticleInstanceTable.
Referenced by instanceBuffer(), and updateSpatialNode().
bool QQuick3DInstancing::hasTransparency | ( | ) | const |
Definition at line 152 of file qquick3dinstancing.cpp.
References d.
|
signal |
QByteArray QQuick3DInstancing::instanceBuffer | ( | int * | instanceCount | ) |
Returns the content of the instancing table for testing purposes.
Definition at line 137 of file qquick3dinstancing.cpp.
References d, getInstanceBuffer(), instanceCount, and qMin().
int QQuick3DInstancing::instanceCountOverride | ( | ) | const |
Definition at line 146 of file qquick3dinstancing.cpp.
References d.
|
signal |
|
signal |
Referenced by QQuick3DModel::setInstancing(), and updateSpatialNode().
|
signal |
Referenced by markDirty(), and InstanceModel::setInstancing().
|
protected |
Mark that the instance data has changed and must be uploaded again.
Definition at line 334 of file qquick3dinstancing.cpp.
References QQuick3DObjectPrivate::Content, d, emit, and instanceTableChanged().
Referenced by QQuick3DParticleInstanceTable::commit(), QQuick3DRandomInstancing::setColor(), QQuick3DRandomInstancing::setColorModel(), QQuick3DRandomInstancing::setCustomData(), QQuick3DRandomInstancing::setInstanceCount(), QQuick3DRandomInstancing::setPosition(), QQuick3DRandomInstancing::setRandomSeed(), QQuick3DRandomInstancing::setRotation(), QQuick3DRandomInstancing::setScale(), and QQuick3DFileInstancing::setSource().
QQuick3DInstancing::Q_REVISION | ( | 6 | , |
3 | |||
) |
QQuick3DInstancing::Q_REVISION | ( | 6 | , |
3 | |||
) |
QQuick3DInstancing::Q_REVISION | ( | 6 | , |
3 | |||
) |
QQuick3DInstancing::Q_REVISION | ( | 6 | , |
3 | |||
) |
QQuick3DInstancing::Q_REVISION | ( | 6 | , |
3 | |||
) |
|
slot |
Definition at line 317 of file qquick3dinstancing.cpp.
References QQuick3DObjectPrivate::Content, d, depthSortingEnabledChanged(), emit, and enabled.
|
slot |
Definition at line 306 of file qquick3dinstancing.cpp.
References QQuick3DObjectPrivate::Content, d, emit, hasTransparency, and hasTransparencyChanged().
|
slot |
Definition at line 294 of file qquick3dinstancing.cpp.
References QQuick3DObjectPrivate::Content, d, emit, instanceCountOverride, and instanceCountOverrideChanged().
|
overrideprotectedvirtual |
Reimplemented from QQuick3DObject.
Definition at line 342 of file qquick3dinstancing.cpp.
References d, emit, getInstanceBuffer(), instanceNodeDirty(), QQuick3DObject::markAllDirty(), qMin(), and QQuick3DObject::updateSpatialNode().
|
readwrite |
\qmlproperty bool Instancing::depthSortingEnabled
Holds the depth sorting enabled value for the instance table. When enabled, instances are sorted and rendered from the furthest instance from the camera to the nearest i.e. back-to-front. If disabled, which is the default, instances are rendered in the order they are specified in the instance table.
Holds the depth sorting enabled value for the instance table. When enabled, instances are sorted and rendered from the furthest instance from the camera to the nearest i.e. back-to-front. If disabled, which is the default, instances are rendered in the order they are specified in the instance table.
Definition at line 83 of file qquick3dinstancing.h.
|
readwrite |
\qmlproperty bool Instancing::hasTransparency
Set this property to true if the instancing table contains alpha values that should be used when rendering the model. This property only makes a difference if the model is opaque: If the model has a transparent \l{Model::materials}{material}, or an \l{Node::opacity}{opacity} less than one, the alpha value from the table will be used regardless.
Set this property to true if the instancing table contains alpha values that should be used when rendering the model. This property only makes a difference if the model is opaque: If the model has a transparent \l{Model::materials}{material}, or an \l{Node::opacity}{opacity} less than one, the alpha value from the table will be used regardless.
Definition at line 83 of file qquick3dinstancing.h.
Referenced by setHasTransparency().
|
readwrite |
Definition at line 83 of file qquick3dinstancing.h.
Referenced by setInstanceCountOverride().