Beauty Salon α-BET (alphabet)

space001
Blender3d Collada dae modeling Use Papervision3d on Progression3 and 4 http://a-bet.secret.jp/#/access
more whaison works.
whaison space
space002
http://whaison.jugem.jp/ https://jp.pinterest.com/whaison/ https://www.instagram.com/whaison/ https://whaison.amebaownd.com/
https://suzuri.jp/whaison
http://whaison.blogspot.com/
http://whaison.tumblr.com/ http://qiita.com/users/whaison http://www.behance.net/whaison https://github.com/whaison/ https://bitbucket.org/whaison http://serato.com/user/whaison http://whaison.hatenablog.jp/

typo memo
http://d.hatena.ne.jp/whaison/


dayNote
http://www.myspace.com/whaison http://ameblo.jp/whaison/ http://blog.crooz.jp/whaison/ http://blog.crooz.jp/whaisoncafe/ http://nenpyo.org/whaison

fulldisk
http://full.shin-gen.jp/
http://whaison.client.jp/
http://www.dclog.jp/whaison/
featured forums.
space004
forum.unity3d.com/

forums.unrealengine.com.

Progression Forum.

FlashDevelop Forum.

Papervision3D Forum.

FlexUserGroup Forum.

SparkProjectForum.





Twitter







Mobile
qrcode
Calendar
SunMonTueWedThuFriSat
    123
45678910
11121314151617
18192021222324
252627282930 
<< November 2018 >>
New Entries
Archives
Categories
Recent comment
  • FlashDevelopでフォント埋め込み
    感謝!! (12/24)
  • cocos2d-x-3.0rc0 ,c++ ,cpp でTexturePacker で 吐き出した、plist と png でパラパラアニメーションのコード例
    whaison (04/17)
  • Blender2.67にbvh(web上に2500個以上ころがってる)入れてそのBoneオブジェクトをUnity4.0のmecanimで使う
    whaison (08/19)
  • Apple Dev Center 「Certificates, Identifiers & Profiles」で Adhoc をつくってXCode4.6.1でArchiveしてipaを書き出し
    whaison (04/30)
  • Flash CS6でプロパティーパネルで物理演算のジャンプの高さを設定できるCitrus Engine
    whaison (03/01)
  • 「Flash以外、例えばKinectとか」ON TOKYO (会場:高田馬場4-11-8 Floor 6階 ) 短縮URL http://bit.ly/dI0Bfx
    uka (03/02)
  • App Store Review Guidelines アップル社のアプリ審査基準ガイドライン和訳 Apple が 開発者を悩ませ ユーザーをハッピーにしたいガイドライン。w
    whaison (01/25)
  • Unity3d では ADOBE JAPAN OSAKIで行われたFITC 2010 TOKYOでは、 「iOS用にパブリッシュするためには、フリー版ではなくて、有料版を買ってください。さらに追加のパッケージである、"iOS Package (for Development)"を買ってください」とのことだった。
    whaison (01/25)
  • enjoy Adidas-Futsal-Park
    whaison (01/16)
  • MacBookAir にFlashPlayer入れたらなった。Mac Flash Player 10.1/10.2でUstream などでカメラが認識されないバグそんなときはUstreamProducer!でもなくiPhoneだと直ぐにライブ配信できた
    whaison (01/14)
simple sintax high lighter2.0
space003
SyntaxHighlighter2.0用 の貼り付けコード作成する!
Profile
Links
Recommend
Admin
無料ブログ作成サービス JUGEM
Seach this site
            
2016.10.25 Tuesday
Visual Studio 用 Maya プラグイン ウィザード Maya Plug in Wizardを使う。4 initとuninit

プラグインはダイナミックリンクライブラリなので、entry ポイント および exit ポイント を提供しなければいけません。

これらは、プラグインが最初にロードされたとき(entry関数)、最後にアンロードされた時(exit関数)に呼び出される関数です。

Windowsでは、普通、開発者自身のDll Main関数により扱われます。MayaPluginWizardでは、entryポイントとexitポイントは

DeclareSimpleCommand( MayaPluginWhaison2, "whaison2", "2017");マクロにより作成されています。

MSimple.hの中の

DeclareSimpleCommand( _className, _vendor, _version )

このマクロは自動的にコマンドと、initializePlugin 関数 uninitializePlugin 関数 の両方を生成してくれます。

 

ではこれ(MSimple.h)をつかわないでクラス内で実装してみました。

内容はMSimple.hの内容を持ってきて 必要な引数をいれてあります。

 

ビルドしました。プラグインロードしました。MELたたきました

 // Hellow World in MayaPluginWizard3Cmd でました。

で。

コマンドクラスは シンプルなdoIt()関数を含んでいます。コマンドが実行されるとこの関数が実行されます。

    virtual MStatus  doIt(const MArgList&)
    {
        MGlobal::displayInfo("Hellow World in MayaPluginWizard3Cmd ¥n");
        return MS::kSuccess;//doIt内容成功したかどうかを返す
    }

コマンドはstatic なcreator()関数も含んでいて、コマンドをアロケート つまり実行中のプログラムへのメモリ空間の割り当て(メモリアロケーション) してそれを返します。

static void *creator()
    {
        return new MayaPluginWizard3Cmd;
    }

 

以下のコマンドはinitialization  関数 uninitialization 関数です。

MStatus initializePlugin(MObject _obj)

MStatus uninitializePlugin(MObject _obj)   

 

両方の関数は全てのMayaプラグインになくてはなりません。それらが存在しなかった場合、プラグインはリンクされません

initializePlugin関数はMObject を入力として受け取ります。このMObjectはプラグインタイプ用の内部データへのハンドルです。

 

MStatus initializePlugin(MObject _obj){}

 

次の行では、MFnPlugin オブジェクトが生成されobj変数を引数として初期化されます。

MFnPlugin MObject にアタッチさせることで、MFnPlugin 関数を呼び出して MObjectを操作することができます

 

MFnPlugin    plugin(_obj=MObject , "whaison.jugem.jp", "3.0");  //MFnPlugin インスタンスの生成

 

ここでMayaPluginWizard3Cmdコマンドが登録されます。コマンドの登録を行うことで、コマンド

がMayaで使用できるようになります。登録には名前とともにcreator関数を与える必要があります。

名前はそのコマンドを実行するときの名称で、この場合は単純にMayaPluginWizard3”です。

 

MStatus        stat;        //MStatus 型   の宣言                                   
stat = plugin.registerCommand("MayaPluginWizard3",MayaPluginWizard3Cmd::creator);

 

creator 関数はstatic 関数でコマンドのインスタンスを1つアロケート(メモリ確保)します。

これをMaya に登録する際に必要とされます。そうしなければコマンドをインスタンス化する方法が

わからないからです。

 

登録の結果をチェックし、失敗していたらエラーを表示します。

       if (!stat){                                               
            stat.perror("registerCommand failed"); //エラーを表示します。

         }

initializePlugin関数は必ずMStatus型の結果を返します
            return stat;    //initializePlugin関数はMStatus型の結果を返します

}

 

もし帰ってきたステータスがMS::kSuccses でなければ、プラグインは終了し、

ダイナミックリンクライブラリは自動的にアンロードされます。

コマンドラインの結果にエラーメッセージが表示されます。重要なのは、もしinitialazePlugin関数が

失敗すれば、uninitialazePlugin関数は呼び出されないということです。

initialazePlugin関数内で(例え initialazePluginが失敗した場合にも)処理を終えて戻る前に、

全てのクリーンアップを終えなければなりません。

 

uninitialazePlugin関数はinitialazePlugin関数の逆を行います。

initialazePlugin関数 が登録したコマンドを取り消します。

 

stat = plugin.deregisterCommand("MayaPluginWizard3");

 

関数はuninitialazationが成功したかどうかのステータスも返します。

    if (!stat) {
            stat.perror("deregisterCommand failed");//uninitialazationが成功したか
     }

 

return stat;

もし帰ってきたステータスがMS::kSuccses でなければ、プラグインは終了し、

ダイナミックリンクライブラリは自動的にアンロードされません。

Mayaが終了するまでロードされたままになります。

 

この例では1つのコマンドがMayaに登録された場合でした。実際には無制限に登録が可能です。

カスタムノードやカスタムデータなど、どんなMayaプラグインを作る場合もこの

intialazePlugin関数、uninitialazePlugin関数によって簡単にMayaに新しい機能を与えるプラグインを提供し

アプリケーションで使用できるようになります。

 

コメント多めのソース

。。。

 

| whaison | C++ | 19:03 | comments(0) | - | pookmark |
Comment




whaisonStudyNoteBook をFaceBookで いいね!





Share |