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
      1
2345678
9101112131415
16171819202122
23242526272829
3031     
<< August 2020 >>
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用 の貼り付けコード作成する!
ブログパーツ-BLOG PARTS.
Profile
Links
Recommend
Admin
無料ブログ作成サービス JUGEM
Seach this site
            
2016.03.18 Friday
mel UVの最適化  performPolyOptimizeUV(1);
//UVの最適化の最適化
    //C:¥Program Files¥Autodesk¥Maya2016¥scripts¥others¥performPolyOptimizeUV.mel
    performPolyOptimizeUV(1);

設定済みのやつ使うだけなら。
だけでOK

 
| whaison | MEL(Maya Embedded Language) | 12:09 | comments(0) | - | pookmark |
            
2016.03.17 Thursday
Text Editer Atom for mel Highlight

たまにハイライトされたmelを見ながらコピペしたい場合があります。
Text Editer Atom for mel Highlight 
Shift-Jis
日本語表示もできます。



設定画面は、[file]→[Settings](ショートカット「Ctrl+,」)で開くことができます。

 ここで主に触るところは

「Font Family」

C:¥Windows¥Fonts¥Meiryo UI¥meiryo.ttc

「File Encoding」
shiftjis

[file]→[Settings]→「Install」

mel 検索したら
language-mel
が表示されるので インストール

つくってるひとのさいと 
https://atom.io/packages/language-mel

https://github.com/elanifegnirf

ありがとう。

| whaison | MEL(Maya Embedded Language) | 22:32 | comments(0) | - | pookmark |
            
2016.03.09 Wednesday
mel save text.txt file

次のスクリプトは、ファイルへ書き込みたい文字列を定義して、test.txtというファイルへ書き込みを行います。

string $output = "text test";

system("echo "+$output+"> test.txt");
// 結果: アクセスが拒否されました。  >>>>管理者権限でMayaを起動してないとこうなりますよねー
 //


たったのこれだけです。

これでtest.txtというファイルに

test test

と書き込まれました。

また、文字列をファイルに追加したい場合は

system("echo "+$output+">> test.txt");

という風にします。


次は文字列の読み込みです。

string $input = `system(type text.txt)`;

これで$inputという変数に先ほど書き込んだ

test test

という文字列が代入されます。

参考URL

目指せCREATIVE ART!! MEL ファイルの入出力方法

| whaison | MEL(Maya Embedded Language) | 18:11 | comments(0) | - | pookmark |
            
2016.02.17 Wednesday
Maya aimCamera Motion To Unity Camera Motion.mel マヤのカメラのモーションをUnityに持っていく流れのmel
Maya aimCamera Motion To Unity Camera Motion.mel マヤのカメラのモーションをUnityに持っていく流れのmel
-------
>camera1_group
>    camera1
>    camera1_aim

>camera1_group とありますが、これ、カメラグループっていうんですか。
>カメラとエイムをぶら下げるためのただの親という。 普通にトランスフォームできるしキーも打てるので、きっとそうですよね。
↑コレ罠です。原点から動かさない方が無難です。特に回転とかさせるとそれはもう恐ろしいことになります。
参照:http://junkithejunkie.cocolog-nifty.com/blog/2014/03/post-c74a.html
----------




Ref  
参考http://www.slideshare.net/nyaakobayashi/mayaunity

参考データ
http://www.mediafire.com/download/ciis0745g81dmnu/AOV_FOV100304_2.zip

テストに使ったシーンやmel
http://www.mediafire.com/download/6ds5ameazb2wqh5/MayaCameraToUnityZIP.zip
| whaison | MEL(Maya Embedded Language) | 19:45 | comments(0) | - | pookmark |
            
2015.11.25 Wednesday
keyframe melコマンド
keyframe melコマンド

// いくつのキーがtheにあるかを見つけ出すための2つの方法 
// paramCurveはsurface1.translateXと接続した;
//
keyframe -attribute translateX -query -keyframeCount surface1;
keyframe -query -keyframeCount surface1.translateX;

// "polySurface1"というオブジェクトのすべてのkeyframesをとる
// 0から20までの時間範囲で。
//
keyframe -time "0:20" -query -timeChange -valueChange surface1

// 最初のキーの時間を問いなさい
//「Translate X」パラメータ曲線。
// インデックスが0ベースであることに注意しましょう。
//
keyframe -index 0  -query "surface1.translateX"

// 範囲10-20のすべてのアクティブなオブジェクトのキーをシフトします
// by one (current) time unit (frame, second, etc.)
//
keyframe -edit -relative -timeChange 1 -time "10:20";

// それの時間10にすべてのキーを動かすための2つの方法
// 時間12へのアクティブなオブジェクト。 その"-absolute"「無制限」に注目しましょう
// デフォルトです。
//

keyframe -time 10 -timeChange 12;
keyframe -time 10 -absolute -timeChange 12;

//
//2番目のkeyframeを設定しますcube1のTranslateXパラメーターの
//指定したカーブ"surface1.translateX"の値は10.25で 時間は1.5秒のポイントで。
//
keyframe -edit -index 1 -timeChange 1.5sec -valueChange 10.25 "surface1.translateX";

// 評価します その animCurve データを配信する nurbsCone1's translateX attribute at time 3の 中で
// tx = translateX 
keyframe -attribute tx -time 3 -query -eval nurbsCone1;

// 
//nurbsCone1の属性translateXのアクティブなキーの時を問います。
//
// Query the times of the active keys on attribute translateX of nurbsCone1
//
keyframe -attribute tx  -selected -query -tc nurbsCone1;

//いくつのキー が選択されているか nurbsCone1に?
// How many keys are selected on nurbsCone1?
//
keyframe  -selected -query  -keyframeCount nurbsCone1;


// このスクリプトは print する 全ての coneのanimCurves それは 持っている keyの選択されたものを
// 個々のanimCurveにはの時系列の選択されたリストがついている 
// この出力の結果は下記である。 
// Here's a script to print out all a cone's animCurves that have
// keys selected.  Each animCurve is followed by a list of times
// for the selected keys.  The result of this script is:
//     nurbsCone1_translateX: 5
//     nurbsCone1_translateY: 12
//     nurbsCone1_translateZ: 4 14
//
string $myCone[] = `cone`;
setKeyframe -time  0 -time  5 -time  10 -attribute tx -v 5 $myCone[0];
setKeyframe -time  2 -time  7 -time  12 -attribute ty -v 10 $myCone[0];
setKeyframe -time  4 -time  9 -time  14 -attribute tz -v 15 $myCone[0];
selectKey -time  5 -time  12 -time  4;
selectKey -animation objects -add -time  14;

float $keyTimes[];
string $nodes[] = `keyframe -query -name $myCone`;
for( $node in $nodes ) {
    $keyTimes = `keyframe -selected -query -tc $node`;
    print ($node + ": ");
    for( $time in $keyTimes ) {
        print( $time + " " );
    }
    print "¥n";
}

// For the above sample script, the last selected key is
// nurbsCone1_translateZ: 14.  The following may be used to query
// the values for that key
//
keyframe -query -lastSelected -name;
keyframe -query -lastSelected -timeChange;
keyframe -query -lastSelected -valueChange;

  
| whaison | MEL(Maya Embedded Language) | 17:42 | comments(0) | - | pookmark |
            
2015.06.26 Friday
PolyPlane _ plane の全部の枚数から各ポイントの position (x,y,z)を引っ張ってさらにwidth heightを計測するmelスクリプト
PolyPlane _ plane の全部の枚数から各ポイントの position (x,y,z)を引っ張ってさらにwidth heightを計測するmelスクリプト



照会モード 
-query
http://shikatanaku.blogspot.jp/2010/01/blog-post_02.html

lsコマンドと-slフラグ
http://shikatanaku.blogspot.jp/2009/05/select.html


float $pos[] = `xform -query -worldSpace -translation ($ObjectRef + ".vtx[0]")`;
http://simplymaya.com/forum/showthread.php?t=26685

http://me.autodesk.jp/wam/maya/docs/Maya2010/Commands/xform.html


//-----------------------------------
//plane -p 1 1 1 -s 10 -n "plane001";
//pointPosition plane001.vtx[2];
//getAttr plane001.vtx[2]
//string $a[];

//string $curPolyName="polyPlane";

//polyPlane -n ($curPolyName+"_plane") -w 1-h 1 -sw 1 -sh 1 -cuv 1 ;
//setAttr ($curPolyName+"_plane.translateY") (1);
//setAttr ($curPolyName+"_plane.translateX") ((2));
//setAttr ($curPolyName+"_plane.translateZ") ((3));

select -all;
//string $name[] = `ls`;

int $_planeNum=0;
string $name[] = `ls -sl`;
$size = size($name);
int $size_minus=0;
for ($i=0;$i<$size;$i++) 
{
string $ObjectRef=$name[$i];

switch ($ObjectRef) {
 case "uiConfigurationScriptNode":
 $size_minus =$size_minus +1;
 break;
 case "sceneConfigurationScriptNode":
  $size_minus =$size_minus +1;
 break;
  case "ikSCsolver":
  $size_minus =$size_minus +1;
 break;
  case "polyPlane1":
  $size_minus =$size_minus +1;
 break;
 default:
     string $ObjectRefArr[];
   tokenize $ObjectRef "_" $ObjectRefArr;
   $ObjectRefArrLength = size($ObjectRefArr);
  // print ("$ObjectRefArrLength= "+$ObjectRefArrLength+"¥n");
    //print ("$ObjectRefArr[$ObjectRefArrLength-1]= "+$ObjectRefArr[$ObjectRefArrLength-1]+"¥n");
    
 if($ObjectRefArr[$ObjectRefArrLength-1]=="plane"){
     
    print ("$ObjectRef= "+$ObjectRef+"--------------------¥n");

   
       float $pos0[] = `xform -query -worldSpace -translation ($ObjectRef + ".vtx[0]")`;
       float $pos1[] = `xform -query -worldSpace -translation ($ObjectRef + ".vtx[1]")`;
       float $pos2[] = `xform -query -worldSpace -translation ($ObjectRef + ".vtx[2]")`;
       float $pos3[] = `xform -query -worldSpace -translation ($ObjectRef + ".vtx[3]")`;
    // float $scale[]=`xform -query -worldSpace -scale( ($ObjectRef + ".vtx[0]")`;
    //now you can use the array to access the postions:
    
    
    print("pos0: " + $pos0[0] + " " + $pos0[1] + " " + $pos0[2]+"¥n");
    print("pos1: " + $pos1[0] + " " + $pos1[1] + " " + $pos1[2]+"¥n");
    print("pos2: " + $pos2[0] + " " + $pos2[1] + " " + $pos2[2]+"¥n");
    print("pos3: " + $pos3[0] + " " + $pos3[1] + " " + $pos3[2]+"¥n");
    float $width;
    $width=abs($pos0[0]-$pos1[0]);
    float $height;
    $height=abs($pos1[2]-$pos2[2]);
    print (" ---------------------------------$width = "+$width+"¥n");
    print (" ---------------------------------$height= "+$height+"¥n");
    
    //print("scale: " + $scale[0] + " " + $scale[1] + " " + $scale[2]+"¥n");
   select $ObjectRef;
    float $width;
    //polyPlane -query -width "ch_cn__face1_plane";
   //$width = `polyPlane -query -width $ObjectRef`;
   // print (" ----------$width= "+$width+"¥n");
    
    string $buildStr;
    $buildStr="";
    for ($j=0;$j<$ObjectRefArrLength-1;$j++) 
    {
        $buildStr=$buildStr+"_"+$ObjectRefArr[$j];
    }
    string $charaName=$buildStr;
    print("--------charaName="+$charaName+"¥n");
    string $jointName1=$charaName+"_joint";
    string $jointName2=$charaName+"_joint2";
     print("--------jointName1="+$jointName1+"¥n");
     print("--------jointName2="+$jointName2+"¥n");
     select -d;
     //joint -position $pos[0] $pos[1] $pos[2] -name $jointName1;
     //joint -position ($pos[0]) $pos[1] ($pos[2]+100) -name $jointName2;
    // joint -e -zso -oj xyz $jointName1;
      
      
   $_planeNum=$_planeNum+1;
     print ("$ObjectRef= "+$ObjectRef+"----------end------¥n");
   }
 break;
}


}
$size =$size-$size_minus;
print ("_plane total Number = " + $_planeNum + "¥n");
//-------------------------
//http://shikatanaku.blogspot.jp/2009/12/fieldfloatfield_26.html
//http://me.autodesk.jp/wam/maya/docs/Maya2009/index.html?url=Syntax_Command_syntax.htm,topicNumber=d0e164912
//---------------------------
sphere -name "mySphere";
sphere -edit -radius 5 "mySphere";
sphere -query -radius "mySphere";
if (`sphere -query -radius "mySphere"` == 5)
{
	print("This sphere has a radius of 5!"+"¥n");
}	
float $radius=`sphere -query -radius "mySphere"`;
print("$radius= "+$radius+"¥n");

polyPlane -name "polyPlane001";
 float $width;
    //polyPlane -query -width "ch_cn__face1_plane";
 $width = `polyPlane -query -width "polyPlane001"`;
    print (" ----------$width= "+$width+"¥n");
    string $type = `nodeType polyPlane001`;
  print (" ----------$type= "+$type+"¥n");
 string $type = `nodeType ch_cn__face1_plane`;
  print (" ----------$type= "+$type+"¥n");
    // $width = `polyPlane -query -width "ch_cn__face1_plane"`;
  //  print (" ----------$width= "+$width+"¥n");
 $width= `getAttr polyPlane1.width`;
 print (" ----------$width= "+$width+"¥n");




 
| whaison | MEL(Maya Embedded Language) | 16:22 | comments(0) | - | pookmark |
            
2015.06.19 Friday
2dtoolkitを拡張した2dtoolkitUVをつくってアトラスとCSVからUV座標を自動設定するよ。(更新)
2dtoolkitを拡張した2dtoolkitUVをつくってアトラスとCSVからUV座標を自動設定するよ。

http://mozzhukhin.net/post/105384157236/2d-animation-in-maya
さん

の2dtoolkitを拡張したよ
2dtoolkitUV download
http://www.mediafire.com/download/z1x91uoqlz9vysh/2dtoolkitUV.zip
2dtoolkitUV sample psd
http://www.mediafire.com/download/js0etxkjcbj57ws/2dtoolkitUV_sample_psd.zip
まず同じレイヤー名で2つPSDを作るよ
(PSD内で同じレイヤー名のものがあると)
executeAction( charIDToTypeID('setd'), desc, DialogModes.NO );でとエラー吐くので注意!!!

キャラクターの形にならべたPSD



アトラス用にならべたPSD

を作ってください。

キャラクターの形にならべたPSD
を開いて
2dtoolkit
SmartExportLayers.jsx
実行

アトラス用にならべたPSD
開いて
2dtoolkitUV
SmartExportLayersTextureUVpos.jsx
実行

_Out.txt
_UVtextureOut.txt

ができてるよ。

アトラス用にならべたPSD
も透明のpngとtgaで保存しておいてね!

あとは

mayaで
enToolbar.mel
を実行したあと

enBuildUV.mel
を実行したら完成です。



 
| whaison | MEL(Maya Embedded Language) | 20:06 | comments(0) | - | pookmark |
            
2015.05.22 Friday
Maya2016でスキンウェイトセーブ保存復帰できる Dora SkinWeight Import Export 3.6.0 (maya script)
Maya2016で
スキンウェイトセーブ保存復帰できる

Dora SkinWeight Import Export 3.6.0 (maya script)
本家日本語

http://dorayuki.com/doramaya/SkinWeightIE.htm

http://www.creativecrash.com/maya/script/dora-skinweight-import-export

skin Weight .dswが吐き出される

skin Weight .dswをインポート


チェック???





DoraSkinWeightImpExp001.mel



global string $gDoraSkinWeight_ver = "3.60";





proc string DoraSkinWeightImpExp_vtx2uv( string $vtx )
    {
    string $ret;
    string $workString[];
    
    $workString= `polyListComponentConversion -fv -tuv $vtx`;
    
    
    
    $ret= `substitute ".map" $workString[0] ".uv"`;
    
    return( $ret );
    }




proc string DoraSkinWeightImpExp_checkOverlapsList( string $list[] )
    {
    string $shorteList[];
    string $overlapsList[];
    string $overlapsList2[];
    int $overlapsListN;
    int $i, $j, $k;
    string $retString;
    int $overlapsCount;
    
    $shorteList = stringArrayRemoveDuplicates($list);
    if( size($list)==size($shorteList) )return("");
    else
        {
        
        $overlapsListN=0;
        for( $i=0 ; $i<(size( $list )-1) ; $i++ )
            {
            for( $j=$i+1 ; $j<size( $list ) ; $j++ )
                {
                if( $list[$i]==$list[$j] )
                    {
                    $overlapsList[$overlapsListN]= $list[$i];
                    $overlapsListN++;
                    }
                }
            }
        
        $overlapsList2= stringArrayRemoveDuplicates($overlapsList);
        
        $retString="";
        for( $i=0 ; $i<size($overlapsList2) ; $i++ )
            {
            $overlapsCount= stringArrayCount( $overlapsList2[$i], $list );
            $retString+= ( $overlapsList2[$i] + " (" + $overlapsCount + ") " );
            if( $i<size($overlapsList2)-1 )
                {
                $retString+= ", ";
                }
            }
        return ( $retString );
        }
    }




proc string DoraSkinWeightImpExp_extCheck( string $name, string $ext )
    {
    string $ret;
    
    $ret= $name;
    if( size($name)<=size($ext) )
        {
        $ret= $name + $ext;
        
        }
    else
        {
        if( tolower(substring( $ret, size($ret)-(size($ext)-1), size($ret) )) != $ext )
            {
            $ret= $name + $ext;
            }
        }
    return $ret;
    }




proc string DoraSkinWeightImpExp_shapeName( string $obj )
    {
    string $shape[];    

    $shape= `listHistory $obj`;
    $shape= `ls -type shape $shape`;
    
    if( size($shape)==0 )return( "" );
    else return( $shape[0] );
    


    }




proc vector DoraSkinWeightImpExp_vtx2vector( string $vtxName )
    {
    vector $vtx;
    float $workXYZf[];

    $workXYZf= `pointPosition -w $vtxName`;
    $vtx= <<$workXYZf[0], $workXYZf[1], $workXYZf[2]>>;
    
    return( $vtx );
    }





proc vector DoraSkinWeightImpExp_vtx2uvVector( string $vtxName )
    {
    vector $vtx;
    float $workXYZf[];
    string $workString;
    
    $workString= DoraSkinWeightImpExp_vtx2uv( $vtxName );
    $workXYZf= `getAttr $workString`;
    $vtx= <<$workXYZf[0], $workXYZf[1], 0.0>>;
    
    return( $vtx );
    }





proc string DoraSkinWeightImpExp_dswAppendListGet()
    {
    string $ret;
    string $fileList[];
    string $dswDir;
    int $i;
    
    $dswDir= (`workspace -q -fn`+"/dsw/");
    $fileList= `getFileList -folder $dswDir -filespec "*.dsw"`;
    
    for( $i=0,$ret="" ; $i<size( $fileList ) ; $i++ )
        {
        $ret= ($ret + "-a ¥"" + $fileList[$i] + "¥" ");
        
        }
    
    return $ret;
    }







proc string DoraSkinWeightImpExp_searchSC( string $meshShape )
    {
    string $cList[];
    
    $cList= `listHistory $meshShape`;
    $cList= `ls -type skinCluster $cList`;
    
    if( size($cList)==0 )return( "" );
    else return( $cList[0] );
    
    }




proc string DoraSkinWeightImpExp_simpleObjName( string $name )
    {
    string $ret;
    
    $ret = `substitute ".*|" $name ""`;
    
    return( $ret );
    }





global proc int DoraSkinWeightExport( string $dsw_name )
    {
    string $exportFileName;    
    int $fileId;            
    string $slList[];        
    string $shape;            
    string $sc;                
    string $jointList[];    
    int $i,$j;
    int $wp[];                
    string $workString,$workVtx;
    string $outputFileLine;    
    float $weightList[];    
    global string $gMainProgressBar;
    float $wpos[3];            
    float $uv[2];            
    int $noneUVCount;        
    int $mode;                
    
    
    if( $dsw_name=="")
        {
        error("No Export Name");
        return( 0 );
        }
    
    
    $slList= `filterExpand -sm 12`;
    if( size( $slList )==0 )
        {
        
        $slList= `filterExpand -sm 31`; 
        $slList= `ls -fl $slList`;
        if( size( $slList )==0 )
            {
            
            error("No objects SmoothSkinMesh selected (1)");
            return( 0 );
            }
        else{ $mode=2; }
        }
    else{ $mode=1;}
    
    
    
    $shape= DoraSkinWeightImpExp_shapeName( $slList[0] );
    
    
    
    $sc= DoraSkinWeightImpExp_searchSC( $shape );
    if( $sc=="" )
        {
        error("No objects SmoothSkinMesh selected (2)");
        return( 0 );
        }
    
    
    
    
    
    $jointList= `listConnections -type "joint" ($sc+".matrix")`;
    
    
    
    for( $i=0 ; $i<size($jointList) ; $i++ )
        {
        $jointList[$i]= DoraSkinWeightImpExp_simpleObjName( $jointList[$i] );
        }
    
    $workString= DoraSkinWeightImpExp_checkOverlapsList( $jointList );
    if( $workString!="" )
        {
        error("JointName Overlaps [ " + $workString + "]" );
        return( 0 );
        }
    
    
    switch( $mode )
        {
        case 1:
        $wp= `polyEvaluate -v $shape`;
        break;
        
        case 2:
        $wp[0]= size( $slList );
        break;
        }


    
    
    $exportFileName = toNativePath(`workspace -q -fn` + "/" + "dsw/" + DoraSkinWeightImpExp_extCheck($dsw_name, ".dsw"));
    
    sysFile -makeDir `dirname( $exportFileName )`;
    
    
    
    
    
    progressBar -edit
        -beginProgress
        -status ("Export  [ " + $exportFileName +" ]")
        -maxValue $wp[0]
        $gMainProgressBar;
    
    
    
    $fileId=`fopen $exportFileName "w"`;
    
    fprint $fileId ("DoraYuki Skin Weight Format 3.00¥n");
    
    
    
    $outputFileLine= "";
    for( $i=0 ; $i<size($jointList) ; $i++ )
        {
        $outputFileLine+= ($jointList[$i]);
        if( $i+1 < size($jointList) )
            {
            $outputFileLine+= ",";
            }
        }
    fprint $fileId ( $outputFileLine + "¥n" );
    
    
    $noneUVCount= 0;
    
    
    for( $i=0 ; $i<$wp[0] ; $i++ )
        {
        
        
        switch( $mode )
            {
            case 1:
            $workVtx= ($shape + ".vtx[" + $i + "]");
            break;
            
            case 2:
            $workVtx= $slList[$i];
            break;
            }
        
        $weightList= `skinPercent -q -v $sc $workVtx`;
        
        $outputFileLine= "";
        
        for( $j=0 ; $j<size($weightList) ; $j++ )
            {
            $outputFileLine+= $weightList[$j];
            if( $j+1 < size($weightList) )
                {
                $outputFileLine+= ",";
                }
            }
        
        $outputFileLine+= "|";
        
        
        $wpos= `pointPosition -w $workVtx`;
        $outputFileLine+= ( $wpos[0] + "," + $wpos[1] + "," + $wpos[2] + "|" );
        
        
        $workString= DoraSkinWeightImpExp_vtx2uv($workVtx);
        
        if( $workString!="" )
            {
            $uv= `getAttr $workString`;
            }
        else
            {
            $noneUVCount++;
            warning("noneUV Vartex[ " + $i + " ]");
            $uv[0]=0.0;
            $uv[1]=0.0;
            }
        
        $outputFileLine+= ( $uv[0] + "," + $uv[1] );
        
        
        fprint $fileId ( $outputFileLine + "¥n");
        
        
        
        progressBar -edit
            -step 1 $gMainProgressBar;
        }
    
    
    fclose $fileId;
    
    
    progressBar -edit
        -endProgress
        $gMainProgressBar;
    
    
    $i= $wp[0];
    $wp= `polyEvaluate -v $shape`;
    confirmDialog -title "DSW Exported" -message ( "[ " + $shape + " ] Vertex : " + $wp[0] + "¥n¥nDSW VertexPoint : " + $i + "¥n¥nnoneUV VartexPoint : " + $noneUVCount + "¥n¥nExportDSWFile : ¥n[ "+ $exportFileName + " ]") -button "OK" -defaultButton "OK";
    
    return( 1 );
    }




proc int DoraSkinWeightImpExp_compDistance( vector $xyz, vector $a, vector $b, float $distance[] )
    {
    $distance[0]= abs(mag($xyz-$a));
    $distance[1]= abs(mag($xyz-$b));
    
    if( $distance[0] > $distance[1] )return(0);
    else return(1);
    }








proc int DoraSkinWeightImpExp_vtxDistanceMin( vector $xyz, string $shape, int $mode, int $setF[], float $range )
    {
    int $wp[];
    vector $vtxA;
    int $minNo;
    int $i;
    float $dis[2];
    int $hitF;
    
    $minNo=-1;
    $wp= `polyEvaluate -v $shape`;
    
    
    
    
    
    for( $i=0,$hitF= 0 ; $i<$wp[0] ; $i++ )
        {
        
        if( $setF[$i]==1 )continue;
        
        if( $mode==0 )$vtxA= DoraSkinWeightImpExp_vtx2vector($shape + ".vtx[" + $i + "]");
        else $vtxA= DoraSkinWeightImpExp_vtx2uvVector($shape + ".vtx[" + $i + "]");
        
        
        $dis[0]= abs(mag($xyz-$vtxA));
        if( $dis[0]<=$range )
            {
            $hitF=1;
            $minNo= $i;
            break;
            }
        }
    
    
    if( $hitF==1 )return( $minNo );
    
    
    return( -1 );
    }





proc DoraSkinWeightImpExp_weightCopy( int $an, int $bn, string $sc, string $shape )
    {
    string $workString;
    string $jointList[];
    float $weightList[];
    float $weight;
    int $i;
    
    
    
    
    
    
    $jointList= `listConnections -type "joint" ($sc+".matrix")`;
    
    
    for( $i=0 ; $i<size($jointList) ; $i++ )
        {
        $jointList[$i]= DoraSkinWeightImpExp_simpleObjName( $jointList[$i] );
        }
    
    $workString= ($shape + ".vtx[" + $an + "]");
    $weightList= `skinPercent -q -v $sc $workString`;
    
    $workString= "";
    for( $i=0 ; $i<size($jointList); $i++ )
        {
        $weight= float($weightList[$i]);
        $workString+= ( "-tv " + $jointList[$i] + " " + $weight + " " );
        }
    
    
    
    if( $workString!="" )
        {
        $vtxName= ($shape + ".vtx[" + $bn + "]");
        $workString= ("skinPercent " + $workString + $sc + " " + $vtxName );
        eval( $workString );
        
        
        }
    
    }



proc string DoraSkinWeightImpExp_getParam_weightSet( string $selectJoint[], int $exist[], int $unknown[], string $joint[], string $weight[] )
    {
    string $workString= "";
    string $jName="";
    string $jWeight="";
    
    
    for( $i=0 ; $i<size($exist); $i++ )
        {
        $jName= $selectJoint[$exist[$i]];
        $jWeight=" ";
        
        
        for( $j=0 ; $j<size($joint) ; $j++ )
            {
            if( $jName==$joint[$j] )
                {
                $jWeight=$weight[$j];
                $workString+= ( "-tv " + $jName + " " + $jWeight + " " );
                break;
                }
            }
        }
    
    
    for( $i=0 ; $i<size($unknown); $i++ )
        {
        $workString+= ( "-tv " + $selectJoint[$unknown[$i]] + " 0 " );
        }
    
    return( $workString );
    }




global proc int DoraSkinWeightImport( string $dsw_name, int $importMode, int $interpolationWeight, int $interpolationMode, float $para)
    {
    global string $gDoraSkinWeightImpExp_jointNameNew[];
    string $ImportFileName;            
    int $fileId;                    
    string $textLine;                
    string $slList[];                
    string $shape;                    
    string $sc;                        
    string $jointList[];            
    string $selectMeshJointList[];    
    int $existJointN[];                
    int $unknownJointN[];            
    string $weightList[];            
    int $wp[];                        
    string $vtxName;                
    int $i, $j, $k, $l;
    string $workString,$workString2;
    string $pointData[];            
    
    float $weight;
    global string $gMainProgressBar;
    string $workXYZs[];
    float $workXYZf[];
    vector $workVec[2];
    vector $wpos[2];
    int $minNo;
    float $workDistance[2];            
    
    int $weightSetF[];                
    int $dataCount;                    
    int $weightSetCount;            
    int $weightSet2Count;            
    
    
    if( $dsw_name=="")
        {
        return( 0 );
        }
    
    
    
    $slList= `filterExpand -sm 12`;
    if( size( $slList )==0 )
        {
        error("No objects SmoothSkinMesh selected (1)");
        return( 0 );
        }
    
    
    $shape= DoraSkinWeightImpExp_shapeName( $slList[0] );
    
    
    $sc= DoraSkinWeightImpExp_searchSC( $shape );
    if( $sc=="" )
        {
        error("No objects SmoothSkinMesh selected (2)");
        return( 0 );
        }
    
    
    
    
    
    $selectMeshJointList= `listConnections -type "joint" ($sc+".matrix")`;
    
    
    for( $i=0 ; $i<size($selectMeshJointList) ; $i++ )
        {
        $selectMeshJointList[$i]= DoraSkinWeightImpExp_simpleObjName( $selectMeshJointList[$i] );
        }
    
    $workString= DoraSkinWeightImpExp_checkOverlapsList( $selectMeshJointList );
    if( $workString!="" )
        {
        error("JointName Overlaps [ " + $workString + "]" );
        return( 0);
        }
    
    
    
    
    
    
    
    
    
    
    $importFileName = toNativePath(`workspace -q -fn` + "/dsw/" + $dsw_name);
    
    
    
    $wp= `polyEvaluate -v $shape`;
    
    
    for( $i=0 ; $i<$wp[0] ; $i++ )$weightSetF[$i]=0;
    
    
    $fileId=`fopen $importFileName "r"`;
    
    
    $textLine= `fgetline $fileId`;
    $textLine= `substitute "¥n" $textLine ""`;
    
    if( $textLine!="DoraYuki Skin Weight Format 3.00" )
        {
        error( "No DSW Format 3.00" );
        return( 0 );
        }
    
    
    $textLine= `fgetline $fileId`;
    
    $textLine= `substitute "¥n" $textLine ""`;
    
    if($textLine=="" )
        {
        return( 0 );
        }
    
    
    tokenizeList($textLine, $jointList);
    
    
    for( $j=0 ; $j<size($jointList) ; $j++ )
        {
        $jointList[$j]= DoraSkinWeightImpExp_simpleObjName( $jointList[$j] );
        }
    
    
    if( `window -ex DoraSkinWeightImpExpJointNameEditWindow` == true )
        {
        for( $i=0 ; $i<size($jointList) ; $i++ )
            {
            $jointList[$i]= $gDoraSkinWeightImpExp_jointNameNew[$i];
            }
        }
    
    
    $e=0;
    $u=0;
    for( $s=0 ; $s<size($selectMeshJointList); $s++ )
        {
        $check=0;
        for( $d=0 ; $d<size($jointList) ; $d++ )
            {
            
            if( $selectMeshJointList[$s]==$jointList[$d])
                {
                $existJointN[$e]= $s;
                $e++;
                $check=1;
                break;
                }
            }
        
        if( $check==0 )
            {
            $unknownJointN[$u]=$s;
            $u++;
            }
        }
    
    
    
    
    
    
        progressBar -edit
        -beginProgress
        -status ("Import  [ " + $importFileName +" ]")
        -maxValue $wp[0]
        $gMainProgressBar;
    
    
    
    setAttr ( $sc + ".normalizeWeights") 0;
    
    
    
    setAttr ( $sc + ".envelope") 0;
    
    
    
    $dataCount=0;
    $weightSetCount=0;
    $weightSet2Count=0;
    
    switch( $importMode )
        {
        
        
        
        case 0:
        
        for( $i=0 ; $i<$wp[0] ; $i++ )
            {
            
            
            
            
            
            $textLine= `fgetline $fileId`;
            
            $textLine= `substitute "¥n" $textLine ""`;
            
            
            if($textLine=="" )break;
                
            
            tokenize( $textLine, "|", $pointData );
            
            
            tokenizeList($pointData[0], $weightList);
            
            
            $dataCount++;
            
            
            
            $workString=DoraSkinWeightImpExp_getParam_weightSet( $selectMeshJointList, $existJointN, $unknownJointN, $jointList, $weightList  );
            
            
            if( $workString!="" )
                {
                $vtxName= ($shape + ".vtx[" + $i + "]");
                
                $workString= ("skinPercent -r false " + $workString + $sc + " " + $vtxName );
                eval( $workString );
                $weightSetCount++;
                
                
                $weightSetF[$i]= 1;
                
                }
            
            
            progressBar -edit
                -step 1 $gMainProgressBar;
            }
        
        break;
        
        
        
        
        case 1:
        
        $textLine= `fgetline $fileId`;
        while( $textLine!="" )
            {
            
            
            
            
            $textLine= `substitute "¥n" $textLine ""`;
            
            tokenize( $textLine, "|", $pointData );
            
            
            
            
            tokenizeList($pointData[0], $weightList);
            
            
            tokenizeList($pointData[1], $workXYZs);
            $wpos[0]= << float($workXYZs[0]), float($workXYZs[1]), float($workXYZs[2])>>;
            
            
            $dataCount++;
            
            
            
            
            $minNo= DoraSkinWeightImpExp_vtxDistanceMin( $wpos[0], $shape, 0, $weightSetF, $para);
            
            if( $minNo!=-1 )
                {
                
                $workString=DoraSkinWeightImpExp_getParam_weightSet( $selectMeshJointList, $existJointN, $unknownJointN, $jointList, $weightList  );
                
                
                if( $workString!="" )
                    {
                    $vtxName= ($shape + ".vtx[" + $minNo + "]");
                    
                    $workString= ("skinPercent -r false " + $workString + $sc + " " + $vtxName );
                    
                    eval( $workString );
                    $weightSetCount++;
                    
                    
                    $weightSetF[$minNo]= 1;
                    }
                
                }
            
            
            progressBar -edit
                -step 1 $gMainProgressBar;
            
            $textLine= `fgetline $fileId`;
            }
        
        break;
        
        
        
        
        case 2:
        
        $textLine= `fgetline $fileId`;
        while( $textLine!="" )
            {
            
            
            
            
            $textLine= `substitute "¥n" $textLine ""`;
            
            tokenize( $textLine, "|", $pointData );
            
            
            tokenizeList($pointData[0], $weightList);
            
            
            tokenizeList($pointData[2], $workXYZs);
            $wpos[0]= << float($workXYZs[0]), float($workXYZs[1]), 0>>;
            
            
            $dataCount++;
            
            
            
            
            $minNo= DoraSkinWeightImpExp_vtxDistanceMin( $wpos[0], $shape, 1, $weightSetF, $para );
            
            if( $minNo!=-1 )
                {
                
                $workString=DoraSkinWeightImpExp_getParam_weightSet( $selectMeshJointList, $existJointN, $unknownJointN, $jointList, $weightList  );
                
                
                if( $workString!="" )
                    {
                    $vtxName= ($shape + ".vtx[" + $minNo + "]");
                    
                    $workString= ("skinPercent -r false " + $workString + $sc + " " + $vtxName );
                    
                    eval( $workString );
                    $weightSetCount++;
                    
                    $weightSetF[$minNo]= 1;
                    }
                }
            
            
            progressBar -edit
                -step 1 $gMainProgressBar;
            
            $textLine= `fgetline $fileId`;
            }
        break;

        }
    
    
    

    
    
    
    
    if( $interpolationWeight == 1 )
        {
        switch( $interpolationMode )
            {
            
            case 1:
            
            $workString="";
            for( $i=0 ; $i<size($weightSetF) ; $i++ )
                {
                
                if( $weightSetF[$i]==1 )continue;
                
                
                
                
                
                $minNo= -1;
                for( $j=0 ; $j<$wp[0] ; $j++ )
                    {
                    
                    if( $i!=$j && $weightSetF[$j]==1 )
                        {
                        
                        $workVec[0]= DoraSkinWeightImpExp_vtx2vector($shape + ".vtx[" +  $j + "]");
                        $minNo= $j;
                        break;
                        }
                    
                    }
                
                for( ; $j<$wp[0] ; $j++ )
                    {
                    
                    if( $i!=$j && $weightSetF[$j]==1 )
                        {
                        $workVec[1]= DoraSkinWeightImpExp_vtx2vector($shape + ".vtx[" + $j + "]");
                        
                        if( DoraSkinWeightImpExp_compDistance( DoraSkinWeightImpExp_vtx2vector($shape + ".vtx[" + $i + "]"), $workVec[0], $workVec[1], $workDistance )==0 )
                            {
                            $workVec[0]= $workVec[1];
                            $minNo= $j;
                            }
                        }
                    }
                
                
                progressBar -edit
                    -step 1 $gMainProgressBar;
                
                
                
                
                if( $minNo == -1 )break;
                
                
                DoraSkinWeightImpExp_weightCopy( $minNo, $i, $sc, $shape );
                $weightSet2Count++;
                
                $weightSetF[$i]=2;
                }
            break;
            
            
            case 2:
            
            $workString="";
            for( $i=0 ; $i<size($weightSetF) ; $i++ )
&
| whaison | MEL(Maya Embedded Language) | 13:05 | comments(0) | - | pookmark |
            
2015.04.30 Thursday
Mayaで空のnull Objectを作成する>CreateEmptyGroup;
Mayaで空のnull Objectを作成する>CreateEmptyGroup;
作成>空のグループ

melだと
CreateEmptyGroup;

結果


関連
http://forums.cgsociety.org/archive/index.php/t-151066.html
| whaison | MEL(Maya Embedded Language) | 19:55 | comments(0) | - | pookmark |
            
2015.04.24 Friday
window の外部グローバル変数の参照をとっておき OKボタンで呼び出した関数内でdeleteUI でwindow閉じるmel

window001.mel

//-------------------------------------------------------------------------------------
string $window1Name;//ここの外部グローバル変数にアクセスしたい。

global proc window001()
{
global string $window1Name;//外部グローバルの変数とってくる。
$window1Name = `window -title "ビュー設定の確認"`;
columnLayout;
text -label "ビュー>定義済みのブックマーク>前面に設定してください。";
text -label "Fを押してモデル全体を表示設定してください。";
//button -label "OK"  -command ("deleteUI "+$window1Name);
button -label "OK"  -command "closeAndWindow002()";
showWindow;

}
window001();
global proc closeAndWindow002()
{
    global string $window1Name;//外部グローバルの変数とってくる。
    deleteUI $window1Name;
    //window002();
}
//-------------------------------------------------------------------------------------
| whaison | MEL(Maya Embedded Language) | 18:05 | comments(0) | - | pookmark |