2

I wrote a simple app to show a DEA file, from blender, stored in the resource file of the application, to learn Qt3D module, but all seems to be on QML, but I need mostly work on c++.

void add3dElements(Qt3DExtras::Qt3DWindow *view){
    //To control input
    Qt3DInput::QInputAspect *input = new Qt3DInput::QInputAspect;
    view->registerAspect(input);

// Root entity
Qt3DCore::QEntity *eRoot = new Qt3DCore::QEntity();

// Camera Entity
Qt3DRender::QCamera *eCamera = view->camera();
eCamera->lens()->setPerspectiveProjection(45.0f, 16.0f/9.0f, 0.1f, 1000.0f);
eCamera->setPosition(QVector3D(0, 0, 20.0f));
eCamera->setUpVector(QVector3D(0, 1, 0));
eCamera->setViewCenter(QVector3D(0, 0, 0));

//Light Entity
Qt3DCore::QEntity *eLight = new Qt3DCore::QEntity(eRoot);

//Light Point Entity
Qt3DRender::QPointLight *plLight = new Qt3DRender::QPointLight(eLight);
plLight->setColor("white");
plLight->setIntensity(1);
eLight->addComponent(plLight);

//Light Manager/Transformer
Qt3DCore::QTransform *tLightMng = new Qt3DCore::QTransform(eLight);
tLightMng->setTranslation(eCamera->position());
eLight->addComponent(tLightMng);

//Uploading Mesh
Qt3DRender::QMesh *mVehicle = new Qt3DRender::QMesh();
mVehicle->setSource(QUrl("://truck"));

//Mesh Manager/Trasnformer
Qt3DCore::QTransform *tMesh = new Qt3DCore::QTransform();
tMesh->setScale(5.f);

tMesh->setRotation(QQuaternion::fromAxisAndAngle(QVector3D(1.0f, 0.0f, 0.0f), 45.0f));
tMesh->setTranslation(QVector3D(-5.0f, 4.0f, -1.5));

//set Mesh Material       l
Qt3DExtras::QPhongMaterial *pmMesh = new Qt3DExtras::QPhongMaterial();
pmMesh->setDiffuse(QColor(QRgb(0x7733DD)));

//add Mesh Obj
Qt3DCore::QEntity *eMesh = new Qt3DCore::QEntity(eRoot);
eMesh->addComponent(mVehicle);
eMesh->addComponent(tMesh);
eMesh->addComponent(pmMesh);

//set Main Entity
view->setRootEntity(eRoot);
};

in the main function I call the upper procedure to display the object, a simple truck stored in the resource file of the application, but when I run nothing is shown, Can Anyone help me?

int main(int argc, char **argv)
{
QApplication app(argc, argv);
//key pad global management
QGlobalEventFilter *filter = new QGlobalEventFilter(qApp);
app.installEventFilter(filter);

QDesktopWidget *dtw = new QDesktopWidget();
Qt3DExtras::Qt3DWindow *view = new Qt3DExtras::Qt3DWindow();
view->defaultFrameGraph()->setClearColor(QColor(QRgb(0x4d4d4f)));

QWidget *container = QWidget::createWindowContainer(view);
QSize screenSize = view->screen()->size();
container->setMinimumSize(QSize(200, 100));
container->setMaximumSize(screenSize);


QWidget *widget = new QWidget;
widget->setWindowTitle("C.A.");

widget->setWindowState(Qt::WindowMaximized);
widget->setGeometry(dtw->availableGeometry());
add3dElements(view);
widget->show();

return app.exec();
}
eyllanesc
  • 235,170
  • 19
  • 170
  • 241
Silenzio76
  • 53
  • 7
  • Try first to load your truck model from harddisk to see if it is not a scale problem, as blender often changes the scale... – sirop May 12 '19 at 16:22
  • I did not find any information about the DEA format but if you mean DAE, QMesh is not able to load DAE. you need to use SceneLoader instead. See https://doc.qt.io/qt-5/qt3drender-qmesh.html for a list of supported formats. – vre May 13 '19 at 12:29

0 Answers0