diff --git a/meshroom/ui/qml/Viewer3D/DepthMapLoader.qml b/meshroom/ui/qml/Viewer3D/DepthMapLoader.qml index 32f7ae1a..0f07ff91 100644 --- a/meshroom/ui/qml/Viewer3D/DepthMapLoader.qml +++ b/meshroom/ui/qml/Viewer3D/DepthMapLoader.qml @@ -1,4 +1,4 @@ -import DepthMapEntity 2.0 +import DepthMapEntity 2.1 /** * Support for Depth Map files (EXR) in Qt3d. diff --git a/meshroom/ui/qml/Viewer3D/EnvironmentMapEntity.qml b/meshroom/ui/qml/Viewer3D/EnvironmentMapEntity.qml new file mode 100644 index 00000000..0bd8877b --- /dev/null +++ b/meshroom/ui/qml/Viewer3D/EnvironmentMapEntity.qml @@ -0,0 +1,48 @@ +import QtQuick 2.9 +import Qt3D.Core 2.1 +import Qt3D.Render 2.1 +import Qt3D.Extras 2.10 + + +/** + * EnvironmentMap maps an equirectangular image on a Sphere. + * The 'position' property can be used to virually attach it to a camera + * and get the impression of an environment at an infinite distance. + */ +Entity { + id: root + + /// Source of the equirectangular image + property url source + /// Radius of the sphere + property alias radius: sphereMesh.radius + /// Number of slices of the sphere + property alias slices: sphereMesh.slices + /// Number of rings of the sphere + property alias rings: sphereMesh.rings + /// Position of the sphere + property alias position: transform.translation + + components: [ + SphereMesh { + id: sphereMesh + radius: 1000 + slices: 50 + rings: 50 + }, + Transform { + id: transform + translation: root.position + }, + DiffuseMapMaterial { + ambient: "#FFF" + shininess: 0 + specular: "#000" + diffuse: TextureLoader { + magnificationFilter: Texture.Linear + mirrored: true + source: root.source + } + } + ] +} diff --git a/meshroom/ui/qml/Viewer3D/MediaLibrary.qml b/meshroom/ui/qml/Viewer3D/MediaLibrary.qml index 56af1866..6542e2db 100644 --- a/meshroom/ui/qml/Viewer3D/MediaLibrary.qml +++ b/meshroom/ui/qml/Viewer3D/MediaLibrary.qml @@ -16,6 +16,9 @@ Entity { property bool pickingEnabled: false readonly property alias count: instantiator.count // number of instantiated media delegates + /// Camera to consider for positionning + property Camera camera: null + /// True while at least one media is being loaded readonly property bool loading: { for(var i=0; i