Qt 3D:マルチビューポートのQMLサンプル
複数のビューポートからシーングラフをレンダリングするQMLのサンプルです。

マルチビューポートでは、4台の仮想カメラの視点からシーングラフをレンダリングし、ウィンドウの4つの象限に表示します。これは3D CADやモデリングツールで一般的な構成ですが、カーレースゲームのバックミラーやCCTVカメラの表示をレンダリングするために調整することも可能です。
詳細については、「マルチビューポートのFrameGraph」を参照してください。
例の動作
以下の手順でサンプルを実行できます:
- Qt Creator
Welcome モードを開き、Examples からこのサンプルを選択してください。詳細については、「Qt Creator: チュートリアル: ビルドと実行」を参照してください。
- Qt Extension for Visual Studio Code
Command Palette から「Qt: Open Qt examples 」コマンドを実行し、リストからサンプルを選択します。詳細については、「Qt Extension for Visual Studio Code: チュートリアル: ビルドと実行」を参照してください。
複数のRenderViewの作成
Framegraph Rulesで定義されたルールを使用して、FrameGraphから5つのRenderViewオブジェクトを構築します:
Viewport {
id: mainViewport
normalizedRect: Qt.rect(0, 0, 1, 1)
ClearBuffers {
buffers: ClearBuffers.ColorDepthBuffer
clearColor: Qt.rgba(0.6, 0.6, 0.6, 1.0)
}
Viewport {
id: topLeftViewport
normalizedRect: Qt.rect(0, 0, 0.5, 0.5)
CameraSelector { id: cameraSelectorTopLeftViewport }
}
Viewport {
id: topRightViewport
normalizedRect: Qt.rect(0.5, 0, 0.5, 0.5)
CameraSelector { id: cameraSelectorTopRightViewport }
}
Viewport {
id: bottomLeftViewport
normalizedRect: Qt.rect(0, 0.5, 0.5, 0.5)
CameraSelector { id: cameraSelectorBottomLeftViewport }
}
Viewport {
id: bottomRightViewport
normalizedRect: Qt.rect(0.5, 0.5, 0.5, 0.5)
CameraSelector { id: cameraSelectorBottomRightViewport }
}
}順序は重要です。もし ClearBuffers ノードが最初ではなく最後になった場合、丹念にレンダリングされた直後にすべてがクリアされてしまうという単純な理由から、画面が真っ黒になってしまいます。 同様の理由から、これをFrameGraphのルートとして使用することはできません。そうすると、各ビューポートごとに画面全体をクリアする呼び出しが発生してしまうからです。
FrameGraphの宣言順序は重要ですが、Qt 3D は各RenderViewを並列に処理することができます。これは、RenderViewの状態が有効な間に送信される一連のRenderCommandsを生成するという点において、各RenderViewが互いに独立しているためです。
Qt 3D は、利用可能なコア数に応じて自然にスケールアップするタスクベースの並列処理アプローチを採用しています。RenderView に対する RenderCommands は、多数のコアにわたって並列に生成することができ、専用の OpenGL 送信スレッド上で RenderView を正しい順序で送信するように注意さえすれば、結果として得られるシーンは正しくレンダリングされます。
© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.