diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/extras/defaults/qskyboxentity.cpp | 5 | ||||
-rw-r--r-- | src/extras/geometries/qconemesh.cpp | 4 | ||||
-rw-r--r-- | src/extras/geometries/qconemesh.h | 4 | ||||
-rw-r--r-- | src/extras/geometries/qcuboidmesh.cpp | 4 | ||||
-rw-r--r-- | src/extras/geometries/qcuboidmesh.h | 4 | ||||
-rw-r--r-- | src/extras/geometries/qcylindermesh.cpp | 5 | ||||
-rw-r--r-- | src/extras/geometries/qcylindermesh.h | 4 | ||||
-rw-r--r-- | src/extras/geometries/qplanemesh.cpp | 4 | ||||
-rw-r--r-- | src/extras/geometries/qplanemesh.h | 4 | ||||
-rw-r--r-- | src/extras/geometries/qspheremesh.cpp | 4 | ||||
-rw-r--r-- | src/extras/geometries/qspheremesh.h | 4 | ||||
-rw-r--r-- | src/extras/geometries/qtorusmesh.cpp | 4 | ||||
-rw-r--r-- | src/extras/geometries/qtorusmesh.h | 4 | ||||
-rw-r--r-- | src/plugins/sceneparsers/gltf/gltfimporter.cpp | 38 | ||||
-rw-r--r-- | src/plugins/sceneparsers/gltfexport/gltfexporter.cpp | 13 | ||||
-rw-r--r-- | src/render/framegraph/qrenderstateset.cpp | 2 | ||||
-rw-r--r-- | src/render/frontend/qlevelofdetail.cpp | 9 |
17 files changed, 67 insertions, 49 deletions
diff --git a/src/extras/defaults/qskyboxentity.cpp b/src/extras/defaults/qskyboxentity.cpp index 8d01e8d82..b12c0b304 100644 --- a/src/extras/defaults/qskyboxentity.cpp +++ b/src/extras/defaults/qskyboxentity.cpp @@ -54,6 +54,7 @@ #include <Qt3DRender/qgraphicsapifilter.h> #include <Qt3DRender/qseamlesscubemap.h> #include <Qt3DRender/qshaderprogram.h> +#include <Qt3DRender/qgeometryrenderer.h> QT_BEGIN_NAMESPACE @@ -184,7 +185,9 @@ void QSkyboxEntityPrivate::init() m_skyboxTexture->addTextureImage(m_negYImage); m_skyboxTexture->addTextureImage(m_negZImage); - q_func()->addComponent(m_mesh); + QGeometryRenderer *renderer = new QGeometryRenderer; + renderer->setView(m_mesh); + q_func()->addComponent(renderer); q_func()->addComponent(m_material); } diff --git a/src/extras/geometries/qconemesh.cpp b/src/extras/geometries/qconemesh.cpp index 508e7cfd3..4a8ab05c8 100644 --- a/src/extras/geometries/qconemesh.cpp +++ b/src/extras/geometries/qconemesh.cpp @@ -115,7 +115,7 @@ namespace Qt3DExtras { */ QConeMesh::QConeMesh(QNode *parent) - : QGeometryRenderer(parent) + : Qt3DCore::QGeometryView(parent) { QConeGeometry *geometry = new QConeGeometry(this); QObject::connect(geometry, &QConeGeometry::hasTopEndcapChanged, this, &QConeMesh::hasTopEndcapChanged); @@ -126,7 +126,7 @@ QConeMesh::QConeMesh(QNode *parent) QObject::connect(geometry, &QConeGeometry::slicesChanged, this, &QConeMesh::slicesChanged); QObject::connect(geometry, &QConeGeometry::lengthChanged, this, &QConeMesh::lengthChanged); - QGeometryRenderer::setGeometry(geometry); + QGeometryView::setGeometry(geometry); } /*! \internal */ diff --git a/src/extras/geometries/qconemesh.h b/src/extras/geometries/qconemesh.h index 57fe0c0fc..ac7a7bf16 100644 --- a/src/extras/geometries/qconemesh.h +++ b/src/extras/geometries/qconemesh.h @@ -41,13 +41,13 @@ #define QT3DEXTRAS_QCONEMESH_H #include <Qt3DExtras/qt3dextras_global.h> -#include <Qt3DRender/qgeometryrenderer.h> +#include <Qt3DCore/qgeometryview.h> QT_BEGIN_NAMESPACE namespace Qt3DExtras { -class Q_3DEXTRASSHARED_EXPORT QConeMesh : public Qt3DRender::QGeometryRenderer +class Q_3DEXTRASSHARED_EXPORT QConeMesh : public Qt3DCore::QGeometryView { Q_OBJECT Q_PROPERTY(int rings READ rings WRITE setRings NOTIFY ringsChanged) diff --git a/src/extras/geometries/qcuboidmesh.cpp b/src/extras/geometries/qcuboidmesh.cpp index bdad566fc..8637f7a57 100644 --- a/src/extras/geometries/qcuboidmesh.cpp +++ b/src/extras/geometries/qcuboidmesh.cpp @@ -109,7 +109,7 @@ namespace Qt3DExtras { * Constructs a new QCuboidMesh with \a parent. */ QCuboidMesh::QCuboidMesh(QNode *parent) - : QGeometryRenderer(parent) + : Qt3DCore::QGeometryView(parent) { QCuboidGeometry *geometry = new QCuboidGeometry(this); QObject::connect(geometry, &QCuboidGeometry::xExtentChanged, this, &QCuboidMesh::xExtentChanged); @@ -118,7 +118,7 @@ QCuboidMesh::QCuboidMesh(QNode *parent) QObject::connect(geometry, &QCuboidGeometry::xyMeshResolutionChanged, this, &QCuboidMesh::xyMeshResolutionChanged); QObject::connect(geometry, &QCuboidGeometry::xzMeshResolutionChanged, this, &QCuboidMesh::xzMeshResolutionChanged); QObject::connect(geometry, &QCuboidGeometry::yzMeshResolutionChanged, this, &QCuboidMesh::yzMeshResolutionChanged); - QGeometryRenderer::setGeometry(geometry); + QGeometryView::setGeometry(geometry); } /*! \internal */ diff --git a/src/extras/geometries/qcuboidmesh.h b/src/extras/geometries/qcuboidmesh.h index a945dbe2b..480ffaae3 100644 --- a/src/extras/geometries/qcuboidmesh.h +++ b/src/extras/geometries/qcuboidmesh.h @@ -41,14 +41,14 @@ #define QT3DEXTRAS_CUBOIDMESH_H #include <Qt3DExtras/qt3dextras_global.h> -#include <Qt3DRender/qgeometryrenderer.h> +#include <Qt3DCore/qgeometryview.h> #include <QtCore/QSize> QT_BEGIN_NAMESPACE namespace Qt3DExtras { -class Q_3DEXTRASSHARED_EXPORT QCuboidMesh : public Qt3DRender::QGeometryRenderer +class Q_3DEXTRASSHARED_EXPORT QCuboidMesh : public Qt3DCore::QGeometryView { Q_OBJECT diff --git a/src/extras/geometries/qcylindermesh.cpp b/src/extras/geometries/qcylindermesh.cpp index 3a495cce2..5aa3b90fd 100644 --- a/src/extras/geometries/qcylindermesh.cpp +++ b/src/extras/geometries/qcylindermesh.cpp @@ -54,7 +54,6 @@ QT_BEGIN_NAMESPACE using namespace Qt3DCore; -using namespace Qt3DRender; namespace Qt3DExtras { @@ -104,7 +103,7 @@ namespace Qt3DExtras { * Constructs a new QCylinderMesh with \a parent. */ QCylinderMesh::QCylinderMesh(QNode *parent) - : QGeometryRenderer(parent) + : Qt3DCore::QGeometryView(parent) { QCylinderGeometry *geometry = new QCylinderGeometry(this); QObject::connect(geometry, &QCylinderGeometry::radiusChanged, this, &QCylinderMesh::radiusChanged); @@ -112,7 +111,7 @@ QCylinderMesh::QCylinderMesh(QNode *parent) QObject::connect(geometry, &QCylinderGeometry::slicesChanged, this, &QCylinderMesh::slicesChanged); QObject::connect(geometry, &QCylinderGeometry::lengthChanged, this, &QCylinderMesh::lengthChanged); - QGeometryRenderer::setGeometry(geometry); + QGeometryView::setGeometry(geometry); } /*! \internal */ diff --git a/src/extras/geometries/qcylindermesh.h b/src/extras/geometries/qcylindermesh.h index f2c8fb01b..0117e5597 100644 --- a/src/extras/geometries/qcylindermesh.h +++ b/src/extras/geometries/qcylindermesh.h @@ -41,14 +41,14 @@ #define QT3DEXTRAS_QCYLINDERMESH_H #include <Qt3DExtras/qt3dextras_global.h> -#include <Qt3DRender/qgeometryrenderer.h> +#include <Qt3DCore/qgeometryview.h> QT_BEGIN_NAMESPACE namespace Qt3DExtras { -class Q_3DEXTRASSHARED_EXPORT QCylinderMesh : public Qt3DRender::QGeometryRenderer +class Q_3DEXTRASSHARED_EXPORT QCylinderMesh : public Qt3DCore::QGeometryView { Q_OBJECT Q_PROPERTY(int rings READ rings WRITE setRings NOTIFY ringsChanged) diff --git a/src/extras/geometries/qplanemesh.cpp b/src/extras/geometries/qplanemesh.cpp index 223e5a628..9dd5f70c5 100644 --- a/src/extras/geometries/qplanemesh.cpp +++ b/src/extras/geometries/qplanemesh.cpp @@ -94,14 +94,14 @@ namespace Qt3DExtras { * Constructs a new QPlaneMesh with \a parent. */ QPlaneMesh::QPlaneMesh(QNode *parent) - : QGeometryRenderer(parent) + : Qt3DCore::QGeometryView(parent) { QPlaneGeometry *geometry = new QPlaneGeometry(this); QObject::connect(geometry, &QPlaneGeometry::widthChanged, this, &QPlaneMesh::widthChanged); QObject::connect(geometry, &QPlaneGeometry::heightChanged, this, &QPlaneMesh::heightChanged); QObject::connect(geometry, &QPlaneGeometry::resolutionChanged, this, &QPlaneMesh::meshResolutionChanged); QObject::connect(geometry, &QPlaneGeometry::mirroredChanged, this, &QPlaneMesh::mirroredChanged); - QGeometryRenderer::setGeometry(geometry); + QGeometryView::setGeometry(geometry); } /*! \internal */ diff --git a/src/extras/geometries/qplanemesh.h b/src/extras/geometries/qplanemesh.h index 923af8897..fc71bd93a 100644 --- a/src/extras/geometries/qplanemesh.h +++ b/src/extras/geometries/qplanemesh.h @@ -41,14 +41,14 @@ #define QT3DEXTRAS_QPLANEMESH_H #include <Qt3DExtras/qt3dextras_global.h> -#include <Qt3DRender/qgeometryrenderer.h> +#include <Qt3DCore/qgeometryview.h> #include <QtCore/QSize> QT_BEGIN_NAMESPACE namespace Qt3DExtras { -class Q_3DEXTRASSHARED_EXPORT QPlaneMesh : public Qt3DRender::QGeometryRenderer +class Q_3DEXTRASSHARED_EXPORT QPlaneMesh : public Qt3DCore::QGeometryView { Q_OBJECT Q_PROPERTY(float width READ width WRITE setWidth NOTIFY widthChanged) diff --git a/src/extras/geometries/qspheremesh.cpp b/src/extras/geometries/qspheremesh.cpp index 28854fe29..13b8ecf5e 100644 --- a/src/extras/geometries/qspheremesh.cpp +++ b/src/extras/geometries/qspheremesh.cpp @@ -93,14 +93,14 @@ namespace Qt3DExtras { * Constructs a new QSphereMesh with \a parent. */ QSphereMesh::QSphereMesh(QNode *parent) - : QGeometryRenderer(parent) + : Qt3DCore::QGeometryView(parent) { QSphereGeometry *geometry = new QSphereGeometry(this); QObject::connect(geometry, &QSphereGeometry::radiusChanged, this, &QSphereMesh::radiusChanged); QObject::connect(geometry, &QSphereGeometry::ringsChanged, this, &QSphereMesh::ringsChanged); QObject::connect(geometry, &QSphereGeometry::slicesChanged, this, &QSphereMesh::slicesChanged); QObject::connect(geometry, &QSphereGeometry::generateTangentsChanged, this, &QSphereMesh::generateTangentsChanged); - QGeometryRenderer::setGeometry(geometry); + QGeometryView::setGeometry(geometry); } /*! \internal */ diff --git a/src/extras/geometries/qspheremesh.h b/src/extras/geometries/qspheremesh.h index 998cd7c0e..170f70215 100644 --- a/src/extras/geometries/qspheremesh.h +++ b/src/extras/geometries/qspheremesh.h @@ -41,7 +41,7 @@ #define QT3DEXTRAS_QSPHEREMESH_H #include <Qt3DExtras/qt3dextras_global.h> -#include <Qt3DRender/qgeometryrenderer.h> +#include <Qt3DCore/QGeometryView> QT_BEGIN_NAMESPACE @@ -49,7 +49,7 @@ namespace Qt3DExtras { class QSphereMeshPrivate; -class Q_3DEXTRASSHARED_EXPORT QSphereMesh : public Qt3DRender::QGeometryRenderer +class Q_3DEXTRASSHARED_EXPORT QSphereMesh : public Qt3DCore::QGeometryView { Q_OBJECT Q_PROPERTY(int rings READ rings WRITE setRings NOTIFY ringsChanged) diff --git a/src/extras/geometries/qtorusmesh.cpp b/src/extras/geometries/qtorusmesh.cpp index fd10afc1e..b195ef631 100644 --- a/src/extras/geometries/qtorusmesh.cpp +++ b/src/extras/geometries/qtorusmesh.cpp @@ -96,7 +96,7 @@ namespace Qt3DExtras { * Constructs a new QTorusMesh with \a parent. */ QTorusMesh::QTorusMesh(QNode *parent) - : QGeometryRenderer(parent) + : Qt3DCore::QGeometryView(parent) { QTorusGeometry *geometry = new QTorusGeometry(this); QObject::connect(geometry, &QTorusGeometry::radiusChanged, this, &QTorusMesh::radiusChanged); @@ -104,7 +104,7 @@ QTorusMesh::QTorusMesh(QNode *parent) QObject::connect(geometry, &QTorusGeometry::slicesChanged, this, &QTorusMesh::slicesChanged); QObject::connect(geometry, &QTorusGeometry::minorRadiusChanged, this, &QTorusMesh::minorRadiusChanged); - QGeometryRenderer::setGeometry(geometry); + QGeometryView::setGeometry(geometry); } /*! \internal */ diff --git a/src/extras/geometries/qtorusmesh.h b/src/extras/geometries/qtorusmesh.h index 2fd9f0a23..e36d94097 100644 --- a/src/extras/geometries/qtorusmesh.h +++ b/src/extras/geometries/qtorusmesh.h @@ -41,13 +41,13 @@ #define QT3DEXTRAS_QTORUSMESH_H #include <Qt3DExtras/qt3dextras_global.h> -#include <Qt3DRender/qgeometryrenderer.h> +#include <Qt3DCore/qgeometryview.h> QT_BEGIN_NAMESPACE namespace Qt3DExtras { -class Q_3DEXTRASSHARED_EXPORT QTorusMesh : public Qt3DRender::QGeometryRenderer +class Q_3DEXTRASSHARED_EXPORT QTorusMesh : public Qt3DCore::QGeometryView { Q_OBJECT Q_PROPERTY(int rings READ rings WRITE setRings NOTIFY ringsChanged) diff --git a/src/plugins/sceneparsers/gltf/gltfimporter.cpp b/src/plugins/sceneparsers/gltf/gltfimporter.cpp index b141a44a5..05c235977 100644 --- a/src/plugins/sceneparsers/gltf/gltfimporter.cpp +++ b/src/plugins/sceneparsers/gltf/gltfimporter.cpp @@ -1740,6 +1740,7 @@ void GLTFImporter::processJSONMesh(const QString &id, const QJsonObject &json) const QString material = (m_majorVersion > 1) ? QString::number(matValue.toInt()) : matValue.toString(); QGeometryRenderer *geometryRenderer = new QGeometryRenderer; + QGeometryView *geometryView = new QGeometryView; QGeometry *meshGeometry = new QGeometry(geometryRenderer); //Set Primitive Type @@ -1815,7 +1816,8 @@ void GLTFImporter::processJSONMesh(const QString &id, const QJsonObject &json) } } // of has indices - geometryRenderer->setGeometry(meshGeometry); + geometryView->setGeometry(meshGeometry); + geometryRenderer->setView(geometryView); geometryRenderer->setObjectName(meshName); m_meshDict.insert(id, geometryRenderer); @@ -1823,17 +1825,23 @@ void GLTFImporter::processJSONMesh(const QString &id, const QJsonObject &json) } else { QGeometryRenderer *mesh = nullptr; if (meshType == QStringLiteral("cone")) { - mesh = new QConeMesh; + mesh = new QGeometryRenderer; + mesh->setView(new QConeMesh); } else if (meshType == QStringLiteral("cuboid")) { - mesh = new QCuboidMesh; + mesh = new QGeometryRenderer; + mesh->setView(new QCuboidMesh); } else if (meshType == QStringLiteral("cylinder")) { - mesh = new QCylinderMesh; + mesh = new QGeometryRenderer; + mesh->setView(new QCylinderMesh); } else if (meshType == QStringLiteral("plane")) { - mesh = new QPlaneMesh; + mesh = new QGeometryRenderer; + mesh->setView(new QPlaneMesh); } else if (meshType == QStringLiteral("sphere")) { - mesh = new QSphereMesh; + mesh = new QGeometryRenderer; + mesh->setView(new QSphereMesh); } else if (meshType == QStringLiteral("torus")) { - mesh = new QTorusMesh; + mesh = new QGeometryRenderer; + mesh->setView(new QTorusMesh); } else { qCWarning(GLTFImporterLog, "Invalid mesh type: %ls for mesh: %ls", @@ -1844,30 +1852,34 @@ void GLTFImporter::processJSONMesh(const QString &id, const QJsonObject &json) if (mesh) { // Read and set properties const QJsonObject propObj = json.value(KEY_PROPERTIES).toObject(); + QObject *target = mesh; + if (mesh->view()) + target = mesh->view(); for (auto it = propObj.begin(), end = propObj.end(); it != end; ++it) { const QByteArray propName = it.key().toLatin1(); // Basic mesh types only have bool, int, float, and QSize type properties if (it.value().isBool()) { - mesh->setProperty(propName.constData(), QVariant(it.value().toBool())); + target->setProperty(propName.constData(), QVariant(it.value().toBool())); } else if (it.value().isArray()) { const QJsonArray valueArray = it.value().toArray(); if (valueArray.size() == 2) { QSize size; size.setWidth(valueArray.at(0).toInt()); size.setHeight(valueArray.at(1).toInt()); - mesh->setProperty(propName.constData(), QVariant(size)); + target->setProperty(propName.constData(), QVariant(size)); } } else { - const QVariant::Type propType = mesh->property(propName.constData()).type(); + const QVariant::Type propType = target->property(propName.constData()).type(); if (propType == QVariant::Int) { - mesh->setProperty(propName.constData(), QVariant(it.value().toInt())); + target->setProperty(propName.constData(), QVariant(it.value().toInt())); } else { - mesh->setProperty(propName.constData(), - QVariant(float(it.value().toDouble()))); + target->setProperty(propName.constData(), + QVariant(float(it.value().toDouble()))); } } } mesh->setObjectName(meshName); + mesh->view()->setObjectName(meshName); m_meshMaterialDict[mesh] = (m_majorVersion > 1) ? QString::number(json.value(KEY_MATERIAL).toInt()) : json.value(KEY_MATERIAL).toString(); diff --git a/src/plugins/sceneparsers/gltfexport/gltfexporter.cpp b/src/plugins/sceneparsers/gltfexport/gltfexporter.cpp index 8b4fac1ce..7be8dd43e 100644 --- a/src/plugins/sceneparsers/gltfexport/gltfexporter.cpp +++ b/src/plugins/sceneparsers/gltfexport/gltfexporter.cpp @@ -734,10 +734,13 @@ void GLTFExporter::parseMeshes() int meshCount = 0; for (auto it = m_meshMap.constBegin(); it != m_meshMap.constEnd(); ++it) { Node *node = it.key(); - QGeometryRenderer *mesh = it.value(); + QGeometryRenderer *renderer = it.value(); + QGeometryView *mesh = renderer->view(); + if (!mesh) + continue; MeshInfo meshInfo; - meshInfo.originalName = mesh->objectName(); + meshInfo.originalName = mesh->objectName().isEmpty() ? renderer->objectName() : mesh->objectName(); meshInfo.name = newMeshName(); meshInfo.materialName = m_materialInfo.value(m_materialMap.value(node)).name; @@ -764,7 +767,7 @@ void GLTFExporter::parseMeshes() } if (meshInfo.meshType != TypeNone) { - meshInfo.meshComponent = mesh; + meshInfo.meshComponent = renderer; cacheDefaultProperties(meshInfo.meshType); if (GLTFExporterLog().isDebugEnabled()) { @@ -973,7 +976,7 @@ void GLTFExporter::parseMeshes() } meshCount++; - m_meshInfo.insert(mesh, meshInfo); + m_meshInfo.insert(renderer, meshInfo); } qCDebug(GLTFExporterLog, "Total buffer size: %i", m_buffer.size()); @@ -1249,7 +1252,7 @@ bool GLTFExporter::saveScene() mesh["name"] = meshInfo.originalName; if (meshInfo.meshType != TypeNone) { QJsonObject properties; - exportGenericProperties(properties, meshInfo.meshType, meshInfo.meshComponent); + exportGenericProperties(properties, meshInfo.meshType, meshInfo.meshComponent->view()); mesh["type"] = meshInfo.meshTypeStr; mesh["properties"] = properties; mesh["material"] = meshInfo.materialName; diff --git a/src/render/framegraph/qrenderstateset.cpp b/src/render/framegraph/qrenderstateset.cpp index 2b701e67e..6923e8034 100644 --- a/src/render/framegraph/qrenderstateset.cpp +++ b/src/render/framegraph/qrenderstateset.cpp @@ -145,7 +145,7 @@ QRenderStateSetPrivate::QRenderStateSetPrivate() Entity { id: sphereEntity components: [ - SphereMesh {}, + GeometryRenderer { view: SphereMesh {} }, PhongMaterial {} ] } diff --git a/src/render/frontend/qlevelofdetail.cpp b/src/render/frontend/qlevelofdetail.cpp index fcc826f66..9b54e832e 100644 --- a/src/render/frontend/qlevelofdetail.cpp +++ b/src/render/frontend/qlevelofdetail.cpp @@ -152,11 +152,12 @@ void QLevelOfDetailPrivate::setCurrentIndex(int currentIndex) thresholdType: LevelOfDetail.DistanceToCameraThreshold } - CylinderMesh { + GeometryRenderer { id: mesh - - property var sliceValues: [20, 10, 6, 4] - slices: sliceValues[lod.currentIndex] + view: CylinderMesh { + property var sliceValues: [20, 10, 6, 4] + slices: sliceValues[lod.currentIndex] + } } Entity { |