‘MEL’ カテゴリーのアーカイブ
2009年11月23日 月曜日
MM_mirrorPose.mel と MM_loadSavePose.mel を更新しました。
Rotate Axis を含んだミラーリングに対応しました。
VisorにあるFBIKサンプルスケルトンでも正しく動作できると思います。
※サンプルスケルトンのleftForearmのスペルをleftForeArmに変更してください。
動作にはMM_library.mll(v.1.0.1)が必要です。
※loadsave_pose.zipに含まれています。
以前に比べ正確に動作すると思います。
Maya7.0~2010 win32bit、8.5~2010 win64bitに対応しています。
カテゴリー: MEL, Maya | 2件のコメント »
2009年8月29日 土曜日
spreadObjectsOnSurface( “pSphere1″, “pPlane1″, 100 )
↑配置 ↑地面 ↑数
global proc spreadObjectsOnSurface(string $object, string $surface, int $duplicateNb) {
// Get surface size
float $surfaceMinX = `getAttr ($surface+”.boundingBoxMinX”)`;
float $surfaceMaxX = `getAttr ($surface+”.boundingBoxMaxX”)`;
float $surfaceMinY = `getAttr ($surface+”.boundingBoxMinY”)`;
float $surfaceMaxY = `getAttr ($surface+”.boundingBoxMaxY”)`;
float $surfaceMinZ = `getAttr ($surface+”.boundingBoxMinZ”)`;
float $surfaceMaxZ = `getAttr ($surface+”.boundingBoxMaxZ”)`;
for ($n = 0; $n < $duplicateNb; $n++) {
string $duplicatedObject[] = `duplicate $object`;
// Set random value and place the duplicated object
float $randomX = `floor(rand($surfaceMinX, $surfaceMaxX))`;
float $randomY = `floor(rand($surfaceMinY, $surfaceMaxY))`;
float $randomZ = `floor(rand($surfaceMinZ, $surfaceMaxZ))`;
move $randomX $randomY $randomZ $duplicatedObject;
// Could add random rotation and scale task here (apply it to $duplicatedObject)
// Aim the object to the surface
string $geometryConstraintNode[] = `geometryConstraint $surface $duplicatedObject`;
string $normalConstraintNode[] = `normalConstraint -aim 0 1 0 -wut “object” $surface $duplicatedObject`;
// Activate this line if you want to delete the constraints nodes keeping the object pose. So as too manipulate it easier after placing. Note normal constraint node prevent to rotate objects.
// delete $geometryConstraintNode $normalConstraintNode;
}
}
カテゴリー: MEL | コメントは受け付けていません。
2008年9月15日 月曜日
カテゴリー: MEL | コメントは受け付けていません。
2008年6月18日 水曜日
LayerのAttributesを開いて、
ExtraAttributesのDisplayOrderを変更する。
あるいは、MELコマンドで
setAttr layer1.do 2;
setAttr layer2.do 3;
setAttr layer3.do 1;
等で変更します。
そのままでは反映されないので、
レイヤーを新規に作(って捨て)るか、
ファイルを保存して再読み込みする。
関連MEL
Displaylayer Manager
レイヤーをフォルダー化できるようになります。
フォルダーに入れるにはレイヤーをフォルダーへ中ドラッグで。
作者は困っていらっしゃるようですが。。。
カテゴリー: MEL | コメントは受け付けていません。
2008年6月16日 月曜日
Digital Hardware Store
Davvey’s tools の紹介。
階段やエスカレーター、ナット、ネジなどを生成するMELコマンド。
カテゴリー: MEL | コメントは受け付けていません。
2008年6月14日 土曜日
カテゴリー: MEL | コメントは受け付けていません。
2008年5月27日 火曜日
Rivet (button) 1.0
服のボタンを固定する時に便利なMel。
カテゴリー: MEL | コメントは受け付けていません。
2008年1月13日 日曜日
カテゴリー: MEL | コメントは受け付けていません。
2008年1月12日 土曜日
FBIK_GotoStanceParts.mel
コマンド FBIK_GotoStanceParts;
FBIKリグのパーツをスタンスポーズに戻します。
※スタンスポーズに戻るわけではなく、
ローテートを初期化しているだけです。
なので、Hipsで実行すると、その場でスタンスポーズになります。
手足の指がぐちゃぐちゃになったとき戻すのに便利です。
使い方
FBIKエフェクターを選択
FBIK_GotoStanceParts;
で、そのエフェクターから先が初期化されます。
指などの先端エフェクターをざくっと選択して、
コマンドのシェルフを押すという具合に使うと便利です。
FBIK関係のMELはFBIKUtilityToolsとして、
1つのパネルに纏めようと思います。
カテゴリー: MEL | コメントは受け付けていません。
2008年1月11日 金曜日
FBIK_KeyCopy.mel
FBIK_KeyPaste.mel
FBIK_allKeyOffset.mel
モーションの編集をする時に、
これが要るなぁというコマンドを作ってみました。
他のリグで使えるかはわかりませんが、
FBIKRIGをお使いの方にはお勧めかもです。
スクリプトディレクトリに放り込んで、
FBIK_KeyCopy;
FBIK_KeyPaste;
FBIK_allKeyOffset;
これらをシェルフに登録すると便利です。
FBIK_KeyCopy.mel
FBIKキーのコピー
FBIKエフェクターを選択。
キーのあるタイムライン上で
コマンド FBIK_KeyCopy;
でコピーします。
FBIK_KeyPaste.mel
FBIKキーのペースト
上のエフェクターを選択したまま、フレームをペーストしたいタイムラインへ移動。
コマンド FBIK_KeyPaste;
反応が悪いのか、2回実行するのがいいようです。
FBIK_allKeyOffset.mel
FBIKキーのオフセット
エフェクターを選択
キーの打ってあるタイムライン上で
エフェクターを移動・回転させます。
コマンド FBIK_allKeyOffset;
これで、すべてのキーが移動・回転分オフセットされます。
昨日のもついでに
MM_simpleAnimCurveCP.mel
アニメーション元のルートオブジェクトを選択
転送させたい先のルートオブジェクトをシフト選択
コマンド MM_simpleAnimCurveCP;
で、アニメーションカーブが転送されます。
カテゴリー: MEL | コメントは受け付けていません。
2008年1月10日 木曜日
同一サイズ・リグ構造のキャラ間で、アニメーションカーブをコピペするMELです。
非常にシンプルですので、このままシェルフに登録しておくだけで使えるかと思います。
使い方は、アニメーション元のルートオブジェクトを選択、
続いて、シフト選択で転送先のルートオブジェクトを選択(複数可)
で、下のコマンドを実行します。
{
string $sel[] = `ls -sl`;
int $i = 0;
for ($s in $sel) {
select -hi $s;
if($i == 0){
copyKey;
}
else {
pasteKey;
}
$i++;
}
}
いろいろオプションをつけていると非常に重くなってしまいましたので、
もっともシンプルな形にしてみました。動作も軽快です。
複雑な物はバイナリーで。。。そのうち。
カテゴリー: MEL | コメントは受け付けていません。
2008年1月8日 火曜日
カテゴリー: MEL | コメントは受け付けていません。
2008年1月7日 月曜日
文字列処理用のコマンドのsubstituteAllStringの挙動がおかしいです。
{
string $text = “|Hips|Spine|Spine1|Spine2|Spine3|LeftShoulder|LeftArm”;
$text = substituteAllString($text, “Left”, “Right”);
print $text;
}
が、期待通りの動作をしてくれません。
おかしいのは7.0まで
8.0以降は直っているようです。
回避コードを書くべきか、そのままにしておくか、うーむ。
一応回避コード
{
string $buffer[];
string $text = “|Hips|Spine|Spine1|Spine2|Spine3|LeftShoulder|LeftArm”;
int $numTokens = `tokenize $text “Left” $buffer`;
int $i;
for($i=1;$i<$numTokens;$i++){
$text = `substitute “Left” $text “Right”`;
}
print $text;
}
変換文字でtokenizeした数-1回substituteする。
こちらもまともに動いていないみたいなんですけど、
得られる結果は期待していたものなので良とします。
カテゴリー: MEL | コメントは受け付けていません。
2007年10月13日 土曜日
CGarena | Free Magazine
CGarena の リリースする Free Magazine 2007年10月号です。
DLするにはCGarenaでアカウントを取る必要があります。
カテゴリー: MEL | コメントは受け付けていません。
2007年10月9日 火曜日
Visual Mel Studio
視覚的にUIを構築できるMELのようです。
MELでカスタムUIを作るのが面倒な人にはオススメです。
カテゴリー: MEL | コメントは受け付けていません。
2007年10月7日 日曜日
SS Maya Heaven 1.0.0
便利機能満載のMELスクリプト MayaHeaven
FBIKより、これでRig作った方が簡単かも知れません。
カテゴリー: MEL | コメントは受け付けていません。
2007年8月13日 月曜日

ルービック・キューブを作ってみました。
Rig組をいろいろと試してみましたが、
最終的にexpressionで26個のキューブを制御するという方法に行き着きました。
キーを打ったりなんなりするなら、結局この方が便利だということで。
ただ、expressionでRotationを制御する場合、
ジンバルロックにはまってしまうために、
自前でその回避コードを一個一個検証しながら書いていかなければなりませんでした。
とかなんとかやってたら、膨大な行数になってしまった。
3600行くらい。
読み込みにすごい時間がかかります。
rubikscube.ma(8.5maファイル)
注意点:
再生速度が速いと正常に動きません。
まれにブロックが崩れます。
フレーム1で元に戻ります。
カテゴリー: MEL | コメントは受け付けていません。
2007年8月10日 金曜日
Expressionでローテーションを仕込むとジンバルロックに嵌ってしまう。
これはどうにか回避できない物なんだろうか?
自分で回避コードを書くのは辛過ぎるっす。
Maya2008詳報
カテゴリー: MEL | コメントは受け付けていません。
2007年7月21日 土曜日
エラーが出ても処理を続けられる「Mel言語のキーワード」だそうです。
使い方が今一わからなかったので検証。
catchQuiet ( `underConstruction` );
// Result: 1 //
catch ( `underConstruction` );
// Error: line 1: Cannot find procedure “underConstruction”. //
// Result: 1 //
catchはエラー表示も返すが処理は続ける。
catchQuietはエラー表示も出さず処理を続ける。
ということのようです。
で、catch ( `<ここに>` );
プロシージャを入れると、そのプロシージャが存在するかどうかで判定するみたい。
プロシージャ内で発生するエラーをチェックしたいんだけど、
これを判定する方法がわからないっす。
既存のプロシージャを使った時にエラーが出る場合はどうやって回避すればいいのかなぁ?
カテゴリー: MEL | コメントは受け付けていません。
2007年7月20日 金曜日
カテゴリー: MEL | コメントは受け付けていません。
2007年5月11日 金曜日
WireFrameRender v0.1
Mayaで簡単にワイヤーフレーム画像をレンダリングするためのMEL。
カテゴリー: MEL | コメントは受け付けていません。
2007年5月2日 水曜日
Meltris v1.01 2005-07-02
Mayaでテトリス
MELで書かれているそうです。
最近見つけたのですが、
リリース自体は古いものです。
コードの参考ということで。
カテゴリー: MEL | コメントは受け付けていません。
2007年3月27日 火曜日
Quick easy corrective blendshapes using. Video demonstraition.
ブレンドシェイプを簡単に登録できるMel。
ビデオで使い方を解説しています。
なかなか便利です。
今後も開発を進める予定だそうです。
カテゴリー: MEL | コメントは受け付けていません。
2007年2月4日 日曜日

Goalオブジェクトに追従させる先日のダイナミクスでは動きがあまり芳しくなかったので、
簡単なダイナミクスのMELを書いてみました。
ダイナミクスといいつつ動きを少し遅らせるくらいのシンプルな物です。
スプラインカーブにソフトボディを適用し、
そのパーティクルにexpressionで仕込んでいます。
両翼40本ともなると複雑なことはしてないのに
FPSが3以下と再生スピードがとっても遅いのが残念です。
バイナリー化するとどれくらい速くなるのかな?
カテゴリー: MEL | コメントは受け付けていません。
2007年2月1日 木曜日
左右で40本の羽に同じ仕込をする必要がありますから、
羽1本1本に仕込んでいくのが面倒なので、
簡単なMELを組んでみました。
for文の単純な繰り返し作業です。
後からの修正するにも一から再構築するにも大変便利です。
{
//ミラーボーン
for($i=1; $i<=20;$i++){
string $obj = “LeftWingSkl|LeftWing” + $i;
select -r $obj ;
mirrorJoint -mirrorYZ -mirrorBehavior -searchReplace “Left” “Right”;
}
}
{
//スプラインIK
for($i=1; $i<=20;$i++){
string $obj = “LeftWingSkl|LeftWing” + $i + “|LeftWingm1.rotatePivot”;
string $obj2 = “LeftWingSkl|LeftWing” + $i + “|LeftWingm1|LeftWingm2|LeftWingm3|LeftWingm4|LeftWingm5.rotatePivot”;
select -r $obj ;
select -add $obj2 ;
ikHandle -sol ikSplineSolver;
}
for($i=1; $i<=20;$i++){
string $obj = “RightWingSkl|RightWing” + $i + “|RightWingm1.rotatePivot”;
string $obj2 = “RightWingSkl|RightWing” + $i + “|RightWingm1|RightWingm2|RightWingm3|RightWingm4|RightWingm5.rotatePivot”;
select -r $obj ;
select -add $obj2 ;
ikHandle -sol ikSplineSolver;
}
}
{
//リビルドカーブ
for($i=1; $i<=40;$i++){
string $obj = “curve” + $i;
select -r $obj ;
rebuildCurve -ch 1 -rpo 1 -rt 0 -end 1 -kr 0 -kcp 0 -kep 1 -kt 0 -s 2 -d 3 -tol 0.01 $obj;
}
}
{
//ソフトボディ
for($i=1; $i<=40;$i++){
string $obj = “curve” + $i;
select -r $obj ;
dynCreateSoft 0 0 1 0.5 0;
}
}
{
//パーティクルウェイト設定
float $fv[5] = {1.0, 0.9, 0.8, 0.7, 0.5};
for($i=1; $i<=40;$i++){
for($j=1; $j<=4;$j++){
string $obj = “curve” + $i + “ParticleShape”;
particle -e -or $j -at goalPP -fv $fv[$j] $obj ;
}
}
}
{
//ダイナミクスウェイト値設定
for($i=1; $i<=40;$i++){
string $obj = “curve” + $i + “ParticleShape.dynamicsWeight”;
setAttr $obj 0.1;
}
}
{
//コンサーブ値設定
for($i=1; $i<=40;$i++){
string $obj = “curve” + $i + “ParticleShape.conserve”;
setAttr $obj 0.8;
}
}
{
//羽のスムースバインド
//Left
for($i=1; $i<=20;$i++){
string $obj = “LeftWingGroup|LeftWingPoly” + $i;
string $skl = “LeftWingSkl|LeftWing” + $i;
select -r $obj;
select -tgl $skl;
SmoothBindSkin;
}
//Right
for($i=1; $i<=20;$i++){
string $obj = “RightWingGroup|RightWingPoly” + $i;
string $skl = “RightWingSkl|RightWing” + $i;
select -r $obj;
select -tgl $skl;
SmoothBindSkin;
}
}
カテゴリー: MEL | コメントは受け付けていません。
2006年12月14日 木曜日
DetermineAxis
Jointの向いている方向をvectorで返してくれます。
説明書き
// DIRECTIONS: select an aligned joint, then run DetermineAxis()
// RETURNED: aim vector is -X
// // Result: -X -1 << -1 0 0 >> << 0 0 1 >> //
Jointを選択してDetermineAxis() を実行すると、
// Result: -X -1 << -1 0 0 >> << 0 0 1 >> //
が返ります。
結構便利かも、と思ったんですが、軸がずれている場合にはエラーを返します。
なもんであんまり意味は無いなぁと。。。改良すればいいわけですが。。。
ちとがっかりしたんですが、
MELを読むとロケーターを作ってParent Constrainしています。
考えることは一緒ですねぇ。なるほど。
カテゴリー: MEL | コメントは受け付けていません。
2006年12月12日 火曜日
「コマンド」、「MELプロシージャ」、「スクリプト」、「変数」のいずれであるかを返します。
これを使うとスクリプトがどこにあるのかを教えてくれます。
whatIs プロシージャ名;
で、そのプロシージャが記述されているスクリプト名を返してくれます。
参考にしたいMELを読む時に便利です。
カテゴリー: MEL | コメントは受け付けていません。
2006年12月11日 月曜日
ちなみに、ディレクトリーを作る方法
workspace -create $myDir;
or
sysFile -makeDir $myDir;
or
system(”mkdir \”" + $myDir + “\”");
3番目はシステムに依存するコマンドなので、
linuxやMacでは違うかもしれません。
カテゴリー: MEL | コメントは受け付けていません。
2006年12月10日 日曜日
意外と骨が折れたのがこれ
ディレクトリーの削除
見つけるまで相当時間がかかりました。
疲れた。
//ファイルorディレクトリパスを取得
string $name = (`workspace -q -rootDirectory` + “/” + $one);
//ディレクトリかどうかの判定
if(`filetest -d $name`){
//ディレクトリ削除 パスを”"で囲うところがミソ \で回避してます
system(”rmdir /s /q \”" + $name + “\”");
}
else {
//ファイルの削除
if (`exists $name`){
sysFile -delete $name;
}
}
この判定順序が違うと動かない。
。。。これはWindowsしか動かないのかな?
カテゴリー: MEL | コメントは受け付けていません。
2006年12月9日 土曜日
デフォルトのままだと、デフォルトのプロジェクトディレクトリが表示されます。
C:/Documents and Settings/Administrator/My Documents/maya/projects/default/
これではあんまり意味が無いので、少し修正。
C:\Program Files\Alias\Maya7.0\scripts\others
visorPanel.mel の 977行目と1741行目の
string $projectsDir = `internalVar -userWorkspaceDir`;
を
// string $projectsDir = `internalVar -userWorkspaceDir`;
string $projectsDir = `workspace -q -rootDirectory`;
に修正します。
これで現在のプロジェクトディレクトリの内容を表示してくれます。
カテゴリー: MEL | コメントは受け付けていません。