今回はQtを使ってmaya pluginを作成するやり方を自分自身いろいろな方法を試してみたのですがなかなかうまくいかなかったり、うまくいったけどスマートじゃなかったりなど試行錯誤した結果 一番やりやすいなと思ったvisual studio 2015で完結できる方法を紹介したいと思います
作業環境
Software
visual studio2015 Qt 5.6.1 maya2019 update2
事前に必要なもの
Qt Package Qt Visual Studio Tools Qt Test Adapter Extension visual studio2015にExtensions and updatesから上記をインストールしている必要があります
Qt5.6.1
Qtのarchiveから環境に合わせて必要なものをDLしてきます
今回はvs2015でしたのでDLしたものは
qt-opensource-windows-x86-msvc2015_64-5.6.1-1.exeをC:\qt\Qt5.6.1にインストールしました
更新日: 2022年7月8日 リンクが変わりました qt-opensource-windows-x86-msvc2015_64-5.6.1.exe
Maya Developer Kit
バージョンに合わせ任意のpathに解凍します
今回は
C:\mayaSDK\win\2019\に解凍しました
Set environment variable
以下の環境変数の設定を行ってください
| variable name | variable value |
|---|---|
| DEVKIT_LOCATION | C:\mayaSDK\win\2019 |
| QT561MSVC2015 | C:\qt\Qt5.6.1\5.6\msvc2015_64 |
Visual Studioのセットアップ
必要なデータがそろいましたのでprojectを作成していきましょう
ソリューションを作成する
Visual Studioを開き、
Empty Projectを作成します

Solution Explorerで右クリックし、Propertiesを選択し、Configuration Managerから
Debug、Releaseともにplatformをx64に変更します

Projectのセットアップ

.mll
Project Defaults\Configuration Type:
Dynamic Library(.dll)

$(DEVKIT_LOCATION)\include
General\Library WinRT Directories:
$(DEVKIT_LOCATION)\lib
$(QT561MSVC2015)\lib
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib\amd64
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\x64

$(DEVKIT_LOCATION)\include

yes(/GR)

_ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH;WIN32;NDEBUG;_WINDOWS;NT_PLUGIN;REQUIRE_IOSTREAM

$(DEVKIT_LOCATION)\lib
$(QT561MSVC2015)\lib
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib\amd64
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\x64


/export:initializePlugin /export:uninitializePlugin
ソースファイルを用意する
プロジェクトの設定がおわったので以下のソースファイルを作成してください
Source Files>qtPlugin.cpp Header Files>helixQtCmd.h
それぞれのコードはdevkitにありますので該当するデータをコピペしてください
Source Files>qtPlugin.cpp:
..\devkit\plug-ins\helixQtCmd.cpp
Header Files>helixQtCmd.h:
..\devkit\plug-ins\helixQtCmd.h
ファイル自体もコピーしても問題ないです
.proファイルを作成します
.proはQtプロジェクトのビルドに使われるプロジェクトファイルになっています
qtPlugin.proを作成し.hや.cppと同じ場所に配置します
中身は以下のように記述します
| ------------ | ------------ | | HEADERS | headerファイル | | SOURCES | cppファイル | | TARGET | ターゲットファイルの名前を指定。デフォルトでは、プロジェクトファイルのベース名が含まれています |
詳しくは公式サイトにいろいろまとまっています
.proを読み込む
Qt Vs Tools>Open Qt Project File(.pro)...から先ほど作成したqtPlugin.proを開きます

開き終わった後にBuildすると.mllが作成され、その.mllをmaya上で読み込みhelixQt;を実行するとwindowが表示されbuttonを押すとカーブが作成されるはずです
今回ここまでたどり着くのにいろいろな方に助けていもらいました この記事が広く役に立つとうれしいです
参考 Maya 2017 devkit - Building Qt plug-ins instructions Using Qt in Plug-ins
