Multiselection is now properly fit to the view when fit object is used.
Fixes: QDS-4608
Change-Id: Ia80133fc861bd177b9102423ebef37b592c74758
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Import QtQuick3D 1.15 no longer works in Qt 6.2, so provide a separate
set of qml files for each major Qt version.
Fixes: QDS-4642
Change-Id: I3e17fb248f71f87fb9a40dcad3c03e037cafb0f4
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Samuel Ghinet <samuel.ghinet@qt.io>
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Scenerotation was queried from the node for each drag move, causing
drift in the calculations. Locking the rotation at drag start makes
negative scaling work nicely.
Also enabled negative values on all axis scaling, since it makes no
sense to block it there when single axis/planar scaling already allows
it.
Fixes: QDS-4493
Change-Id: I7a38a08556bd6d729974332d312aa4aa4e84ea30
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Gizmo orientation in multiselection case should always be aligned to
the global axes, so we now reset multiselection on release
handlers of rotation gizmo.
Fixes: QDS-4492
Change-Id: Ic10f26f65df42869e4643f48457bcbcbf970fe9a
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Add support for moving, rotating, and scaling a multiselection of 3D
nodes in 3D edit view.
Fixes: QDS-4313
Change-Id: Icf83911ac6f87fde1cb79d6f5059ae01ed434d7f
Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
QtQuick3D doesn't support both rotation and eulerRotation set on same
node, so we delete existing quaternion rotation if user sets an euler
rotation to the node. If node has quaternion rotation animation,
we block any change to eulerRotation in the node.
3D editor also disables the rotation gizmo for blocked nodes.
Task-number: QDS-4335
Change-Id: I4ce7b022c732a9547751f101548ecea948279db8
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
MouseArea3D::applyFreeRotation only takes four arguments, so remove
the unused _targetPosOnScreen property.
Change-Id: I10940f6954de89cb7a01bdbea6a0a55e69cb9c65
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Currently it is enabled via #define FPS_COUNTER in
qt5informationnodeinstanceserver.cpp
Change-Id: If9af313232fc91fca674a43c7ca70b04db7e59f7
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Port QQuickRenderControl rendering used for 3D edit view also for
2D views.
This also fixes the issue of only partially rendered form editor
view for root items with non-origin position by adjusting the
position to 0,0 on the puppet side via an extra injected item.
As a result of the root item always being rendered at origin,
the visualization of the root item offset is no longer visible in
the form editor (the checkerboard background item).
Change-Id: Ide29510ef52513340d205ed35ac35c8cce66715c
Fixes: QDS-3159
Fixes: QDS-3175
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Rendering is now done using QRhi private API and QQuickRenderControl.
In addition, input event handling was changed to use sendEvent instead
of postEvent for our fake mouse events, as mouse event position
gets corrupted somehow if event is handled asynchronously when the
window is hidden.
Change-Id: Ia2466622cd4b60e3f73e0ad3e7e4da7c7c335451
Fixes: QDS-3125
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
The issue in QtQuick3D blocking effect previews (QTBUG-86616) is not
going to be fixed in Qt 5 anymore, and Effect was moved to QtQuick3D
from QtQuick3D.Effects in Qt 6, so this can't be written in Qt 5 and
Qt 6 compatible manner anyway. Removed the support for now as it needs
to be implemented differently if we want to enable effect previews in
the future.
Change-Id: Ic786608572c3350e22dab75366cb93586c29459a
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
3D material preview is not dependent on QtQuick3D import in the open
QML document, so we can enable it even when QtQuick3D is missing.
Change-Id: I5cb35ef403599704684ebe87c81cd949f828ad00
Fixes: QDS-2912
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Added lock feature support for 3D editor. Also refactored the hide
support, since the two use largely similar logic.
Task-number: QDS-2915
Change-Id: I627848f3a3a73881427a03aeec6793fd26a1885a
Reviewed-by: Henning Gründl <henning.gruendl@qt.io>
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
This enables showing preview tooltip for 2D (Item based) components.
We render the component from scratch for this purpose instead of using
existing renders done for form editor to ensure preview doesn't
include any local changes to component.
Also cache tooltips as QPixmaps in NodeInstanceView instead of QImages
to avoid unnecessary image to pixmap conversions when using cached
data.
Change-Id: I3082c5c846f605a765a81408767266d1ff7a12d7
Fixes: QDS-2762
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
This enables showing preview tooltip for all imported 3D models.
Also moved the preview image handling out of the model and into
NodeInstanceView, where it fits more naturally.
Change-Id: I48135d06aa8d9313525dae618e22692563da78fd
Fixes: QDS-2807
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Only the source and geometry properties of the model is taken from the
node, rest of the properties are always same for consistent style.
Change-Id: I2355ce91c3e3d6f23b9f27ecf31430e3e13d0c80
Fixes: QDS-2764
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Request 3D preview image for material instances from puppet
to show on tooltip.
Support for effect previews is also done, but handler for it is not
registered, as effects cannot be shared between windows due to
issue QTBUG-86616.
Also refactored the preview image support out of navigator
to make it more accessible by other components.
Change-Id: Ie08ba218f929660c2e43d39578997a5a1a883efd
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Now pivot point in 3D edit view will always appear same size regardless
of the viewing angle.
Change-Id: Iddd4fc8800eecbc63f16fc130b7f93dcba4d5d65
Fixes: QDS-2570
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Recent changes to Quick3D changed how NoLighting materials work.
Emissive color no longer has effect in that case, so use diffuse color
instead.
Change-Id: Idde43f5bdf06a432a5dd06f9c52d6812fa790a73
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Changed object selection to be done on press instead of click, and
the initial press now also starts free drag of the selected object
after a short distance moved to prevent accidental drags.
Change-Id: I61656661cd734d167ef9f8db42d986f0e97402a3
Fixes: QDS-2376
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
The scene id shown on the corner of edit 3D view is updated and
toolstates are also stored under the new id.
Change-Id: Ib3ac2f2bb829a5d908e22932c313c76bd4143592
Fixes: QDS-2277
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Explicit return values in qml functions cause errors in some Qt
versions, so remove the need for it.
Change-Id: Idd3035b19b56c25e94bc846c3de8f7aa5381e1eb
Reviewed-by: Artur Shepilko <artur.shepilko@nomadbyte.com>
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Upped default priority of all directional draggables a bit to make
them preferable to free rotation ball.
Change-Id: If934cb723e8c1a8ca9a114d71b19cbfc196e2682
Fixes: QDS-2286
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
It's sometimes hard to tell which scene is shown in 3D edit view, so
added the scene id to the upper left corner of the view.
Task-number: QDS-2239
Change-Id: I5999e41c3f92028cd9a0f79ae0c8b72263d9ce42
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
MouseArea.containsMouse gets confused when the mouse input gets grabbed
by an overlapping 3D mouse area.
Change-Id: I6ee69f217d95c5e4f3f5361e14c932ce0a2feab0
Fixes: QDS-2187
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Labels went under IconGizmos, so increased the z-value to match that
of MoveGizmo label.
Change-Id: I2620db0cadfadc73808a3a9f9967aadf87c9a863
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Also changed the point light mesh to just a single camera plane ring
based on discussions with UX.
Change-Id: If9e847440570bbe87483194c0b417cf09c7084a2
Fixes: QDS-2041
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Inner cone visualization for spotlight was added, as well as drag
handles to adjust inner and outer cone angles and fade.
Fade handle adjusts fades in order: quadratic, linear, constant.
If a specific fade value is zero, the next one in list is chosen
for adjustment.
Change-Id: I921936d9782de511558bc6c24cfa0953cce494f0
Fixes: QDS-2038
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Brightness can be controlled by dragging on the brightness indicator
arrow of the light gizmo in 3D edit view.
Change-Id: I317f5ee08b59bcc0bebf3fdf59861df15ef13c84
Fixes: QDS-2039
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Directional light model was made constant size, as it doesn't have
actual physical presence.
Spot light cone now shows the cone angle correctly and the length of
the cone is calculated so that 5% of the brightness reaches the
center of the cone bottom.
Area light rectangle matches the area of the light.
Point light mesh changed to three perpendicular circles.
Same formula for size of the circles used as for spotlight length.
All light types share a common brightness indicator arrow.
Task-number: QDS-2037
Change-Id: I534dbcda9cfa2a7768c2537868ba83818979b250
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
The closeup option is used for itemlibrary thumbnail generation, where
the regular fit produces too small images on most imports.
Change-Id: I2901a2e20d100b155111f002b22489df945e9e01
Fixes: QDS-1899
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Light gizmo icons and models are now colored based on the light color.
Image provider is used instead of simpler ColorOverlay component,
as ColorOverlay doesn't properly handle transparency when rendered
offscreen in puppet.
Change-Id: If6af915bca9bea2cb48ac23ac6c5ba46dc150e3b
Fixes: QDS-1733
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
There is no keyboard handling on puppet side anymore, so no need to
set focus, either.
Change-Id: I00ebf7de1ac0b339c1323a62a61a1c086123d848
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Also remove the toolbar buttons from the puppet side and few other
clean-ups.
Task-number: QDS-1849
Change-Id: I075753552043a9f1bc649f6baf54dc7b689e4f64
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Qmlpuppet now allows creating icon from qml source code.
Invoke qmlpuppet with following arguments to create icons:
--rendericon <size> <icon file name> <icon qml source>
E.g. --rendericon 24 ~/my_icon.png ~/my_icon.qml
Two icons are created, one with size x size dimensions and
one with double the dimensions and "@2x" injected into the file name.
3D asset import utilizes this icon rendering to produce item library
icons for imported components.
Change-Id: I92c62c80d961f5f61a0ce1c09b32bbcbf80ea56c
Fixes: QDS-1052
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Added icon for spot light gizmo and updated directional light icon.
Removed icons that are no longer needed on puppet side.
Change-Id: Id1e72c80e122250f7edc8a69a0e5720e755b96fc
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>
Edit 3D view tool state is now always initialized to a stored
"no scene" state if one exists to ensure further scene changes
properly inherit the tool state in all cases.
Change-Id: Ifee5fe58255b51d9dbed57abb2020ea00d94af2c
Fixes: QDS-1750
Reviewed-by: Mahmoud Badri <mahmoud.badri@qt.io>