3D-модель, загруженная из файла OBJ, не отображается.C++

Программы на C++. Форум разработчиков
Ответить Пред. темаСлед. тема
Anonymous
 3D-модель, загруженная из файла OBJ, не отображается.

Сообщение Anonymous »

Я пытаюсь загрузить 3D-модель из файла OBJ. Qt вроде бы его загружает, судя по изменению статуса SceneLoader, но в сцене не отображает.
В конструкторе класса My3DScene пытаюсь создать сцену с 3D-моделью. Код приведен ниже.
#include "my3dscene.h"

My3DScene::My3DScene(Qt3DCore::QEntity *parent){

this->camera = this->view.camera();
this->mpl = new MyPointLight(parent);

this->objectEntity = new Qt3DCore::QEntity(parent);
this->sceneLoader = new Qt3DRender::QSceneLoader(objectEntity);
this->mesh = new Qt3DRender::QMesh();
this->planeMaterials = new Qt3DExtras::QPhongMaterial(objectEntity);
this->objectTransform = new Qt3DCore::QTransform(objectEntity);

this->camera->lens()->setPerspectiveProjection(
60.0f,
(float)view.width()/(float)view.height(),
0.1f,
1000.0f
);
this->camera->setPosition(QVector3D(0.0f, 0.0, 40.0));
this->camera->setViewCenter(QVector3D(0.0f, 0.0f, 0.0f));
this->view.setRootEntity(parent);

this->sceneLoader->setSource(QUrl("pathToFileModel/plane.obj"));
//this->mesh->setSource(QUrl::fromLocalFile("pathToFileModel/plane.obj"));

this->planeMaterials->setDiffuse(QColor(0, 0, 0));
this->objectTransform->setTranslation(QVector3D(0.0,0.0,0.0));
this->objectTransform->setScale(0.1f);

this->objectEntity->addComponent(this->sceneLoader);
this->objectEntity->addComponent(this->planeMaterials);
this->objectEntity->addComponent(this->objectTransform);

QObject::connect(sceneLoader, &Qt3DRender::QSceneLoader::statusChanged, [](Qt3DRender::QSceneLoader::Status status) {
switch (status) {
case Qt3DRender::QSceneLoader::None:
qDebug() objectEntity;
delete this->camera;
delete this->mpl;
delete this->orbitCamContr;
}

void My3DScene::viewScene(){

this->view.show();
}

Я пробовал использовать как файл, который создал сам, так и файл, скачанный из Интернета. Результат тот же. Аналогичная ситуация и при попытке загрузить модель через Mesh. Я использую Qt версии 6.8.
В качестве модели из Интернета я использовал вот эту: https://www.cgtrader.com/free-3d-models ... t/private- самолет/low-poly-plane-eba9c78a-8aa6-47b9-ae47-e56b13bd7411
Класс:
my3dscene.h:#ifndef MY3DSCENE_H
#define MY3DSCENE_H

#include
#include
#include
#include

#include "mypointlight.h"

class My3DScene
{
private:

Qt3DExtras::Qt3DWindow view;
Qt3DRender::QCamera *camera {nullptr};
MyPointLight* mpl {nullptr};
Qt3DExtras::QOrbitCameraController* orbitCamContr {nullptr};

Qt3DCore::QEntity *objectEntity {nullptr};
Qt3DRender::QSceneLoader *sceneLoader {nullptr};
Qt3DRender::QMesh *mesh {nullptr};
Qt3DExtras::QPhongMaterial *planeMaterials {nullptr};
Qt3DCore::QTransform *objectTransform {nullptr};

public:
My3DScene(Qt3DCore::QEntity *parent = nullptr);
~My3DScene();

void viewScene();

};

#endif

main.cpp:
#include
#include "my3dscene.h"

int main(int argc, char *argv[])
{
QGuiApplication app(argc, argv);
Qt3DCore::QEntity *rootEntity = new Qt3DCore::QEntity;
My3DScene scene(rootEntity);

scene.viewScene();
return app.exec();
}


Подробнее здесь: https://stackoverflow.com/questions/791 ... -displayed
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C++»