Qt Quick 3D Xr

はじめに

拡張現実(Extended Reality:XR)とは、仮想現実(Virtual Reality:VR)、拡張現実(Augmented Reality:AR)、複合現実(Mixed Reality:MR)を含む用語です。これらの技術は、ユーザーの周囲の世界に対する認識を変化させる没入体験を作り出します。Qt Quick 3D Xr モジュールは、さまざまなデバイスやプラットフォームで Qt Quick 3D を使用して XR アプリケーションを開発するための API を提供します。

Qt Quick 3D と Qt Quick 3D Xr アプリケーションの違い

エントリーポイント

開発者の視点から見た Qt Quick 3D と Qt Quick 3D Xr アプリケーションの主な違いは、シーンのエントリーポイントであり、実世界のユニットとトラッキングデータを意識することが不可欠です。

Qt Quick 3Dでは、最小限のアプリケーションはカメラ、ライト、3Dモデルで構成されます。これらの要素の位置とサイズは、シーンの座標系で定義されます。座標系は任意であり、アプリケーションのニーズに合わせて開発者が定義できます。

View3D {
    width: 1280
    height: 720

    PerspectiveCamera {
        position: Qt.vector3d(0, 200, 300)
    }

    DirectionalLight {
    }

    Node {
        id: sceneRoot
        Model {
            id: model
            position: Qt.vector3d(0, -200, 0)
            source: "#Cylinder"
            materials: [ PrincipledMaterial {
                    baseColor: "red"
            }]
        }
    }
}

XRアプリケーションでは、シーンを定義する際に実世界の単位とトラッキングデータを考慮します。カメラの位置と向きは、デバイスの、またはヘッドマウントディスプレイ(HMD)の場合はユーザーの頭の位置と向きによって定義されます。シーンの単位は実世界の単位に合わせる。例えば、ドアや机は、現実世界でも仮想世界と同じ大きさにしたいものです。

注意: Qt Quick 3D Xr アプリケーションのエントリーポイントは、View3D ではなく、XrView です。さらに、XrOrigin はシーンの原点を定義し、トラッキングされたアイテムが相対的に配置されます。

XrView {
    DirectionalLight {
    }

    xrOrigin: XrOrigin {
        XrController {
            id: rightController
            controller: XrController.ControllerRight
        }
        XrController {
            id: leftController
            controller: XrController.ControllerLeft
        }
    }

    Node {
        id: sceneRoot
        Model {
            id: floor
            source: ":meshes/floor.mesh"
            materials: [ PrincipledMaterial {
                    baseColor: "green"
                }]
        }

        Model {
            id: table
            property real height: 0.7
            position: Qt.vector3d(0, height - 2.5, 0)
            source: ":meshes/table.mesh"
            materials: PrincipledMaterial {
                baseColor: "white"
            }
        }

        Model {
            id: monitor
            source: ":meshes/monitor.mesh"
            y: table.height
            XrItem {
                id: theScreen
                y: monitor.yOffset + height
                x: -width / 2
                width: monitor.width
                height: monitor.height
                contentItem: ScreenContent {}
            }
        }
    }
}

追加のCMake関数

すべてのQt Quick 3D Xr のサンプルの CmakeLists.txt ファイルにあるように、プロジェクトのトップレベルの CMakeLists ファイルにいくつかの関数を追加する必要があります。

この行をプロジェクトのCMakeListsファイルに追加することで、カスタムAndroidManifest.xml

if(ANDROID)
    set_property(TARGET xr_simple APPEND PROPERTY QT_ANDROID_PACKAGE_SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/android)

AndroidManifest.xml の設定の詳細については、Getting Started With Meta Quest 3ページの関連セクションを参照してください。

CMakeLists.txtの変更はvisionOSにも適用され、MacOSXBundleInfo.plist.in

endif()

if (APPLE AND CMAKE_SYSTEM_NAME STREQUAL "visionOS")
    set_target_properties(xr_simple PROPERTIES
        MACOSX_BUNDLE_GUI_IDENTIFIER io.qt.xr_simple
        MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/visionos/MacOSXBundleInfo.plist.in
    )
endif()

ここから先は?

Meta Quest 3を始める、またはApple Vision Proを始めるをご覧ください。サポートされるプラットフォームとデバイスの詳細については、「サポートされるプラットフォーム」のページをご覧ください。

特定のQt Quick 3D Xr APIをお探しの場合は、API Reference をご覧ください。また、Qt Quick 3D Xr APIがどのように使用できるかを示すQt Quick 3D Xr Examplesをお試しください。

©2024 The Qt Company Ltd. ここに含まれるドキュメントの著作権は、それぞれの所有者に帰属します。 本書で提供されるドキュメントは、Free Software Foundation が発行したGNU Free Documentation License version 1.3に基づいてライセンスされています。 Qtおよびそれぞれのロゴは、フィンランドおよびその他の国におけるThe Qt Company Ltd.の 商標です。その他すべての商標は、それぞれの所有者に帰属します。