qmlAlembic
qmlAlembic copied to clipboard
Qt 5.14.1 support
Hi,
I spent 2 days trying to use qmlAlembic with Qt 5.14.1 (also 5.13.1) and it doesn't work. I installed it with cmake, qmake (my own .pro file), even tried with copying all source to project and building all together - always same effect which look like this:
Cannot assign to property of unknown type ""
(Qt 5.14.1)
Can not assign value of type "<unknown type>" to property "entity", expecting an object
(Qt 5.13.1)
Error comes from
QQmlPropertyValidator::validateObjectBinding(QQmlPropertyData*, QString const&, QV4::CompiledData::Binding const*)
- qqmlpropertyvalidator.cpp inside qtdeclarative module.
It seems like some problem with reading plugin metadata. I tried to debug inside qt source but after my own compilation there were plenty of other problems. Did anyone face something similiar? Should qmlAlembic work with newer Qt Versions than 5.11?
Yes, it works for me with qt-5.13.0 on linux and qt-5.14.1 on windows. What platform are you using?
I working on Ubuntu 18.04 and Qt installed from offline installer.
Difficult to help as I cannot reproduce it. Could you share your full log when using the provided cmake?
There are some warnings but everything is building CMake output:
-- The CXX compiler identification is GNU 7.4.0
-- Check for working CXX compiler: /usr/bin/c++
-- Check for working CXX compiler: /usr/bin/c++ -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
CMake Deprecation Warning at CMakeLists.txt:9 (cmake_policy):
The OLD behavior for policy CMP0043 will be removed from a future version
of CMake.
The cmake-policies(7) manual explains that the OLD behaviors of all
policies are deprecated and that a policy should be set to OLD only under
specific short-term circumstances. Projects should be ported to the NEW
behavior and not rely on setting a policy to OLD.
ILMBASE_ROOT is undefined
-- #define ILMBASE_VERSION_STRING "2.3.0"
-- ILMBASE INCLUDE PATH: /usr/local/include/OpenEXR
-- HALF LIB: /usr/local/lib/libHalf.so
-- IEX LIB: /usr/local/lib/libIex.so
-- IEXMATH LIB: /usr/local/lib/libIexMath.so
-- ILMTHREAD LIB: /usr/local/lib/libIlmThread.so
-- IMATH LIB: /usr/local/lib/libImath.so
-- Configuring done
-- Generating done
-- Build files have been written to: /home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/build
Make output:
Scanning dependencies of target alembicEntityQmlPlugin_autogen
[ 12%] Automatic MOC for target alembicEntityQmlPlugin
[ 12%] Built target alembicEntityQmlPlugin_autogen
Scanning dependencies of target alembicEntityQmlPlugin
[ 25%] Building CXX object src/CMakeFiles/alembicEntityQmlPlugin.dir/alembicEntityQmlPlugin_autogen/mocs_compilation.cpp.o
[ 37%] Building CXX object src/CMakeFiles/alembicEntityQmlPlugin.dir/AlembicEntity.cpp.o
[ 50%] Building CXX object src/CMakeFiles/alembicEntityQmlPlugin.dir/BaseAlembicObject.cpp.o
[ 62%] Building CXX object src/CMakeFiles/alembicEntityQmlPlugin.dir/CameraLocatorEntity.cpp.o
/home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/CameraLocatorEntity.cpp: In constructor ‘abcentity::CameraLocatorEntity::CameraLocatorEntity(Qt3DCore::QNode*)’:
/home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/CameraLocatorEntity.cpp:28:62: warning: ‘Qt3DRender::QBuffer::QBuffer(Qt3DRender::QBuffer::BufferType, Qt3DCore::QNode*)’ is deprecated [-Wdeprecated-declarations]
auto vertexDataBuffer = new QBuffer(QBuffer::VertexBuffer);
^
In file included from /home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/QBuffer:1:0,
from /home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/CameraLocatorEntity.cpp:4:
/home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/qbuffer.h:99:28: note: declared here
QT_DEPRECATED explicit QBuffer(BufferType ty, Qt3DCore::QNode *parent = nullptr);
^~~~~~~
/home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/CameraLocatorEntity.cpp:33:53: warning: ‘void Qt3DRender::QAttribute::setDataType(Qt3DRender::QAttribute::VertexBaseType)’ is deprecated [-Wdeprecated-declarations]
positionAttribute->setDataType(QAttribute::Float);
^
In file included from /home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/QAttribute:1:0,
from /home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/CameraLocatorEntity.cpp:3:
/home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/qattribute.h:130:24: note: declared here
QT_DEPRECATED void setDataType(VertexBaseType type);
^~~~~~~~~~~
/home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/CameraLocatorEntity.cpp:34:37: warning: ‘void Qt3DRender::QAttribute::setDataSize(uint)’ is deprecated [-Wdeprecated-declarations]
positionAttribute->setDataSize(3);
^
In file included from /home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/QAttribute:1:0,
from /home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/CameraLocatorEntity.cpp:3:
/home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/qattribute.h:131:24: note: declared here
QT_DEPRECATED void setDataSize(uint size);
^~~~~~~~~~~
/home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/CameraLocatorEntity.cpp:48:61: warning: ‘Qt3DRender::QBuffer::QBuffer(Qt3DRender::QBuffer::BufferType, Qt3DCore::QNode*)’ is deprecated [-Wdeprecated-declarations]
auto colorDataBuffer = new QBuffer(QBuffer::VertexBuffer);
^
In file included from /home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/QBuffer:1:0,
from /home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/CameraLocatorEntity.cpp:4:
/home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/qbuffer.h:99:28: note: declared here
QT_DEPRECATED explicit QBuffer(BufferType ty, Qt3DCore::QNode *parent = nullptr);
^~~~~~~
/home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/CameraLocatorEntity.cpp:53:50: warning: ‘void Qt3DRender::QAttribute::setDataType(Qt3DRender::QAttribute::VertexBaseType)’ is deprecated [-Wdeprecated-declarations]
colorAttribute->setDataType(QAttribute::Float);
^
In file included from /home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/QAttribute:1:0,
from /home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/CameraLocatorEntity.cpp:3:
/home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/qattribute.h:130:24: note: declared here
QT_DEPRECATED void setDataType(VertexBaseType type);
^~~~~~~~~~~
/home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/CameraLocatorEntity.cpp:54:34: warning: ‘void Qt3DRender::QAttribute::setDataSize(uint)’ is deprecated [-Wdeprecated-declarations]
colorAttribute->setDataSize(3);
^
In file included from /home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/QAttribute:1:0,
from /home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/CameraLocatorEntity.cpp:3:
/home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/qattribute.h:131:24: note: declared here
QT_DEPRECATED void setDataSize(uint size);
^~~~~~~~~~~
[ 75%] Building CXX object src/CMakeFiles/alembicEntityQmlPlugin.dir/IOThread.cpp.o
[ 87%] Building CXX object src/CMakeFiles/alembicEntityQmlPlugin.dir/PointCloudEntity.cpp.o
/home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/PointCloudEntity.cpp: In member function ‘void abcentity::PointCloudEntity::setData(const Alembic::Abc::v11::IObject&)’:
/home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/PointCloudEntity.cpp:33:62: warning: ‘Qt3DRender::QBuffer::QBuffer(Qt3DRender::QBuffer::BufferType, Qt3DCore::QNode*)’ is deprecated [-Wdeprecated-declarations]
auto vertexDataBuffer = new QBuffer(QBuffer::VertexBuffer);
^
In file included from /home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/QBuffer:1:0,
from /home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/PointCloudEntity.cpp:4:
/home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/qbuffer.h:99:28: note: declared here
QT_DEPRECATED explicit QBuffer(BufferType ty, Qt3DCore::QNode *parent = nullptr);
^~~~~~~
/home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/PointCloudEntity.cpp:38:53: warning: ‘void Qt3DRender::QAttribute::setDataType(Qt3DRender::QAttribute::VertexBaseType)’ is deprecated [-Wdeprecated-declarations]
positionAttribute->setDataType(QAttribute::Float);
^
In file included from /home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/QAttribute:1:0,
from /home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/PointCloudEntity.cpp:3:
/home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/qattribute.h:130:24: note: declared here
QT_DEPRECATED void setDataType(VertexBaseType type);
^~~~~~~~~~~
/home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/PointCloudEntity.cpp:39:37: warning: ‘void Qt3DRender::QAttribute::setDataSize(uint)’ is deprecated [-Wdeprecated-declarations]
positionAttribute->setDataSize(3);
^
In file included from /home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/QAttribute:1:0,
from /home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/PointCloudEntity.cpp:3:
/home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/qattribute.h:131:24: note: declared here
QT_DEPRECATED void setDataSize(uint size);
^~~~~~~~~~~
/home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/PointCloudEntity.cpp:48:61: warning: ‘Qt3DRender::QBuffer::QBuffer(Qt3DRender::QBuffer::BufferType, Qt3DCore::QNode*)’ is deprecated [-Wdeprecated-declarations]
auto colorDataBuffer = new QBuffer(QBuffer::VertexBuffer);
^
In file included from /home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/QBuffer:1:0,
from /home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/PointCloudEntity.cpp:4:
/home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/qbuffer.h:99:28: note: declared here
QT_DEPRECATED explicit QBuffer(BufferType ty, Qt3DCore::QNode *parent = nullptr);
^~~~~~~
/home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/PointCloudEntity.cpp:91:50: warning: ‘void Qt3DRender::QAttribute::setDataType(Qt3DRender::QAttribute::VertexBaseType)’ is deprecated [-Wdeprecated-declarations]
colorAttribute->setDataType(QAttribute::Float);
^
In file included from /home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/QAttribute:1:0,
from /home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/PointCloudEntity.cpp:3:
/home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/qattribute.h:130:24: note: declared here
QT_DEPRECATED void setDataType(VertexBaseType type);
^~~~~~~~~~~
/home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/PointCloudEntity.cpp:92:34: warning: ‘void Qt3DRender::QAttribute::setDataSize(uint)’ is deprecated [-Wdeprecated-declarations]
colorAttribute->setDataSize(3);
^
In file included from /home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/QAttribute:1:0,
from /home/michal/workspace/skyrenderergui/3rdparty/qmlAlembic/src/PointCloudEntity.cpp:3:
/home/michal/workspace/Qt5.14.1/5.14.1/gcc_64/include/Qt3DRender/qattribute.h:131:24: note: declared here
QT_DEPRECATED void setDataSize(uint size);
^~~~~~~~~~~
[100%] Linking CXX shared library libalembicEntityQmlPlugin.so
[100%] Built target alembicEntityQmlPlugin
Does it work with a newer GCC version? Like 9.3?
Compiled with 9.3.0 - same problem. I thought it might be connected with QGuiApplication which I use in main but changing to QApplication didn't take effect.