リリース前だけど Qt6 で Qt 3Dを使ってみよう


はじめに

昨日は、@hermit4 さんの「Qtのイベント周りをざっくり見てみよう」でした。Qt のイベント回りは柔軟性が高いので、

さて、12/1 リリース予定でありましたが、Qt6 のリリースがちょっと遅れてしまいましたので、リリース直前となってしまいたしたが、 Qt6 で Qt 3D を試してみたいと思います。

早速インストール

まずは、早速インストールしてみましょう。今回はメジャーバージョンアップのリリースですのでクリーンインストールしていきます。
最初の印象として、オンラインインストーラーがかなり変わってますね。(見にくいと思うのだけど...。
インストールの途中で、デフォルトで現在の安定板である 5.15.2 をインストール、もしくは、自分で構成を選択できるカスタムインストールが選べます。どちらでも構いません 1 が、Qt6 を入れる必要がありますので、今回は手数の少ないカスタムインストールを選択していきます。

以前は、ここで Qt のバージョン、Qt Charts などいくつかのモジュールを選択することができたのですが、今は下記の5つしか選択できません。あれ、Qt 3D は使えない?

  • Qt Quick 3D
  • Qt 5 Compatibilyty Module
  • Qt Quick Timeline
  • Qt Shader Tools
  • Qt Debug Information Files

今回から新しく「Additional Libraries」 というカテゴリーが追加されており、そこには下記のモジュールがありました。この中に Qt 3D がありますね。

  • Constrained Application Protocol (CoAP)
  • Qt 3D
  • Qt Image Formats
  • Qt MQTT
  • Qt Network Authorization
  • Qt OPC UA

今後、Qt 直下のモジュールと、Additonal Libraries とはどのように住み分けしていくんでしょうか...

とりあえず、Qt6.0.0-rc2 と Qt 3D を選択してインストールを終えます。

インストールされてる?

Qt Creator からサンプルを起動して、、、あれ、 "3d" で検索しても Qt Quick 3D のサンプルしか出てこない...

どこにインストールされているのか探してみると、下記のフォルダーにインストールされていました。

$HOME/Qt/AdditionalLibraries/Qt/qt3d-6.0.0

インストールされた内容を見てみたら

$ ls -la
total 0
drwxrwxr-x   5 shin1  staff   160 12  6 16:49 ./
drwxrwxr-x   9 shin1  staff   288 12  6 15:58 ../
drwxrwxr-x   3 shin1  staff    96 12  5 21:32 Docs/
drwxrwxr-x   6 shin1  staff   192 12  6 13:13 Examples/
drwxrwxr-x  40 shin1  staff  1280 12  5 21:32 Src/

ソースしかないんですね。。。っえ、自分でビルドしろって事なの...

ビルドしてみる

とりあえず、cmake を実行してみて生成された CMakeCache.txt を眺めてみると、インストール先は下記となっていました。

CMAKE_INSTALL_PREFIX:PATH=/Users/qt/work/install

どこにインストールするのが正解なのかはわかりませんが、Qt 本体と同じフォルダーにインストールするには下記のように指定してください。

$ mkdir build
$ cd build
$ cmake -DCMAKE_INSTALL_PREFIX=$HOME/Qt/6.0.0/clang_64 ../Src
$ make -j<並列数>
$ make install

これで本当にインストールできましたw
それでは、サンプルを動かしてみましょう。

サンプルを試してみる

Qt Creator から $HOME/AdditionalLibraries/Qt/qt3d-6.0.0/Examples/qt3d/simple-qml/simple-qml.pro を選んでみたのだけど...
下記のエラーが出てビルドできませんでした。

Project ERROR: Could not find feature qt3d-extras.

リリース前だからなのか、まだサンプルを動作させることはできないようです。早すぎたのですかねw

CMakeCache.txt の下記の箇所を ON にして examples も同時にビルドすれば、サンプルを実行することができました。

//Build Qt examples
QT_BUILD_EXAMPLES:BOOL=OFF

最後に

Qt6 からモジュールの配布形態が変わり、Qt 3D がその対象となってしまったため、Qt 3D を取り上げてみました。残念ながらビルドはできましたが、アプリを動かすまではいかなかったので、時間があればもう一度トライしたいと思います。また、Additional Libraries は、 conan というパッケージマネージャが採用されて、 各モジュールのインストールに関して柔軟性が高められるそうなので 2、次回(があれば)は、今回ビルドできなかった続報と、パッケージマネージャについて書きたいなと思います。

明日は、@Atsushi4 さんですね。乞うご期待。


  1. デフォルトでインストールした場合は、再度インストーラーを起動してモジュールを追加してください。 

  2. https://www.qt.io/blog/qt-6-additional-libraries-via-package-manager