Qt3D показать файл DEA - PullRequest
0 голосов
/ 12 мая 2019

Я написал простое приложение для показа файла DEA из blender, хранящегося в файле ресурсов приложения, для изучения модуля Qt3D, но все, похоже, на QML, но мне нужна в основном работа на c ++.

enter code here

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);
};

в основной функции. Я вызываю верхнюю процедуру для отображения объекта, простого грузовика, хранящегося в файле ресурсов приложения, но когда я запускаю, ничего не отображается, Может ли кто-нибудь мне помочь?

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();
}
...