Skip to content

Kuesa simple-cpp Example

Demonstrates the use of the Kuesa API to import a glTF2 file inside a Window

simple-cpp-example.png

Setup Window and OpenGL requirements

setupDefaultSurfaceFormat can be conveniently used to request the appropriate OpenGL context requirements for Kuesa.

1
2
3
4
int main(int ac, char **av)
{
    // Set OpenGL requirements
    Kuesa::Qt3D::setupDefaultSurfaceFormat();

Filename: simple-cpp/main.cpp

Next an instance of Window is created. It internally launches the Qt 3D engine and provides a wrapper around GLTF2Importer and ForwardRenderer .

1
2
    QGuiApplication app(ac, av);
    KuesaUtils::Window view;

Filename: simple-cpp/main.cpp

Importing a glTF2 File

SceneConfiguration is used to speficy what glTF file to load and which animations to play. ViewConfiguration is used to specify from which camera the 3D scene should be viewed.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
KuesaUtils::SceneConfiguration *prepareScene()
{
    KuesaUtils::SceneConfiguration *sceneConfiguration = new KuesaUtils::SceneConfiguration;
    sceneConfiguration->setSource(QUrl("file:" ASSETS_DIR "/car.gltf"));

    KuesaUtils::ViewConfiguration *mainViewConfiguration = new KuesaUtils::ViewConfiguration;
    mainViewConfiguration->setCameraName(QStringLiteral("CamSweep_Orientation"));
    sceneConfiguration->addViewConfiguration(mainViewConfiguration);

    // List of animations to play
    const QString animationNames[] = {
        QStringLiteral("MatMotorBlockAction"),
        QStringLiteral("TriggerMotorInfoAction"),
        QStringLiteral("DoorLeftAction"),
        QStringLiteral("DoorRightAction"),
        QStringLiteral("HoodAction"),
        QStringLiteral("SweepCamAction"),
        QStringLiteral("SweepCamCenterAction"),
        QStringLiteral("SweepCamPitchAction"),
    };

    for (const QString &animationName : animationNames) {
        Kuesa::Qt3D::AnimationPlayer *player = new Kuesa::Qt3D::AnimationPlayer();
        player->setClip(animationName);
        player->setRunning(true);
        player->setLoopCount(Kuesa::Qt3D::AnimationPlayer::Infinite);
        sceneConfiguration->addAnimationPlayer(player);
    }
    return sceneConfiguration;
}

Filename: simple-cpp/main.cpp

1
2
3
4
5
6
7
8
    // Configure Scene Content
    KuesaUtils::SceneConfiguration *sceneConfiguration = prepareScene();

    // Set SceneConfiguration on 3D View
    view.scene()->setActiveScene(sceneConfiguration);

    // Show the window
    view.show();

Filename: simple-cpp/main.cpp


Updated on 2023-07-03 at 11:02:17 +0000