Visual Studio 2015を使ったMaya Qtの始め方

OpenMaya,OpenMayaUI,Tutorial,C++,Qt,Maya

今回は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.exeC:\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 namevariable value
DEVKIT_LOCATIONC:\mayaSDK\win\2019
QT561MSVC2015C:\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のセットアップ Configuration Properties> General> General\Target Extension: .mll Project Defaults\Configuration Type: Dynamic Library(.dll)

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

Configuration Properties> C/C++> General> Additional Invlude Directories: $(DEVKIT_LOCATION)\include

Language> Enable Run-time Type information: yes(/GR)

Preprocessor>_ALLOW_ITERATOR_DEBUG_LEVEL_MISMATCH;WIN32;NDEBUG;_WINDOWS;NT_PLUGIN;REQUIRE_IOSTREAM

Configuration Properties> Linker> General>$(DEVKIT_LOCATION)\lib$(QT561MSVC2015)\libC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\lib\amd64C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\x64

必要なライブラリーを入れてください 全部入れる必要はないですが今回はめんどくさかったのですべて入れました Input> awxml2.lib cg.lib cgGL.lib clew.lib Foundation.lib Image.lib IMFbase.lib MetaData.lib OpenMaya.lib OpenMayaAnim.lib OpenMayaFX.lib OpenMayaRender.lib OpenMayaUI.lib Qt5AxBase.lib Qt5AxContainer.lib Qt5AxServer.lib Qt5CLucene.lib Qt5Concurrent.lib Qt5Core.lib Qt5DBus.lib Qt5Designer.lib Qt5DesignerComponents.lib Qt5Gui.lib Qt5Help.lib Qt5Location.lib Qt5Multimedia.lib Qt5MultimediaQuick_p.lib Qt5MultimediaWidgets.lib Qt5Network.lib Qt5Nfc.lib Qt5OpenGL.lib Qt5OpenGLExtensions.lib Qt5Positioning.lib Qt5PrintSupport.lib Qt5Qml.lib Qt5Quick.lib Qt5QuickParticles.lib Qt5QuickTest.lib Qt5QuickWidgets.lib Qt5Script.lib Qt5ScriptTools.lib Qt5Sensors.lib Qt5Sql.lib Qt5Svg.lib Qt5Test.lib Qt5UiTools.lib Qt5WebChannel.lib Qt5WebEngine.lib Qt5WebEngineCore.lib Qt5WebEngineWidgets.lib Qt5WebKit.lib Qt5WebKitWidgets.lib Qt5WebSockets.lib Qt5WebView.lib Qt5Widgets.lib Qt5WinExtras.lib Qt5Xml.lib Qt5XmlPatterns.lib qtmain.lib tbb.lib zlib.lib

Command Line> Additional Options: /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 instructionsUsing Qt in Plug-ins