diff options
author | Eike Ziller <eike.ziller@qt.io> | 2022-08-19 09:01:32 +0200 |
---|---|---|
committer | Eike Ziller <eike.ziller@qt.io> | 2022-08-19 12:48:27 +0200 |
commit | 64247bf571eb8a383b039e29a30a7efa061dae1b (patch) | |
tree | 9e6a1985d7d2439e4fe503f6940c3f5681626ecf /share/qtcreator/qml/qmlpuppet | |
parent | 33001a866f400c03041ecbad2b5de630a7ca697e (diff) | |
parent | aa5b971dca898ad5eb844a684c7f83b0ccbad983 (diff) |
Merge remote-tracking branch 'origin/8.0'
Reverts/comments out parts of 45f93a817a527e6dc81a8971dd2868b3da66cd84,
which needs to be resolved in a follow-up commit.
Conflicts:
cmake/QtCreatorIDEBranding.cmake
qbs/modules/qtc/qtc.qbs
qtcreator_ide_branding.pri
share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp
src/plugins/clangcodemodel/clangmodelmanagersupport.cpp
src/plugins/cmakeprojectmanager/cmakesettingspage.cpp
src/plugins/python/pythoneditor.cpp
src/plugins/qmldesigner/designercore/instances/nodeinstanceview.cpp
src/plugins/scxmleditor/common/colorsettings.cpp
Change-Id: I7f0f7b7120e75a9fc3a8886bc57c17345cbb501b
Diffstat (limited to 'share/qtcreator/qml/qmlpuppet')
10 files changed, 162 insertions, 31 deletions
diff --git a/share/qtcreator/qml/qmlpuppet/editor3d_qt5.qrc b/share/qtcreator/qml/qmlpuppet/editor3d_qt5.qrc index bbe9a910db..d4127574a6 100644 --- a/share/qtcreator/qml/qmlpuppet/editor3d_qt5.qrc +++ b/share/qtcreator/qml/qmlpuppet/editor3d_qt5.qrc @@ -16,6 +16,8 @@ <file>mockfiles/images/static_floor.png</file> <file>mockfiles/images/spot.png</file> <file>mockfiles/images/spot@2x.png</file> + <file>mockfiles/images/preview_landscape.hdr</file> + <file>mockfiles/images/preview_studio.hdr</file> <file>mockfiles/qt5/AdjustableArrow.qml</file> <file>mockfiles/qt5/AreaLightHandle.qml</file> <file>mockfiles/qt5/Arrow.qml</file> diff --git a/share/qtcreator/qml/qmlpuppet/editor3d_qt6.qrc b/share/qtcreator/qml/qmlpuppet/editor3d_qt6.qrc index 0545942334..bb29d683a0 100644 --- a/share/qtcreator/qml/qmlpuppet/editor3d_qt6.qrc +++ b/share/qtcreator/qml/qmlpuppet/editor3d_qt6.qrc @@ -18,6 +18,8 @@ <file>mockfiles/images/floor_tex.png</file> <file>mockfiles/images/spot.png</file> <file>mockfiles/images/spot@2x.png</file> + <file>mockfiles/images/preview_landscape.hdr</file> + <file>mockfiles/images/preview_studio.hdr</file> <file>mockfiles/qt6/AdjustableArrow.qml</file> <file>mockfiles/qt6/AreaLightHandle.qml</file> <file>mockfiles/qt6/Arrow.qml</file> diff --git a/share/qtcreator/qml/qmlpuppet/mockfiles/images/preview_landscape.hdr b/share/qtcreator/qml/qmlpuppet/mockfiles/images/preview_landscape.hdr Binary files differnew file mode 100644 index 0000000000..2c6b4372d4 --- /dev/null +++ b/share/qtcreator/qml/qmlpuppet/mockfiles/images/preview_landscape.hdr diff --git a/share/qtcreator/qml/qmlpuppet/mockfiles/images/preview_studio.hdr b/share/qtcreator/qml/qmlpuppet/mockfiles/images/preview_studio.hdr Binary files differnew file mode 100644 index 0000000000..8ab060c1f4 --- /dev/null +++ b/share/qtcreator/qml/qmlpuppet/mockfiles/images/preview_studio.hdr diff --git a/share/qtcreator/qml/qmlpuppet/mockfiles/qt5/MaterialNodeView.qml b/share/qtcreator/qml/qmlpuppet/mockfiles/qt5/MaterialNodeView.qml index 9fee06e0ad..067e34928b 100644 --- a/share/qtcreator/qml/qmlpuppet/mockfiles/qt5/MaterialNodeView.qml +++ b/share/qtcreator/qml/qmlpuppet/mockfiles/qt5/MaterialNodeView.qml @@ -29,8 +29,12 @@ View3D { id: root anchors.fill: parent environment: sceneEnv + camera: envMode === "SkyBox" && envValue === "preview_studio" ? studioCamera : defaultCamera property Material previewMaterial + property string envMode + property string envValue + property string modelSrc: "#Sphere" function fitToViewPort(closeUp) { @@ -41,28 +45,59 @@ View3D { id: sceneEnv antialiasingMode: SceneEnvironment.MSAA antialiasingQuality: SceneEnvironment.High + backgroundMode: envMode === "Color" ? SceneEnvironment.Color + : envMode === "SkyBox" ? SceneEnvironment.SkyBox + : SceneEnvironment.Transparent + clearColor: envMode === "Color" ? envValue : "#000000" + lightProbe: envMode === "SkyBox" ? skyBoxTex : null + + Texture { + id: skyBoxTex + source: envMode === "SkyBox" ? "../images/" + envValue + ".hdr" + : "" + } } Node { DirectionalLight { eulerRotation.x: -26 - eulerRotation.y: -57 + eulerRotation.y: modelSrc === "#Cube" ? -10 : -50 + brightness: envMode !== "SkyBox" ? 100 : 0 } PerspectiveCamera { - y: 125.331 - z: 120 - eulerRotation.x: -31 + id: defaultCamera + y: 70 + z: 200 + eulerRotation.x: -5.71 clipNear: 1 clipFar: 1000 } - Model { - id: model + PerspectiveCamera { + id: studioCamera + y: 232 + z: 85 + eulerRotation.x: -64.98 + clipNear: 1 + clipFar: 1000 + } + Node { + rotation: root.camera.rotation y: 50 - source: "#Sphere" - materials: previewMaterial + Node { + y: modelSrc === "#Cone" ? -40 : 10 + eulerRotation.x: 35 + Model { + id: model + source: modelSrc ? modelSrc : "#Sphere" + eulerRotation.y: 45 + materials: previewMaterial + scale: !modelSrc || modelSrc === "#Sphere" + ? Qt.vector3d(1.7, 1.7, 1.7) : Qt.vector3d(1.2, 1.2, 1.2) + } + } } } } diff --git a/share/qtcreator/qml/qmlpuppet/mockfiles/qt5/ModelNode3DImageView.qml b/share/qtcreator/qml/qmlpuppet/mockfiles/qt5/ModelNode3DImageView.qml index 70b9dbc4d0..d32a1ea915 100644 --- a/share/qtcreator/qml/qmlpuppet/mockfiles/qt5/ModelNode3DImageView.qml +++ b/share/qtcreator/qml/qmlpuppet/mockfiles/qt5/ModelNode3DImageView.qml @@ -50,25 +50,28 @@ Item { view.destroy(); } - function createViewForObject(obj) + function createViewForObject(obj, env, envValue, model) { if (obj instanceof Material) - createViewForMaterial(obj); + createViewForMaterial(obj, env, envValue, model); else if (obj instanceof Model) createViewForModel(obj); else if (obj instanceof Node) createViewForNode(obj); } - function createViewForMaterial(material) + function createViewForMaterial(material, env, envValue, model) { if (!materialViewComponent) materialViewComponent = Qt.createComponent("MaterialNodeView.qml"); // Always recreate the view to ensure material is up to date - if (materialViewComponent.status === Component.Ready) - view = materialViewComponent.createObject(viewRect, {"previewMaterial": material}); - + if (materialViewComponent.status === Component.Ready) { + view = materialViewComponent.createObject(viewRect, {"previewMaterial": material, + "envMode": env, + "envValue": envValue, + "modelSrc": model}); + } previewObject = material; } diff --git a/share/qtcreator/qml/qmlpuppet/mockfiles/qt6/MaterialNodeView.qml b/share/qtcreator/qml/qmlpuppet/mockfiles/qt6/MaterialNodeView.qml index 94051d5f6e..12fdd3048e 100644 --- a/share/qtcreator/qml/qmlpuppet/mockfiles/qt6/MaterialNodeView.qml +++ b/share/qtcreator/qml/qmlpuppet/mockfiles/qt6/MaterialNodeView.qml @@ -29,8 +29,12 @@ View3D { id: root anchors.fill: parent environment: sceneEnv + camera: envMode === "SkyBox" && envValue === "preview_studio" ? studioCamera : defaultCamera property Material previewMaterial + property string envMode + property string envValue + property string modelSrc: "#Sphere" function fitToViewPort(closeUp) { @@ -41,30 +45,79 @@ View3D { id: sceneEnv antialiasingMode: SceneEnvironment.MSAA antialiasingQuality: SceneEnvironment.High + backgroundMode: envMode === "Color" ? SceneEnvironment.Color + : envMode === "SkyBox" ? SceneEnvironment.SkyBox + : SceneEnvironment.Transparent + clearColor: envMode === "Color" ? envValue : "#000000" + lightProbe: envMode === "SkyBox" ? skyBoxTex : null + + Texture { + id: skyBoxTex + source: envMode === "SkyBox" ? "../images/" + envValue + ".hdr" + : "" + } } Node { DirectionalLight { eulerRotation.x: -26 - eulerRotation.y: -57 + eulerRotation.y: modelSrc === "#Cube" ? -10 : -50 + brightness: envMode !== "SkyBox" ? 1 : 0 } PerspectiveCamera { - y: 125.331 - z: 120 - eulerRotation.x: -31 + id: defaultCamera + y: 70 + z: 200 + eulerRotation.x: -5.71 clipNear: 1 clipFar: 1000 } - Model { - id: model - readonly property bool _edit3dLocked: true // Make this non-pickable + PerspectiveCamera { + id: studioCamera + y: 232 + z: 85 + eulerRotation.x: -64.98 + clipNear: 1 + clipFar: 1000 + } + Node { + rotation: root.camera.rotation y: 50 - source: "#Sphere" - materials: previewMaterial + Node { + y: modelSrc === "#Cone" ? -40 : 10 + eulerRotation.x: 35 + Model { + id: model + readonly property bool _edit3dLocked: true // Make this non-pickable + source: modelSrc ? modelSrc : "#Sphere" + eulerRotation.y: 45 + materials: previewMaterial + scale: !modelSrc || modelSrc === "#Sphere" + ? Qt.vector3d(1.7, 1.7, 1.7) : Qt.vector3d(1.2, 1.2, 1.2) + } + } + } + Model { + id: floorModel + source: "#Rectangle" + scale.y: 8 + scale.x: 8 + eulerRotation.x: -60 + visible: !envMode || envMode === "Default" + materials: floorMaterial + DefaultMaterial { + id: floorMaterial + diffuseMap: floorTex + Texture { + id: floorTex + source: "../images/floor_tex.png" + scaleU: floorModel.scale.x + scaleV: floorModel.scale.y + } + } } - } } diff --git a/share/qtcreator/qml/qmlpuppet/mockfiles/qt6/ModelNode3DImageView.qml b/share/qtcreator/qml/qmlpuppet/mockfiles/qt6/ModelNode3DImageView.qml index 031d01d65f..e409e35aee 100644 --- a/share/qtcreator/qml/qmlpuppet/mockfiles/qt6/ModelNode3DImageView.qml +++ b/share/qtcreator/qml/qmlpuppet/mockfiles/qt6/ModelNode3DImageView.qml @@ -50,25 +50,31 @@ Item { view.destroy(); } - function createViewForObject(obj) + function createViewForObject(obj, env, envValue, model) { + backgroundView3d.visible = true; if (obj instanceof Material) - createViewForMaterial(obj); + createViewForMaterial(obj, env, envValue, model); else if (obj instanceof Model) createViewForModel(obj); else if (obj instanceof Node) createViewForNode(obj); } - function createViewForMaterial(material) + function createViewForMaterial(material, env, envValue, model) { if (!materialViewComponent) materialViewComponent = Qt.createComponent("MaterialNodeView.qml"); // Always recreate the view to ensure material is up to date - if (materialViewComponent.status === Component.Ready) - view = materialViewComponent.createObject(viewRect, {"previewMaterial": material}); - + if (materialViewComponent.status === Component.Ready) { + view = materialViewComponent.createObject(viewRect, {"previewMaterial": material, + "envMode": env, + "envValue": envValue, + "modelSrc": model}); + } + // Floor must be in same view as material so material can reflect it, so hide it in this one + backgroundView3d.visible = false; previewObject = material; } @@ -129,6 +135,7 @@ Item { // Use View3D instead of static image to make background look good on all resolutions View3D { + id: backgroundView3d anchors.fill: parent environment: sceneEnv diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp index 1161cb9439..13e7063e29 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp @@ -339,6 +339,22 @@ void Qt5InformationNodeInstanceServer::resolveImportSupport() #endif } +void Qt5InformationNodeInstanceServer::updateMaterialPreviewData( + const QVector<PropertyValueContainer> &valueChanges) +{ + const PropertyName matPrevPrefix("matPrev"); + for (const auto &container : valueChanges) { + if (container.instanceId() == 0) { + if (container.name() == "matPrevEnv") + m_materialPreviewData.env = container.value().toString(); + else if (container.name() == "matPrevEnvValue") + m_materialPreviewData.envValue = container.value().toString(); + else if (container.name() == "matPrevModel") + m_materialPreviewData.model = container.value().toString(); + } + } +} + void Qt5InformationNodeInstanceServer::updateRotationBlocks( [[maybe_unused]] const QVector<PropertyValueContainer> &valueChanges) { @@ -1176,7 +1192,10 @@ void Qt5InformationNodeInstanceServer::doRenderModelNode3DImageView( } else { QMetaObject::invokeMethod( m_modelNode3DImageViewData.rootItem, "createViewForObject", - Q_ARG(QVariant, objectToVariant(instanceObj))); + Q_ARG(QVariant, objectToVariant(instanceObj)), + Q_ARG(QVariant, m_materialPreviewData.env), + Q_ARG(QVariant, m_materialPreviewData.envValue), + Q_ARG(QVariant, m_materialPreviewData.model)); } // Need to render twice, first render updates spatial nodes @@ -2010,6 +2029,7 @@ void Qt5InformationNodeInstanceServer::createScene(const CreateSceneCommand &com if (ViewConfig::isQuick3DMode()) { setup3DEditView(instanceList, command); updateRotationBlocks(command.auxiliaryChanges); + updateMaterialPreviewData(command.auxiliaryChanges); } QObject::connect(&m_renderModelNodeImageViewTimer, &QTimer::timeout, @@ -2414,6 +2434,7 @@ void Qt5InformationNodeInstanceServer::requestModelNodePreviewImage(const Reques void Qt5InformationNodeInstanceServer::changeAuxiliaryValues(const ChangeAuxiliaryCommand &command) { updateRotationBlocks(command.auxiliaryChanges); + updateMaterialPreviewData(command.auxiliaryChanges); Qt5NodeInstanceServer::changeAuxiliaryValues(command); render3DEditView(); } diff --git a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.h b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.h index f3448de4ad..ea104442a6 100644 --- a/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.h +++ b/share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.h @@ -145,6 +145,7 @@ private: void updateLockedAndHiddenStates(const QSet<ServerNodeInstance> &instances); void handleInputEvents(); void resolveImportSupport(); + void updateMaterialPreviewData(const QVector<PropertyValueContainer> &valueChanges); void updateRotationBlocks(const QVector<PropertyValueContainer> &valueChanges); void removeRotationBlocks(const QVector<qint32> &instanceIds); @@ -191,6 +192,13 @@ private: QObject *m_3dHelper = nullptr; int m_need3DEditViewRender = 0; QSet<QObject *> m_dynamicObjectConstructors; + + struct PreviewData { + QString env; + QString envValue; + QString model; + }; + PreviewData m_materialPreviewData; }; } // namespace QmlDesigner |