aboutsummaryrefslogtreecommitdiffstats
path: root/share/qtcreator/qml/qmlpuppet
diff options
context:
space:
mode:
authorEike Ziller <eike.ziller@qt.io>2022-08-19 09:01:32 +0200
committerEike Ziller <eike.ziller@qt.io>2022-08-19 12:48:27 +0200
commit64247bf571eb8a383b039e29a30a7efa061dae1b (patch)
tree9e6a1985d7d2439e4fe503f6940c3f5681626ecf /share/qtcreator/qml/qmlpuppet
parent33001a866f400c03041ecbad2b5de630a7ca697e (diff)
parentaa5b971dca898ad5eb844a684c7f83b0ccbad983 (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')
-rw-r--r--share/qtcreator/qml/qmlpuppet/editor3d_qt5.qrc2
-rw-r--r--share/qtcreator/qml/qmlpuppet/editor3d_qt6.qrc2
-rw-r--r--share/qtcreator/qml/qmlpuppet/mockfiles/images/preview_landscape.hdrbin0 -> 100900 bytes
-rw-r--r--share/qtcreator/qml/qmlpuppet/mockfiles/images/preview_studio.hdrbin0 -> 108923 bytes
-rw-r--r--share/qtcreator/qml/qmlpuppet/mockfiles/qt5/MaterialNodeView.qml51
-rw-r--r--share/qtcreator/qml/qmlpuppet/mockfiles/qt5/ModelNode3DImageView.qml15
-rw-r--r--share/qtcreator/qml/qmlpuppet/mockfiles/qt6/MaterialNodeView.qml73
-rw-r--r--share/qtcreator/qml/qmlpuppet/mockfiles/qt6/ModelNode3DImageView.qml19
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.cpp23
-rw-r--r--share/qtcreator/qml/qmlpuppet/qml2puppet/instances/qt5informationnodeinstanceserver.h8
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
new file mode 100644
index 0000000000..2c6b4372d4
--- /dev/null
+++ b/share/qtcreator/qml/qmlpuppet/mockfiles/images/preview_landscape.hdr
Binary files differ
diff --git a/share/qtcreator/qml/qmlpuppet/mockfiles/images/preview_studio.hdr b/share/qtcreator/qml/qmlpuppet/mockfiles/images/preview_studio.hdr
new file mode 100644
index 0000000000..8ab060c1f4
--- /dev/null
+++ b/share/qtcreator/qml/qmlpuppet/mockfiles/images/preview_studio.hdr
Binary files differ
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