2017-03-23 12 views
0

QSceneLoaderを使用して、外部エディタで作成した3Dシーンを読み込めませんでした。そして、私は常にローディングステージでアサーションを取得します。 QMeshとして簡単にロードできるOBJモデルqtの例を使用します。Qt3d QteneでのQSceneLoaderの使用5.8

テストレポ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 ::ステータス(ロード) ASSERT:ファイルの "entities.size()== 1" IO \ qsceneloader.cpp、ライン215 デバッグエラー!

プログラム:C:\ Qtの\ Qt5.8.0 \ 5.8 \ msvc2015 \ binに\ Qt5Cored.dll モジュール:5.8.0 ファイル:グローバルの\ qglobal.cpp ライン:3070

ASSERT:「エンティティファイル内.size()== 1" IO \ qsceneloader.cpp、ライン215

(押して再試行がアプリケーションをデバッグする) Qt3DRender :: QSceneLoader ::ステータス(レディ)

答えて

0

私はロードするために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ファイルで試してみてください。

関連する問題