QCuboidGeometry

Alles rund um die Programmierung mit Qt
Antworten
Chri
Beiträge: 100
Registriert: 23. Juni 2017 12:32

QCuboidGeometry

Beitrag von Chri »

Hi

Beschäftige mich mit QT-3D und habe aus einem Beispiel zusammengebastelt:

Code: Alles auswählen

Qt3DExtras::QCuboidMesh *cuboid = new Qt3DExtras::QCuboidMesh();

    // CuboidMesh Transform
    Qt3DCore::QTransform *cuboidTransform = new Qt3DCore::QTransform();
    cuboidTransform->setScale(4.0f);
    cuboidTransform->setTranslation(QVector3D(5.0f, -4.0f, 0.0f));

    Qt3DExtras::QPhongMaterial *cuboidMaterial = new Qt3DExtras::QPhongMaterial();
    cuboidMaterial->setDiffuse(QColor(QRgb(0x665423)));

    //Cuboid
    m_cuboidEntity = new Qt3DCore::QEntity(m_rootEntity);
    m_cuboidEntity->addComponent(cuboid);
    m_cuboidEntity->addComponent(cuboidMaterial);
    m_cuboidEntity->addComponent(cuboidTransform); .... 

wobei im Header:
    Qt3DCore::QEntity *m_rootEntity;
    Qt3DCore::QEntity *m_cuboidEntity;
Ich möchte aber kein Netz sondern einen Körper, also habe ich geändert auf:

Code: Alles auswählen

   //Qt3DExtras::QCuboidMesh *cuboid = new Qt3DExtras::QCuboidMesh();
    Qt3DExtras::QCuboidGeometry *cuboid =  new Qt3DExtras::QCuboidGeometry();
und bekomme einen Fehler bei:

Code: Alles auswählen

m_cuboidEntity->addComponent(cuboid);
Wie wär es richtig?

LG
Chri
Die Sprache des Technikers ist die Skizze
hilefoks
Beiträge: 144
Registriert: 13. März 2008 16:09

Re: QCuboidGeometry

Beitrag von hilefoks »

Moin,

ich glaube du bringst noch ein paar Begriffe der 3D Welt durcheinander. Lies dich mal durch Qt 3D Overview und schau dir das Video Introducing Qt 3D an. Im Video wird insbesondere auch das Entity Component System (ECS) gut erklärt.

Vereinfacht gesagt beschreibt ein Mesh die grundlegende Form deines 3D Objekts - siehe https://de.wikipedia.org/wiki/Polygonnetz. Über dieses Gerüst kann man dann sozusagen einen Überzug spannen - wichtige Begriffe sind da Material, Shader, Texture, Texture Mapping usw..

Also - dein Mesh willst du behalten, du musst es nur noch tapezieren. ;-)

MfG
Hilefoks
Antworten