Details
-
Bug
-
Resolution: Unresolved
-
P2: Important
-
None
-
6.4.0
-
None
Description
Given the few changes in Qt3D between 6.3.2 and 6.4.0 I suspect a change in the meta-object system to have caused this. Therefore I had to guess a bit with the component.
Squish traverses the Qt object hierarchy from the Scene3D QtQuick item downwards into the 3D scene graph. The scene graph is built in QML for this tester app. When Squish asks the scene root (Scene3D::entity) for its children, I would expect it to get a list of QEntity instances or more specialized classes such as Qt3DCore::QCamera.
From Qt 6.4 on, the child objects however have Qt3DCore::Quick::Quick3DEntity as their metaObject()->className(). That type seems to inherit from QEntity, however it doesn't seem to properly upcast to a QCamera for example.
In Qt 6.3 and below, Squish used to at least get the correct information for a QCamera or QTransform entity from the meta object.
I remember from the last time I worked with Qt3D that the Quick3DEntity/Quick3DNode classes do not inherit from QEntity/QNode in C++ terms, but the meta objects are parented together at runtime. This (maybe) also led to property IDs not being monotonic from parent to child classes, e.g. the ranges overlap for everything more specific than QEntity. (I'm going to file a separate ticket for that.)
Please feel free to reach out for details, I struggle to reproduce the problem in simpler terms because I just don't understand where the chain starts...