[Maya]特殊な複製 duplicate -upstreamNodes でスキンウェイトごと複製する。

あるようで知らない特殊な複製。

//	選択したノードに至る上流ノード (およびその接続) も複製されます。
//  スキンウェイトなどもコピーされます。
duplicate -upstreamNodes;

上記の場合

duplicate -returnRootsOnly -upstreamNodes; 
group root1 parts_low1;

カスタムした例

global proc skinWeightCopy_JointMeshGroup(){
    //選択
    select root parts_low;
    //スキンウェイトモデルのスキンウェイトごとコピー
    duplicate -returnRootsOnly -upstreamNodes; 
    //グループ化
    group -name "group_dup" root1 parts_low1;
    //元の名前にリネーム
    rename "group_dup|root1" "root";
    rename "group_dup|parts_low1" "parts_low";
}
skinWeightCopy_JointMeshGroup();

combine しながらエクスポート

global proc skinWeightCopy_JointMeshGroup(){
    //選択
    select "|root" "|parts_low";
    //スキンウェイトモデルのスキンウェイトごとコピー
    duplicate -returnRootsOnly -upstreamNodes; 
    //グループ化
    group -name "group_dup" root1 parts_low1;
    //元の名前にリネーム
    rename "group_dup|root1" "root";
    rename "group_dup|parts_low1" "parts_low";
}

global proc group_dup_parts_low_combine(){
    
    
    string $selected[] = `ls -sl -long -absoluteName`;
    //string $selectedStr = stringArrayToString($selected, ",");   // ","を区切り文字として結合する
    //print("選択したもの $selected= "+$selectedStr+"\n");
    string $mesh[];
    for ($sel in $selected) {
      string $allMesh[] = `listRelatives -ni -pa -ad -typ "mesh" $sel`;
      for ($am in $allMesh) {
        string $trans[] = `listRelatives -ni -pa -p $am`;
        $mesh[size($mesh)] = $trans[0];
      }
    }
    
    $mesh = stringArrayRemoveDuplicates($mesh);
    string $meshStr = stringArrayToString($mesh, ",");   // ","を区切り文字として結合する
    print(" メッシュのみ選別したもの $mesh= "+$meshStr+"\n");
    
    

    select -r $mesh; // <メッシュのみ選択
    // Combine実行
      
    // Skeletalだった場合
    string $combine[] = `polyUniteSkinned -ch 0 -muv 1`;
    rename $combine[0] "MeshGP";

    //よけておくグループ化
    select "|root" "parts_low";
    string $group_root;
    $group_root =`group -world -name "group_root"`;
        
    //MeshGPをparts_lowへ入れる
    select "MeshGP";
    string $group_parts_low;
    $group_parts_low =`group -world -name "parts_low"`;
       
    //worldへ移動 
    parent -world "group_dup|root";
    
    //出力用選択
    select "|root" "|parts_low";
    
    // Export
    // --------------------------------------------------------------------------
    simple_model_common_Export(2, "D:/MOSADesign/WorkData/Avatar/008/001/PL_008_001_001/Game/SK_PL_008_001_001_Body.fbx", 0);
    
    //おかたずけ partslow|MeshGP rootを削除
    delete "|parts_low" "|root" "|group_dup";
    
    //worldへ移動 
    parent -world "group_root|root";
    //worldへ移動 
    parent -world "group_root|parts_low"; 
    //group_root 削除
    delete "|group_root";
}



// Export
//--------------------------------------------------------------------------
global proc simple_model_common_Export(int $type, string $expName, int $modelType) {
  showHidden -a;
  // if($type == 2) {
  if ($type == 1) {
    FBXExportSmoothMesh -v 0;
  } else {
    FBXExportSmoothMesh -v 1;
  }
  FBXExportAnimationOnly -v 0;
  FBXExportInAscii -v 0 ;
  FBXExportConvertUnitString cm;
  FBXExportTriangulate -v 0;
  FBXExportSmoothingGroups -v 1;
  FBXExportConstraints -v 0;
  FBXExport -f $expName -s;
}

参考URL

https://help.autodesk.com/cloudhelp/2025/ENU/Maya-Tech-Docs/Commands/duplicate.html

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

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です