我尝试使用 QSceneLoader 加载在外部编辑器中创建的 3d 场景未成功。而且我总是在加载阶段得到断言。我使用 OBJ 模型 qt 的示例,它很容易加载为 QMesh。
测试回购https://bitbucket.org/ibnz/test_qt3d
#include <QApplication>
#include <QEntity>
#include <QSceneLoader>
#include <Qt3DWindow>
int main(int argc, char **argv)
{
QApplication app(argc, argv);
Qt3DExtras::Qt3DWindow *view = new Qt3DExtras::Qt3DWindow();
Qt3DCore::QEntity *rootEntity = new Qt3DCore::QEntity();
Qt3DRender::QSceneLoader *loader = new Qt3DRender::QSceneLoader(rootEntity);
QObject::connect(loader, &Qt3DRender::QSceneLoader::statusChanged,
&app, [](Qt3DRender::QSceneLoader::Status s){qDebug() << s;});
QUrl url = QUrl::fromLocalFile(":/obj/square-pot.obj");
loader->setSource(url);
view->setRootEntity(rootEntity);
view->show();
return app.exec();
}
Qt3DRender::QSceneLoader::Status(Loading) 断言:文件 io\qsceneloader.cpp 中的“entities.size() == 1”,第 215 行调试错误!
程序:C:\Qt\Qt5.8.0\5.8\msvc2015\bin\Qt5Cored.dll 模块:5.8.0 文件:global\qglobal.cpp 行:3070
断言:文件 io\qsceneloader.cpp 中的“entities.size() == 1”,第 215 行
(按重试调试应用程序)Qt3DRender::QSceneLoader::Status(Ready)