Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
QQuick3DRandomInstancing Class Reference

#include <randominstancing_p.h>

Inheritance diagram for QQuick3DRandomInstancing:
Collaboration diagram for QQuick3DRandomInstancing:

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)
Public Slots inherited from QQuick3DInstancing
void setInstanceCountOverride (int instanceCountOverride)
void setHasTransparency (bool hasTransparency)
void setDepthSortingEnabled (bool enabled)
 Q_REVISION (6, 9) void setShadowBoundsMinimum(const QVector3D &newShadowBoundsMinimum)
 Q_REVISION (6, 9) void setShadowBoundsMaximum(const QVector3D &newShadowBoundsMinimum)
Public Slots inherited from QQuick3DObject
void update ()
void setParentItem (QQuick3DObject *parentItem)
Public Slots inherited from QObject
void deleteLater ()
 \threadsafe

Signals

void instanceCountChanged ()
void randomSeedChanged ()
void positionChanged ()
void scaleChanged ()
void rotationChanged ()
void colorChanged ()
void customDataChanged ()
void colorModelChanged ()
void gridSpacingChanged ()
Signals inherited from QQuick3DInstancing
void instanceTableChanged ()
void instanceNodeDirty ()
void instanceCountOverrideChanged ()
void hasTransparencyChanged ()
void depthSortingEnabledChanged ()
 Q_REVISION (6, 9) void shadowBoundsMinimumChanged()
 Q_REVISION (6, 9) void shadowBoundsMaximumChanged()
Signals inherited from QQuick3DObject
void parentChanged ()
void childrenChanged ()
void stateChanged ()
Signals inherited from QObject
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
QQuick3DInstanceRangeposition () const
QQuick3DInstanceRangescale () const
QQuick3DInstanceRangerotation () const
QQuick3DInstanceRangecolor () const
QQuick3DInstanceRangecustomData () const
ColorModel colorModel () const
QVector3D gridSpacing () const
void setGridSpacing (const QVector3D &newGridSpacing)
Public Member Functions inherited from QQuick3DInstancing
 QQuick3DInstancing (QQuick3DObject *parent=nullptr)
 ~QQuick3DInstancing () override
QByteArray instanceBuffer (int *instanceCount)
int instanceCountOverride () const
bool hasTransparency () const
bool depthSortingEnabled () const
 Q_REVISION (6, 9) QVector3D shadowBoundsMinimum() const
 Q_REVISION (6, 9) QVector3D shadowBoundsMaximum() 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)
Public Member Functions inherited from QObject
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< QStringbindableObjectName ()
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 isQmlObjectType () const
 Returns whether the object has been created by the QML engine or ownership has been explicitly set via QJSEngine::setObjectOwnership().
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).
QThreadthread () const
 Returns the thread in which the object lives.
bool moveToThread (QThread *thread QT6_DECL_NEW_OVERLOAD_TAIL)
 Changes the thread affinity for this object and its children and returns true on success.
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::nanoseconds time, Qt::TimerType timerType=Qt::CoarseTimer)
void killTimer (int id)
 Kills the timer with timer identifier, id.
void killTimer (Qt::TimerId id)
template<typename T>
findChild (QAnyStringView aName, 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 (QAnyStringView 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>
findChild (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.
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 QObjectListchildren () 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< QByteArraydynamicPropertyNames () const
QBindingStoragebindingStorage ()
const QBindingStoragebindingStorage () const
QObjectparent () 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.
Public Member Functions inherited from QQmlParserStatus
 QQmlParserStatus ()
virtual ~QQmlParserStatus ()

Properties

int instanceCount
QQuick3DInstanceRangeposition
QQuick3DInstanceRangescale
QQuick3DInstanceRangerotation
QQuick3DInstanceRangecolor
ColorModel colorModel
QQuick3DInstanceRangecustomData
QVector3D gridSpacing
int randomSeed
Properties inherited from QQuick3DInstancing
int instanceCountOverride
bool hasTransparency
 \qmlproperty bool Instancing::hasTransparency
bool depthSortingEnabled
 \qmlproperty bool Instancing::depthSortingEnabled
QVector3D shadowBoundsMinimum
QVector3D shadowBoundsMaximum
Properties inherited from QQuick3DObject
QQuick3DObjectparent
 \qmlproperty Object3D QtQuick3D::Object3D::parent This property holds the parent of the Object3D in a 3D scene.
Properties inherited from QObject
QString objectName
 the name of this object

Additional Inherited Members

Static Public Member Functions inherited from QObject
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)
Protected Member Functions inherited from QQuick3DInstancing
void markDirty ()
 Mark that the instance data has changed and must be uploaded again.
QSSGRenderGraphObjectupdateSpatialNode (QSSGRenderGraphObject *node) override
Protected Member Functions inherited from QQuick3DObject
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 ()
Protected Member Functions inherited from QObject
QObjectsender () 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 inherited from QQuick3DInstancing
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.
Protected Attributes inherited from QObject
QScopedPointer< QObjectDatad_ptr

Detailed Description

Definition at line 73 of file randominstancing_p.h.

Member Enumeration Documentation

◆ ColorModel

Enumerator
RGB 
HSV 
HSL 

Definition at line 93 of file randominstancing_p.h.

Constructor & Destructor Documentation

◆ QQuick3DRandomInstancing()

QT_BEGIN_NAMESPACE QQuick3DRandomInstancing::QQuick3DRandomInstancing ( QQuick3DObject * parent = nullptr)
explicit

\qmltype InstanceRange \inherits Object3D \inqmlmodule QtQuick3D.Helpers

Since
6.2

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

Since
6.2

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.

See also
InstanceList

\qmlproperty int RandomInstancing::instanceCount

The instanceCount property specifies the number of instances to generate. Changing this value will regenerate the whole table.

See also
randomSeed

\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]}.

See also
color, rotation, scale, customData

\qmlproperty vector3d RandomInstancing::gridSpacing

Since
6.9

The gridSpacing property defines the minimum spacing between instances, ensuring they do not overlap. Each position will be separated by at least the value specified in gridSpacing.

If the specified gridSpacing cannot accommodate the requested number of instances, the instanceCount property will be reduced to the number of instances that can be placed without overlap.

Note
The gridSpacing property affects only the position of instances. Rotation and scaling applied to instances are not considered in the spacing algorithm.

The default value is {[0, 0, 0]}, which imposes no restriction on overlapping instances.

See also
position

\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.

See also
position, color, rotation, customData

\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.

See also
position, color, scale, customData

\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.

See also
position, rotation, scale, customData

\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]}.

See also
position, color, rotation, scale

\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

See also
RandomInstancing::color

Definition at line 198 of file randominstancing.cpp.

◆ ~QQuick3DRandomInstancing()

QQuick3DRandomInstancing::~QQuick3DRandomInstancing ( )

Definition at line 204 of file randominstancing.cpp.

Member Function Documentation

◆ color()

QQuick3DInstanceRange * QQuick3DRandomInstancing::color ( ) const
inline

Definition at line 126 of file randominstancing_p.h.

◆ colorChanged

void QQuick3DRandomInstancing::colorChanged ( )
signal

◆ colorModel()

ColorModel QQuick3DRandomInstancing::colorModel ( ) const
inline

Definition at line 136 of file randominstancing_p.h.

◆ colorModelChanged

void QQuick3DRandomInstancing::colorModelChanged ( )
signal

◆ customData()

QQuick3DInstanceRange * QQuick3DRandomInstancing::customData ( ) const
inline

Definition at line 131 of file randominstancing_p.h.

◆ customDataChanged

void QQuick3DRandomInstancing::customDataChanged ( )
signal

◆ getInstanceBuffer()

QByteArray QQuick3DRandomInstancing::getInstanceBuffer ( int * instanceCount)
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 388 of file randominstancing.cpp.

◆ gridSpacing()

QVector3D QQuick3DRandomInstancing::gridSpacing ( ) const

Definition at line 591 of file randominstancing.cpp.

◆ gridSpacingChanged

void QQuick3DRandomInstancing::gridSpacingChanged ( )
signal

◆ instanceCount()

int QQuick3DRandomInstancing::instanceCount ( ) const
inline

Definition at line 101 of file randominstancing_p.h.

◆ instanceCountChanged

void QQuick3DRandomInstancing::instanceCountChanged ( )
signal

◆ position()

QQuick3DInstanceRange * QQuick3DRandomInstancing::position ( ) const
inline

Definition at line 111 of file randominstancing_p.h.

◆ positionChanged

void QQuick3DRandomInstancing::positionChanged ( )
signal

◆ randomSeed()

int QQuick3DRandomInstancing::randomSeed ( ) const
inline

Definition at line 106 of file randominstancing_p.h.

◆ randomSeedChanged

void QQuick3DRandomInstancing::randomSeedChanged ( )
signal

◆ rotation()

QQuick3DInstanceRange * QQuick3DRandomInstancing::rotation ( ) const
inline

Definition at line 121 of file randominstancing_p.h.

◆ rotationChanged

void QQuick3DRandomInstancing::rotationChanged ( )
signal

◆ scale()

QQuick3DInstanceRange * QQuick3DRandomInstancing::scale ( ) const
inline

Definition at line 116 of file randominstancing_p.h.

◆ scaleChanged

void QQuick3DRandomInstancing::scaleChanged ( )
signal

◆ setColor

void QQuick3DRandomInstancing::setColor ( QQuick3DInstanceRange * color)
slot

Definition at line 280 of file randominstancing.cpp.

◆ setColorModel

void QQuick3DRandomInstancing::setColorModel ( QQuick3DRandomInstancing::ColorModel colorModel)
slot

Definition at line 315 of file randominstancing.cpp.

◆ setCustomData

void QQuick3DRandomInstancing::setCustomData ( QQuick3DInstanceRange * customData)
slot

Definition at line 298 of file randominstancing.cpp.

◆ setGridSpacing()

void QQuick3DRandomInstancing::setGridSpacing ( const QVector3D & newGridSpacing)

Definition at line 596 of file randominstancing.cpp.

◆ setInstanceCount

void QQuick3DRandomInstancing::setInstanceCount ( int instanceCount)
slot

Definition at line 208 of file randominstancing.cpp.

◆ setPosition

void QQuick3DRandomInstancing::setPosition ( QQuick3DInstanceRange * position)
slot

Definition at line 229 of file randominstancing.cpp.

◆ setRandomSeed

void QQuick3DRandomInstancing::setRandomSeed ( int randomSeed)
slot

Definition at line 218 of file randominstancing.cpp.

◆ setRotation

void QQuick3DRandomInstancing::setRotation ( QQuick3DInstanceRange * rotation)
slot

Definition at line 263 of file randominstancing.cpp.

◆ setScale

void QQuick3DRandomInstancing::setScale ( QQuick3DInstanceRange * scale)
slot

Definition at line 246 of file randominstancing.cpp.

Property Documentation

◆ color

QQuick3DInstanceRange * QQuick3DRandomInstancing::color
readwrite

Definition at line 81 of file randominstancing_p.h.

◆ colorModel

ColorModel QQuick3DRandomInstancing::colorModel
readwrite

Definition at line 82 of file randominstancing_p.h.

◆ customData

QQuick3DInstanceRange * QQuick3DRandomInstancing::customData
readwrite

Definition at line 83 of file randominstancing_p.h.

◆ gridSpacing

QVector3D QQuick3DRandomInstancing::gridSpacing
readwrite

Definition at line 85 of file randominstancing_p.h.

◆ instanceCount

int QQuick3DRandomInstancing::instanceCount
readwrite

Definition at line 77 of file randominstancing_p.h.

◆ position

QQuick3DInstanceRange * QQuick3DRandomInstancing::position
readwrite

Definition at line 78 of file randominstancing_p.h.

◆ randomSeed

int QQuick3DRandomInstancing::randomSeed
readwrite

Definition at line 87 of file randominstancing_p.h.

◆ rotation

QQuick3DInstanceRange * QQuick3DRandomInstancing::rotation
readwrite

Definition at line 80 of file randominstancing_p.h.

◆ scale

QQuick3DInstanceRange * QQuick3DRandomInstancing::scale
readwrite

Definition at line 79 of file randominstancing_p.h.


The documentation for this class was generated from the following files: