Maya C++ 入門 | 単純なプラグインを作成してみよう!

今回は、Maya APIを使って単純なコマンドプラグインを作成してみましょう。
PythonではなくC++を使い、Visual Studio 2017のプロジェクト設定方法から行います。
入門にしたつもりがちょっと難しい内容になってしまったかもしれません…。

是非チャレンジしてみてくださいね!

管理人がYouTubeで解説!

DeclareSimpleCommand?

簡単にコマンドを作れるマクロです。
ただ、1つのプラグインに対して1つのコマンドしか作成できません。
開発ではMPxCommandといったものを使うケースが多いですが、今回は入門としてDeclareSimpleCommandを利用しました。

DeclareSimpleCommandの引数について

DeclareSimpleCommand(HelloMayaCommand, “TECH ART ONLINE”, “2020”)
これの HelloMayaCommand, “TECH ART ONLINE”, “2020” ってところです。

これは、
・コマンドを実装しているクラス名
・コマンドの作者名
・コマンドのバージョン番号

となります。

注:DeclareSimpleCommandではUndoの実装ができません。

そもそもコマンドプラグインの基本は、Undoも自身で実装する必要があります!
MELやPythonのコマンドではUndo/Redoも勝手にやってくれてましたよね。
それはMayaのMELやPythonの内部でしっかりUndoを定義してくれているからです。

自身でコマンドプラグインを作るときは、自身でUndoも定義する必要があります。
これが結構面倒くさいんですよね…。

サンプルコード:スクリプトエディタに「Hello Maya Command」と表示する

#include <maya/MSimple.h>
#include <maya/MGlobal.h>
DeclareSimpleCommand(HelloMayaCommand, "TECH ART ONLINE", "2020");

MStatus HelloMayaCommand::doIt(const MArgList& args)
{
	MString text = "Hello Maya Command";
	MGlobal::displayInfo(text);
	return MS::kSuccess;
}

サンプルコード:選択したポリゴンメッシュの頂点数をスクリプトエディタに表示する

#include <maya/MSimple.h>
#include <maya/MGlobal.h>
#include <maya/MSelectionList.h>
#include <maya/MFnMesh.h>
#include <maya/MDagPath.h>
#include <maya/MItSelectionList.h>
DeclareSimpleCommand(getMeshVertexCount, "TECH ART ONLINE", "2020");

MStatus getMeshVertexCount::doIt(const MArgList& args)
{
	MSelectionList selection;
	MGlobal::getActiveSelectionList(selection);
	MItSelectionList iter(selection, MFn::kMesh);
	MDagPath dagPath;
	MFnMesh fnMesh;
	for (; !iter.isDone(); iter.next())
	{
		iter.getDagPath(dagPath);
		fnMesh.setObject(dagPath);
		int numVertices = fnMesh.numVertices();
		char text[100];
		sprintf_s(text, "%s, vertex count = %d", dagPath.partialPathName().asChar(), numVertices);
		MGlobal::displayInfo(text);
	}
	return MS::kSuccess;
}

関連記事

  1. Mayaリガー向け!UE4.26 ControlRigの基本を解説します!

    2020-10-31

  2. Mayaでスキンウェイトを手早くつける3つの方法

    2020-11-24

  3. PyMELのススメ

    2020-12-21

  4. アーティストのためのMaya Python入門 第18回「例外処理の基本を抑えよう!try/except/else/finally」

    2022-01-24

コメントをお待ちしています。

コメント

ABOUT

テクニカルアーティストの為のまとめサイトです。

本サイトでは、『YouTube ✕ Blog』を中心に
情報発信をしていきます。

また、テクニカルアーティストとしての様々な
ライフハック記事も投稿予定です。

限定情報会員

PATREONでは、限定情報やサンプルファイルの配布も行っています。登録頂けると更新頑張れます。支援の方よろしくお願いします。


免責事項

本ウェブサイト内で公開している全ての情報の有用性や安全性については当方は一切の保証を与えるものではありません。
利用したことによって引き起こる直接および間接的な損害に対して当方は一切責任を負うものではありません。
全て自己責任でご使用ください。

3DCGBOOK出版

BOOTHで技術書を販売利しております。







スポンサー

ページ上部へ戻る