gpt4 book ai didi

Qt3d 使用 QSceneLoader 和 qt 5.8

转载 作者:行者123 更新时间:2023-12-04 22:02:44 29 4
gpt4 key购买 nike

我尝试使用 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::状态(加载中)
断言:文件 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::状态(就绪)

最佳答案

我用 http://code.qt.io/cgit/qt/qt3d.git/tree/tests/manual/assimp-cpp加载我自己的 Collada 机器人模型,该模型可以正常工作。重要的几行是:

// Root entity
Qt3DCore::QEntity *sceneRoot = new Qt3DCore::QEntity();
...
// Scene loader
Qt3DCore::QEntity *sceneLoaderEntity = new Qt3DCore::QEntity(sceneRoot);
Qt3DRender::QSceneLoader *sceneLoader = new Qt3DRender::QSceneLoader(sceneLoaderEntity);
SceneWalker sceneWalker(sceneLoader);
QObject::connect(sceneLoader, &Qt3DRender::QSceneLoader::statusChanged, &sceneWalker, &SceneWalker::onStatusChanged);
sceneLoaderEntity->addComponent(sceneLoader);

所以用你的 obj 文件试试。

关于Qt3d 使用 QSceneLoader 和 qt 5.8,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42974307/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com