![]() |
Qt 6.x
The Qt SDK
|
#include <proceduralmesh_p.h>
Public Types | |
enum | PrimitiveMode { Points , LineStrip , Lines , TriangleStrip , TriangleFan , Triangles } |
![]() | |
enum class | PrimitiveType { Points , LineStrip , Lines , TriangleStrip , TriangleFan , Triangles } |
Signals | |
void | positionsChanged () |
void | primitiveModeChanged () |
void | indexesChanged () |
void | normalsChanged () |
void | tangentsChanged () |
void | binormalsChanged () |
void | uv0sChanged () |
void | uv1sChanged () |
void | colorsChanged () |
void | jointsChanged () |
void | weightsChanged () |
![]() | |
void | geometryNodeDirty () |
![]() | |
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 | |
ProceduralMesh () | |
\qmlproperty List<QVector3D> ProceduralMesh::positions The positions attribute list. | |
QList< QVector3D > | positions () const |
void | setPositions (const QList< QVector3D > &newPositions) |
PrimitiveMode | primitiveMode () const |
void | setPrimitiveMode (PrimitiveMode newPrimitiveMode) |
QList< unsigned int > | indexes () const |
void | setIndexes (const QList< unsigned int > &newIndexes) |
QList< QVector3D > | normals () const |
void | setNormals (const QList< QVector3D > &newNormals) |
QList< QVector3D > | tangents () const |
void | setTangents (const QList< QVector3D > &newTangents) |
QList< QVector3D > | binormals () const |
void | setBinormals (const QList< QVector3D > &newBinormals) |
QList< QVector2D > | uv0s () const |
void | setUv0s (const QList< QVector2D > &newUv0s) |
QList< QVector2D > | uv1s () const |
void | setUv1s (const QList< QVector2D > &newUv1s) |
QList< QVector4D > | colors () const |
void | setColors (const QList< QVector4D > &newColors) |
QList< QVector4D > | joints () const |
void | setJoints (const QList< QVector4D > &newJoints) |
QList< QVector4D > | weights () const |
void | setWeights (const QList< QVector4D > &newWeights) |
QQmlListProperty< ProceduralMeshSubset > | subsets () |
![]() | |
QQuick3DGeometry (QQuick3DObject *parent=nullptr) | |
~QQuick3DGeometry () override | |
QByteArray | vertexData () const |
Returns the vertex buffer data set by setVertexData. | |
QByteArray | indexData () const |
Returns the index buffer data. | |
int | attributeCount () const |
Returns the number of attributes defined for this geometry. | |
Attribute | attribute (int index) const |
Returns attribute definition number index. | |
PrimitiveType | primitiveType () const |
Returns the primitive type used when rendering. | |
QVector3D | boundsMin () const |
QVector3D | boundsMax () const |
int | stride () const |
void | setVertexData (const QByteArray &data) |
Sets the vertex buffer data. | |
void | setVertexData (int offset, const QByteArray &data) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Updates a subset of the vertex buffer. | |
void | setIndexData (const QByteArray &data) |
Sets the index buffer to data. | |
void | setIndexData (int offset, const QByteArray &data) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts. Updates a subset of the index buffer. | |
void | setStride (int stride) |
Sets the stride of the vertex buffer to stride, measured in bytes. | |
void | setBounds (const QVector3D &min, const QVector3D &max) |
Sets the bounding volume of the geometry to the cube defined by the points min and max. | |
void | setPrimitiveType (PrimitiveType type) |
Sets the primitive type used for rendering to type. | |
void | addAttribute (Attribute::Semantic semantic, int offset, Attribute::ComponentType componentType) |
Adds vertex attribute description. | |
void | addAttribute (const Attribute &att) |
This is an overloaded member function, provided for convenience. It differs from the above function only in what argument(s) it accepts.Adds vertex attribute description. | |
Q_REVISION (6, 3) int subsetCount() const | |
Q_REVISION (6, 3) QVector3D subsetBoundsMin(int subset) const | |
Q_REVISION (6, 3) QVector3D subsetBoundsMax(int subset) const | |
Q_REVISION (6, 3) int subsetOffset(int subset) const | |
Q_REVISION (6, 3) int subsetCount(int subset) const | |
Q_REVISION (6, 3) QString subsetName(int subset) const | |
Q_REVISION (6, 3) void addSubset(int offset | |
Q_REVISION (6, 6) QByteArray targetData() const | |
Q_REVISION (6, 6) void setTargetData(const QByteArray &data) | |
Q_REVISION (6, 6) void setTargetData(int offset | |
Q_REVISION (6, 6) TargetAttribute targetAttribute(int index) const | |
Q_REVISION (6, 6) int targetAttributeCount() const | |
Q_REVISION (6, 6) void addTargetAttribute(quint32 targetId | |
Q_REVISION (6, 6) void addTargetAttribute(const TargetAttribute &att) | |
void | clear () |
Resets the geometry to its initial state, clearing previously set vertex and index data as well as attributes. | |
![]() | |
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 | |
QList< QVector3D > | positions |
QList< QVector3D > | normals |
QList< QVector3D > | tangents |
QList< QVector3D > | binormals |
QList< QVector2D > | uv0s |
QList< QVector2D > | uv1s |
QList< QVector4D > | colors |
QList< QVector4D > | joints |
QList< QVector4D > | weights |
QList< unsigned int > | indexes |
QQmlListProperty< ProceduralMeshSubset > | subsets |
PrimitiveMode | primitiveMode |
![]() | |
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 | |
![]() | |
void | update () |
void | setParentItem (QQuick3DObject *parentItem) |
![]() | |
void | deleteLater () |
\threadsafe | |
![]() | |
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) |
![]() | |
int | count |
int const QVector3D & | boundsMin |
Returns the minimum coordinate of the bounding volume. | |
int const QVector3D const QVector3D & | boundsMax |
Returns the maximum coordinate of the bounding volume. | |
int const QVector3D const QVector3D const QString & | name = {}) |
const QByteArray & | data |
Attribute::Semantic | semantic |
Attribute::Semantic int | offset |
Attribute::Semantic int int | stride = 0) |
Returns the byte stride of the vertex buffer. | |
![]() | |
QSSGRenderGraphObject * | updateSpatialNode (QSSGRenderGraphObject *node) override |
void | markAllDirty () 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) | |
![]() | |
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 53 of file proceduralmesh_p.h.
Enumerator | |
---|---|
Points | |
LineStrip | |
Lines | |
TriangleStrip | |
TriangleFan | |
Triangles |
Definition at line 70 of file proceduralmesh_p.h.
QT_BEGIN_NAMESPACE ProceduralMesh::ProceduralMesh | ( | ) |
\qmlproperty List<QVector3D> ProceduralMesh::positions The positions attribute list.
\qmltype ProceduralMesh \inqmlmodule QtQuick3D.Helpers \inherits Geometry \brief Allows creation of Geometry from QML. \since 6.6 ProceduralMesh is a helper type that allows creation of Geometry instances from QML/ The Geometry component iself is Abstract, and is usually created from C++. \qml component TorusMesh : ProceduralMesh { property real rings: 50 property real segments: 50 property real radius: 100.0 property real tubeRadius: 10.0 property var meshArrays: generateTorus(rings, segments, radius, tubeRadius) positions: meshArrays.verts normals: meshArrays.normals uv0s: meshArrays.uvs indexes: meshArrays.indices function generateTorus(rings: real, segments: real, radius: real, tubeRadius: real) { let verts = [] let normals = [] let uvs = [] let indices = [] for (let i = 0; i <= rings; ++i) { for (let j = 0; j <= segments; ++j) { let u = i / rings * Math.PI * 2; let v = j / segments * Math.PI * 2; let centerX = radius * Math.cos(u); let centerZ = radius * Math.sin(u); let posX = centerX + tubeRadius * Math.cos(v) * Math.cos(u); let posY = tubeRadius * Math.sin(v); let posZ = centerZ + tubeRadius * Math.cos(v) * Math.sin(u); verts.push(Qt.vector3d(posX, posY, posZ)); let normal = Qt.vector3d(posX - centerX, posY, posZ - centerZ).normalized(); normals.push(normal); uvs.push(Qt.vector2d(i / rings, j / segments)); } } for (let i = 0; i < rings; ++i) { for (let j = 0; j < segments; ++j) { let a = (segments + 1) * i + j; let b = (segments + 1) * (i + 1) + j; let c = (segments + 1) * (i + 1) + j + 1; let d = (segments + 1) * i + j + 1;
Generate two triangles for each quad in the mesh Adjust order to be counter-clockwise indices.push(a, d, b); indices.push(b, d, c); } } return { verts: verts, normals: normals, uvs: uvs, indices: indices } } } \qml
The above code defines a component TorusMesh that can be used as Geometry for use with a Model component. When the ring, segments, radius or tubeRadius properties are modified the geometry will be updated.
The ProceduralMesh component is not as fexible nor as performant as creating Geometry in C++, but makes up for it in convience and simplitiy. The properties are fixed attribute lists that when filled will automatically generate the necessary buffers.
If this list remains empty nothing no geometry will be generated.
\qmlproperty List<QVector3D> ProceduralMesh::normals The normals attribute list.
\qmlproperty List<QVector3D> ProceduralMesh::tangents The tangents attribute list.
\qmlproperty List<QVector3D> ProceduralMesh::binormals The binormals attribute list.
\qmlproperty List<QVector2D> ProceduralMesh::uv0s This property defines a list of uv coordinates for the first uv channel (uv0)
\qmlproperty List<QVector2D> ProceduralMesh::uv1s This property defines a list of uv coordinates for the second uv channel (uv1)
\qmlproperty List<QVector4D> ProceduralMesh::colors This property defines a list of vertex color values.
\qmlproperty List<QVector4D> ProceduralMesh::joints This property defines a list of joint indices for skinning.
\qmlproperty List<QVector4D> ProceduralMesh::weights This property defines a list of joint weights for skinning.
\qmlproperty List<int> ProceduralMesh::indexes This property defines a list of indexes into the attribute lists. If this list remains empty the vertex buffer values will be used directly.
\qmlproperty enumeration ProceduralMesh::primitiveMode
This property defines the primitive mode to use when rendering the geometry. The default value is /c ProceduralMesh.Triangles.
\qmlproperty List<ProceduralMeshSubset> ProceduralMesh::subsets
This property defines a list of subsets to split the geometry data into. Each subset can have it's own material. The order of this array corosponds to the materials list of Model when using this geometry.
This property is optional and when empty results in a single subset.
\qmltype ProceduralMeshSubset \inqmlmodule QtQuick3D.Helpers \inherits QtObject
Defines a subset of a ProceduralMesh
This type defines a subset of a ProceduralMesh. Each subset can have it's own material and can be used to split the geometry into multiple draw calls.
\qmlproperty int ProceduralMeshSubset::offset This property defines the starting index for this subset. The default value is 0.
\qmlproperty int ProceduralMeshSubset::count This property defines the number of indices to use for this subset. The default value is 0 so this property must be set for the subset to have content.
\qmlproperty Material ProceduralMeshSubset::name This property defines a name of the subset. This property is optional, and is only used to tag the subset for debugging purposes.
Definition at line 196 of file proceduralmesh.cpp.
Definition at line 571 of file proceduralmesh.cpp.
|
signal |
Definition at line 613 of file proceduralmesh.cpp.
|
signal |
QList< unsigned int > ProceduralMesh::indexes | ( | ) | const |
Definition at line 529 of file proceduralmesh.cpp.
|
signal |
Definition at line 627 of file proceduralmesh.cpp.
|
signal |
Definition at line 543 of file proceduralmesh.cpp.
|
signal |
Definition at line 201 of file proceduralmesh.cpp.
|
signal |
ProceduralMesh::PrimitiveMode ProceduralMesh::primitiveMode | ( | ) | const |
Definition at line 215 of file proceduralmesh.cpp.
|
signal |
Definition at line 576 of file proceduralmesh.cpp.
References binormalsChanged(), and Q_EMIT.
Definition at line 618 of file proceduralmesh.cpp.
References colorsChanged(), and Q_EMIT.
Definition at line 534 of file proceduralmesh.cpp.
References indexesChanged(), and Q_EMIT.
Definition at line 632 of file proceduralmesh.cpp.
References jointsChanged(), and Q_EMIT.
Definition at line 548 of file proceduralmesh.cpp.
References normalsChanged(), and Q_EMIT.
Definition at line 206 of file proceduralmesh.cpp.
References positionsChanged(), and Q_EMIT.
void ProceduralMesh::setPrimitiveMode | ( | PrimitiveMode | newPrimitiveMode | ) |
Definition at line 220 of file proceduralmesh.cpp.
References primitiveModeChanged(), Q_EMIT, qWarning, TriangleFan, and Triangles.
Definition at line 562 of file proceduralmesh.cpp.
References Q_EMIT, and tangentsChanged().
Definition at line 590 of file proceduralmesh.cpp.
References Q_EMIT, and uv0sChanged().
Definition at line 604 of file proceduralmesh.cpp.
References Q_EMIT, and uv1sChanged().
Definition at line 646 of file proceduralmesh.cpp.
References Q_EMIT, and weightsChanged().
QQmlListProperty< ProceduralMeshSubset > ProceduralMesh::subsets | ( | ) |
Definition at line 557 of file proceduralmesh.cpp.
|
signal |
Definition at line 585 of file proceduralmesh.cpp.
|
signal |
Definition at line 599 of file proceduralmesh.cpp.
|
signal |
Definition at line 641 of file proceduralmesh.cpp.
|
signal |
Definition at line 50 of file proceduralmesh_p.h.
Definition at line 50 of file proceduralmesh_p.h.
|
readwrite |
Definition at line 50 of file proceduralmesh_p.h.
Definition at line 50 of file proceduralmesh_p.h.
Definition at line 50 of file proceduralmesh_p.h.
Definition at line 50 of file proceduralmesh_p.h.
|
readwrite |
Definition at line 50 of file proceduralmesh_p.h.
|
read |
Definition at line 50 of file proceduralmesh_p.h.
Definition at line 50 of file proceduralmesh_p.h.
Definition at line 50 of file proceduralmesh_p.h.
Definition at line 50 of file proceduralmesh_p.h.
Definition at line 50 of file proceduralmesh_p.h.