リモートからの MEL コマンド実行

リモートからの実行方法

モーションキャプチャーのライブラリ(API)を使用することによって Maya 以外のプロセスから MEL コマンドを実行できるようになる。
CapTcpOpen() によって Linux の場合は UNIX Domain Socket が作られるので、それを使用することによりソケットを通して Maya と通信ができる。

API

int CapTcpOpen(char *name)
name
サーバーの名前
返り値
ソケット番号
エラーの場合は -1 が返る。

MEL

Maya 上で外部から接続するポートを開くには commandPort コマンドを使用する。

(使用例)

commandPort;
-name フラグ無しでコマンドを実行するとデフォールトで /tmp/mayaCommand に UNIX ドメインソケットが作られる。
commandPort -name "myMayaCommand";
/tmp/myMayaCommand に UNIX ドメインソケットを作る。
commandPort -name ":6666";
Tcp ポート 6666 番にソケットを作る。

サンプル・プログラム (Linux, UNIX ドメインソケット)

以下に Linux 用において UNIX ドメインソケットを使用したプログラム例をあげておく。

実行例 (C++, Linux, UNIX ドメインソケット)

  1. Maya 上で commandPort コマンドを実行する。
  2. 上の rmc.cpp をコンパイルする。
    % cc -I/usr/aw/maya/include -L/usr/aw/maya/lib rmc.cpp -lmocap -lm -o rmc
    
  3. MEL コマンドを rmc を通して Maya に送って実行させる。
    % echo sphere | ./rmc
     nurbsSphere1    makeNurbSphere1 
    
  4. Maya のシーンに NURBS の球が作られる。
    rmc によって作られた球

実行例 (Ruby, Linux, UNIX ドメインソケット)

  1. Maya 上で commandPort コマンドを実行する。
  2. MEL コマンドを rmc.rb を通して Maya に送って実行させる。
    % echo sphere | ruby rmc.rb
     nurbsSphere1    makeNurbSphere1 
    
  3. Maya のシーンに NURBS の球が作られる。
    rmc によって作られた球

サンプル・プログラム (Ruby, Linux, Windows, Tcp)

以下のプログラムでは Tcp ポートの 8888 を開いて通信する。 (使用されていない Tcp ポート番号なら他の番号でも良い)

require 'socket'
fp = TCPSocket.open("localhost", 8888)
com = STDIN.read
fp.send(com, 0)
print fp.recv(4096)
fp.close

実行例 (Ruby, Tcp)

  1. Maya 上で以下の コマンドを実行する。
    commandPort -name ":8888"
  2. MEL コマンドを rmc.rb を通して Maya に送って実行させる。
    (以下のコマンドは Linux または Windows 上の Cygwin 上から実行)
    % echo sphere | ruby rmc.rb
     nurbsSphere1    makeNurbSphere1 
    
  3. Maya のシーンに NURBS の球が作られる。
    rmc によって作られた球

参考


Prev
Home | Contents
Mail