![]() |
Qt 6.x
The Qt SDK
|
#include <randominstancing_p.h>
Public Types | |
enum class | ColorModel { RGB , HSV , HSL } |
Public Slots | |
void | setInstanceCount (int instanceCount) |
void | setRandomSeed (int randomSeed) |
void | setPosition (QQuick3DInstanceRange *position) |
void | setScale (QQuick3DInstanceRange *scale) |
void | setRotation (QQuick3DInstanceRange *rotation) |
void | setColor (QQuick3DInstanceRange *color) |
void | setCustomData (QQuick3DInstanceRange *customData) |
void | setColorModel (ColorModel colorModel) |
![]() | |
void | setInstanceCountOverride (int instanceCountOverride) |
void | setHasTransparency (bool hasTransparency) |
void | setDepthSortingEnabled (bool enabled) |
![]() | |
void | update () |
void | setParentItem (QQuick3DObject *parentItem) |
![]() | |
void | deleteLater () |
\threadsafe | |
Signals | |
void | instanceCountChanged () |
void | randomSeedChanged () |
void | positionChanged () |
void | scaleChanged () |
void | rotationChanged () |
void | colorChanged () |
void | customDataChanged () |
void | colorModelChanged () |
![]() | |
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 | |
QQuick3DRandomInstancing (QQuick3DObject *parent=nullptr) | |
\qmltype InstanceRange \inherits Object3D \inqmlmodule QtQuick3D.Helpers | |
~QQuick3DRandomInstancing () | |
QByteArray | getInstanceBuffer (int *instanceCount) override |
Implement this function to return the contents of the instance table. | |
int | instanceCount () const |
int | randomSeed () const |
QQuick3DInstanceRange * | position () const |
QQuick3DInstanceRange * | scale () const |
QQuick3DInstanceRange * | rotation () const |
QQuick3DInstanceRange * | color () const |
QQuick3DInstanceRange * | customData () const |
ColorModel | colorModel () const |
![]() | |
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. | |
Properties | |
int | instanceCount |
QQuick3DInstanceRange * | position |
QQuick3DInstanceRange * | scale |
QQuick3DInstanceRange * | rotation |
QQuick3DInstanceRange * | color |
ColorModel | colorModel |
QQuick3DInstanceRange * | customData |
int | randomSeed |
![]() | |
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) |
![]() | |
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 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. | |
![]() | |
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) | |
Definition at line 73 of file randominstancing_p.h.
|
strong |
Enumerator | |
---|---|
RGB | |
HSV | |
HSL |
Definition at line 91 of file randominstancing_p.h.
|
explicit |
\qmltype InstanceRange \inherits Object3D \inqmlmodule QtQuick3D.Helpers
Specifies a range for RandomInstancing.
The InstanceRange QML type is used to specify the range of variation for RandomInstancing attributes.
\qmlproperty Variant InstanceRange::from
This property specifies the lower bound of the range. The type needs to match the type of the attribute that this range is applied to.
\qmlproperty Variant InstanceRange::to
This property specifies the upper bound of the range. The type needs to match the type of the attribute that this range is applied to.
\qmlproperty bool InstanceRange::proportional
This property determines whether the components of the attribute vary proportionally or independently. The default value is true
, meaning that all components are independent.
For example, the following defines a scaling range that preserves the aspect ratio of the model: \qml InstanceRange { from: Qt.vector3d(1, 1, 1) to: Qt.vector3d(5, 5, 5) proportional: true } \endqml
This defines a greyscale color range: \qml InstanceRange { from: "black" to: "white" proportional: true } \endqml
While the following defines a range that covers all colors \qml InstanceRange { from: "black" to: "white" } \endqml
\qmltype RandomInstancing \inherits Instancing \inqmlmodule QtQuick3D.Helpers
Generates a random instancing table.
The RandomInstancing type provides an easy way to generate a large number of random instances within defined bounds. The number of instances is defined by the \l instanceCount property. The bounds are defined by the properties \l position, \l scale, \l rotation, \l color, and \l customData.
\qmlproperty int RandomInstancing::instanceCount
The instanceCount property specifies the number of instances to generate. Changing this value will regenerate the whole table.
\qmlproperty int RandomInstancing::randomSeed
This property defines the seed for the random number generator. Setting this to a value different from -1 guarantees that the instance table will have the same content each time it is generated. Note that adding or changing attributes may cause a completely different table to be generated.
The default value is -1, causing the table to get a new random value each time it is generated.
\qmlproperty InstanceRange RandomInstancing::position
The position property defines the geometrical bounds of the generated instances. The default value is empty, causing a generated position of {[0, 0, 0]}.
\qmlproperty InstanceRange RandomInstancing::scale
The scale property defines the scaling limits for the generated instances. The type is \l vector3d. Set \l {InstanceRange::proportional}{InstanceRange.proportional} to true
for uniform scaling. The default value is empty, causing no scaling to be applied.
\qmlproperty InstanceRange RandomInstancing::rotation
The rotation property defines the rotation range for the generated instances. The type is \l vector3d, corresponding to a Euler rotation vector {[xRotation, yRotation, zRotation]}. The default value is empty, causing no rotation to be applied.
\qmlproperty InstanceRange RandomInstancing::color
The color property defines the color variation range for the generated instances. The type is \l color. The default value is empty, causing the color to be white.
Setting the colorModel property makes it possible to select only saturated colors, for example.
\qmlproperty InstanceRange RandomInstancing::customData
The customData property defines the custom data variation range for the generated instances. The type is \l vector4d. The default value is empty, causing causing the generated data to be {[0, 0, 0, 0]}.
\qmlproperty enumeration RandomInstancing::colorModel
This property controls how the color range is interpreted.
The instance colors are generated component by component within the range determined by the from and to colors. The color model determines how those components are defined.
\value RandomInstancing.RGB The components are red, green, blue, and alpha, according to the RGB color model. \value RandomInstancing.HSV The components are hue, saturation, value, and alpha, according to the \l{QColor::The HSV Color Model}{HSV Color Model}. \value RandomInstancing.HSL The components are hue, saturation, lightness, and alpha,, according to the \l{QColor::The HSL Color Model}{HSL Color Model}.
As an example, the following color range \qml color: InstanceRange { from: Qt.hsva(0, 0.1, 0.8, 1) to: Qt.hsva(1, 0.3, 1, 1) } \endqml will generate a full range of pastel colors when using the HSV
color model, but only shades of pink when using the RGB
color model.
The default value is RandomInstancing.RGB
Definition at line 180 of file randominstancing.cpp.
QQuick3DRandomInstancing::~QQuick3DRandomInstancing | ( | ) |
Definition at line 186 of file randominstancing.cpp.
|
inline |
Definition at line 124 of file randominstancing_p.h.
|
signal |
|
inline |
Definition at line 134 of file randominstancing_p.h.
|
signal |
|
inline |
Definition at line 129 of file randominstancing_p.h.
|
signal |
|
overridevirtual |
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().
Implements QQuick3DInstancing.
Definition at line 369 of file randominstancing.cpp.
References instanceCount.
|
inline |
Definition at line 99 of file randominstancing_p.h.
|
signal |
|
inline |
Definition at line 109 of file randominstancing_p.h.
|
signal |
|
inline |
Definition at line 104 of file randominstancing_p.h.
|
signal |
|
inline |
Definition at line 119 of file randominstancing_p.h.
|
signal |
|
inline |
Definition at line 114 of file randominstancing_p.h.
|
signal |
|
slot |
Definition at line 261 of file randominstancing.cpp.
References QQuick3DInstanceRange::changed(), color, colorChanged(), QObject::connect(), QObject::destroyed(), disconnect(), emit, and QQuick3DInstancing::markDirty().
|
slot |
Definition at line 296 of file randominstancing.cpp.
References colorModel, colorModelChanged(), emit, and QQuick3DInstancing::markDirty().
|
slot |
Definition at line 279 of file randominstancing.cpp.
References QQuick3DInstanceRange::changed(), QObject::connect(), customData, customDataChanged(), QObject::destroyed(), disconnect(), emit, and QQuick3DInstancing::markDirty().
|
slot |
Definition at line 190 of file randominstancing.cpp.
References instanceCount, and QQuick3DInstancing::markDirty().
|
slot |
Definition at line 210 of file randominstancing.cpp.
References QQuick3DInstanceRange::changed(), QObject::connect(), QObject::destroyed(), disconnect(), emit, QQuick3DInstancing::markDirty(), position, and positionChanged().
|
slot |
Definition at line 199 of file randominstancing.cpp.
References emit, QQuick3DInstancing::markDirty(), randomSeed, and randomSeedChanged().
|
slot |
Definition at line 244 of file randominstancing.cpp.
References QQuick3DInstanceRange::changed(), QObject::connect(), QObject::destroyed(), disconnect(), emit, QQuick3DInstancing::markDirty(), rotation, and rotationChanged().
|
slot |
Definition at line 227 of file randominstancing.cpp.
References QQuick3DInstanceRange::changed(), QObject::connect(), QObject::destroyed(), disconnect(), emit, QQuick3DInstancing::markDirty(), scale, and scaleChanged().
|
readwrite |
Definition at line 69 of file randominstancing_p.h.
Referenced by setColor().
|
readwrite |
Definition at line 69 of file randominstancing_p.h.
Referenced by setColorModel().
|
readwrite |
Definition at line 69 of file randominstancing_p.h.
Referenced by setCustomData().
|
readwrite |
Definition at line 69 of file randominstancing_p.h.
Referenced by getInstanceBuffer(), and setInstanceCount().
|
readwrite |
Definition at line 69 of file randominstancing_p.h.
Referenced by setPosition().
|
readwrite |
Definition at line 69 of file randominstancing_p.h.
Referenced by setRandomSeed().
|
readwrite |
Definition at line 69 of file randominstancing_p.h.
Referenced by setRotation().
|
readwrite |
Definition at line 69 of file randominstancing_p.h.
Referenced by setScale().