diff --git a/pandatool/src/scripts/MayaPandaTool.mel b/pandatool/src/scripts/MayaPandaTool.mel index 8fac0f080a..6526f382d8 100755 --- a/pandatool/src/scripts/MayaPandaTool.mel +++ b/pandatool/src/scripts/MayaPandaTool.mel @@ -1,493 +1,591 @@ /////////////////////////////////////////////////////////////////////////////////// -// Panda3D Exporter Tool // +// Panda3D Exporter Tool // // Carnegie Mellon University ETC (Entertainment Technology Center) Panda3D Team // -// Author: Shao Zhang // -// 04/14/2005 // -// // -// This tool will allow an artist to export and view assets directly from // -// maya. // -// // -// To run this mel script, drag and drop it (the .mel file) into your current // -// maya workspace. // +// Author: Shao Zhang // +// 04/14/2005 // +// // +// This tool will allow an artist to export and view assets directly from maya. // +// // +// To run this mel script, drag and drop it (the .mel file) into your current // +// maya workspace. // /////////////////////////////////////////////////////////////////////////////////// +// +// EDIT HISTORY +// +// 06/26/06: ynjh_jo - Major edits; described in http://panda3d.net/phpbb2/viewtopic.php?t=2503 +// 07/03/06: Mark Tomczak (fixermark@gmail.com) - Added "Actor" option to export with -a model option global proc pandaExporterUI() { - if ( `window -exists PandaExporter` ) - deleteUI -window PandaExporter; - - // Window is locked for image dimensions: 280×575 - // (add a few pixels to compensate for title bar and borders) - window - -title "Panda Exporter" - -width 280 - -height 575 - -sizeable 0 - PandaExporter; - - // Use a formLayout so you control the overlap of the controls - formLayout - -numberOfDivisions 575 - -width 275 - -height 550 - mainForm; - - // First add controls - button - -label "Export" - -command "exportButton" - exportButton; - - button - -label "Browse" - -enable 0 - -command ( "browseForFolder \"texPath\"" ) - browseTexPathButton; - - button - -label "Browse" - -enable 0 - -command ( "browseForFolder \"outputPath\"" ) - browseOutputPathButton; - - button - -label "Select a file to Pview" - -command "getFile2Pview" - pviewButton; - - button - -label "Select a file to EGG" - -command "getFile2Egg" - eggButton; - - button - -label "Select a file to BAM" - -command "getFile2Bam" - bamButton; - - button - -label "www.panda3d.org" - -command "openBrowser" - webButton; - - checkBox - -label "Double sided faces" - -value 0 - bfaceCB; - - checkBox - -label "Overwrite if file exists" - -value 1 - overwriteCB; - - checkBox - -label "Run Pview after export" - -value 0 - pviewCB; - - radioCollection exportOptionsRC; - radioButton - -label "Mesh" - -select - -onCommand ( "exportOptionsUI" ) - chooseMeshRB; - radioButton - -label "Animation" - -onCommand ( "exportOptionsUI" ) - chooseAnimationRB; - radioButton - -label "Both" - -onCommand ( "exportOptionsUI" ) - chooseBothRB; - radioButton - -label "Pose" - -onCommand ( "exportOptionsUI" ) - choosePoseRB; - setParent ..; //drop out of exportOptionsRC - - radioCollection selectionOptionsRC; - radioButton - -label "Export entire scene" - -select - //-onCommand ( "" ) - chooseSceneRB; - radioButton - -label "Export selected objects" - //-onCommand ( "" ) - chooseObjectsRB; - setParent ..; //drop out of selectionOptionsRC - - radioCollection animationOptionsRC; - radioButton - -label "Full Range" - -enable 0 - -onCommand ( "animationOptionsUI" ) - chooseFullRangeRB; - radioButton - -label "Custom Range" - -enable 0 - -onCommand ( "animationOptionsUI" ) - chooseCustomRangeRB; - setParent ..; //drop out of animationOptionsRC - - radioCollection outputFileOptionsRC; - radioButton - -label "EGG (ASCII)" - -select - chooseEggRB; - radioButton - -label "BAM (binary)" - -enable 0 - chooseBamRB; - radioButton - -label "Both" - chooseEggBamRB; - setParent ..; //drop out of outputFileOptionsRC - - radioCollection texPathOptionsRC; - radioButton - -label "Reference textures relative to maya file (default)" - -select - -onCommand ( "texPathOptionsUI" ) - chooseDefaultTexPathRB; - radioButton - -label "Reference textures relative to custom path" - -onCommand ( "texPathOptionsUI" ) - chooseCustomTexPathRB; - setParent ..; //drop out of texPathOptionsRC - - radioCollection outputPathOptionsRC; - radioButton - -label "Export to root directory of source file (default)" - -select - -onCommand ( "outputPathOptionsUI" ) - chooseDefaultOutputPathRB; - radioButton - -label "Export to other directory:" - -onCommand ( "outputPathOptionsUI" ) - chooseCustomOutputPathRB; - setParent ..; //drop out of outputPathOptionsRC - - radioCollection outputFilenameOptionsRC; - radioButton - -label "Use original filename" - -select - -onCommand ( "outputFilenameOptionsUI" ) - chooseOriginalFilenameRB; - radioButton - -label "Use alternate filename" - -onCommand ( "outputFilenameOptionsUI" ) - chooseCustomFilenameRB; - setParent ..; //drop out of outputFilenameOptionsRC - - text - -label "Maya Panda Exporter v.1.2 CMU/ETC Panda3D Team" - -font "plainLabelFont" - titleText; - - text - -label "Selection Options:" - -font "plainLabelFont" - selectionOptionsText; - - text - -label "Output File Options:" - -font "plainLabelFont" - outputFileOptionsText; - - text - -label "Texture Path Options:" - -font "plainLabelFont" - texPathOptionsText; - - text - -label "Specify alternate directory:" - -font "plainLabelFont" - customTexPathText; - - text - -label "Output directory Options:" - -font "plainLabelFont" - outputPathOptionsText; - - text - -label "Specify alternate directory:" - -font "plainLabelFont" - customOutputPathText; - - text - -label "Output filename Options:" - -font "plainLabelFont" - outputFilenameOptionsText; - - textField - -editable 1 - -enable 0 - customTexPathTF; - - textField - -editable 1 - -enable 0 - customOutputPathTF; - - textField - -editable 1 - -enable 0 - customFilenameTF; - - frameLayout - -label "Export Options:" - -font "plainLabelFont" - -labelIndent 2 - -collapsable 0 - -collapse 0 - -borderStyle "etchedOut" - leftFrame; - setParent ..; //drop out of leftFrame - - frameLayout - -label "Animation Options:" - -font "plainLabelFont" - -labelIndent 2 - -collapsable 0 - -collapse 0 - -borderStyle "etchedOut" - rightFrame; - - columnLayout - -columnAttach "left" 0 - -rowSpacing 0 - -columnWidth 60 - leftFrameColumn; - - text -label " \n \n \n"; - text -label "Start Frame:"; - textField - -editable 1 - -enable 0 - -width 108 - startFrameTF; - - text -label "End Frame:"; - textField - -editable 1 - -enable 0 - -width 108 - endFrameTF; - - setParent ..; //drop out of leftFrameColumn - setParent ..; //drop out of rightFrame - - frameLayout - -label "Extra Tools" - -font "plainLabelFont" - -labelIndent 38 - -collapsable 0 - -collapse 0 - -borderStyle "etchedOut" - extraToolsFrame; - setParent ..; //drop out of extraToolsFrame + if ( `window -exists PandaExporter2` ) + deleteUI -window PandaExporter2; + + string $unit=`currentUnit -q -linear`; + string $unitFull=`currentUnit -q -linear -fullName`; + + // Window is locked for image dimensions: 280×575 + // (add a few pixels to compensate for title bar and borders) + window + -title "Panda Exporter" + -width 280 + -height 575 + -sizeable 0 + PandaExporter2; + + // Use a formLayout so you control the overlap of the controls + formLayout + -numberOfDivisions 575 + -width 275 + -height 550 + mainForm; + + // First add controls + button + -label "--- E X P O R T ---" + -command "exportButton" + exportButton; + + button + -label "Browse" + -enable 0 + -command ( "browseForFolder \"texPath\"" ) + browseTexPathButton; + + button + -label "Browse" + -enable 0 + -command ( "browseForFolder \"outputPath\"" ) + browseOutputPathButton; + + button + -label "..." + -enable 0 + -command ( "browseForFile \"outputPath\"" ) + browseFilenameButton; + + button + -label "Select a file to Pview" + -command "getFile2Pview" + pviewButton; + + button + -label "Select a file to EGG" + -command "getFile2Egg" + eggButton; + + button + -label "Select a file to BAM" + -command "getFile2Bam" + bamButton; + + button + -label "www.panda3d.org" + -command "openBrowser" + webButton; + + checkBox + -label "Export selected objects" + -value 0 + selectedCB; + + checkBox + -label "Double sided faces" + -value 0 + bfaceCB; + + checkBox + -label "Overwrite if file exists" + -value 1 + overwriteCB; + + checkBox + -label "Run Pview after export" + -value 0 + pviewCB; + + radioCollection exportOptionsRC; + radioButton + -label "Mesh" + -select + -onCommand ( "exportOptionsUI" ) + chooseMeshRB; + radioButton + -label "Actor" + -onCommand ( "exportOptionsUI" ) + chooseActorRB; + radioButton + -label "Animation" + -onCommand ( "exportOptionsUI" ) + chooseAnimationRB; + radioButton + -label "Both" + -onCommand ( "exportOptionsUI" ) + chooseBothRB; + radioButton + -label "Pose" + -onCommand ( "exportOptionsUI" ) + choosePoseRB; + setParent ..; //drop out of exportOptionsRC + + radioCollection animationOptionsRC; + radioButton + -label "Full Range" + -enable 0 + -onCommand ( "animationOptionsUI" ) + chooseFullRangeRB; + radioButton + -label "Custom Range" + -enable 0 + -onCommand ( "animationOptionsUI" ) + chooseCustomRangeRB; + setParent ..; //drop out of animationOptionsRC + + radioCollection outputFileOptionsRC; + radioButton + -label "EGG (ASCII)" + -select + chooseEggRB; + radioButton + -label "BAM (binary)" + -enable 0 + chooseBamRB; + radioButton + -label "Both" + chooseEggBamRB; + setParent ..; //drop out of outputFileOptionsRC + + radioCollection texPathOptionsRC; + radioButton + -label "Reference textures relative to maya file (default)" + -select + -onCommand ( "texPathOptionsUI" ) + chooseDefaultTexPathRB; + radioButton + -label "Reference textures relative to custom path" + -onCommand ( "texPathOptionsUI" ) + chooseCustomTexPathRB; + setParent ..; //drop out of texPathOptionsRC + + radioCollection outputPathOptionsRC; + radioButton + -label "Export to root directory of source file (default)" + -select + -onCommand ( "outputPathOptionsUI" ) + chooseDefaultOutputPathRB; + radioButton + -label "Export to other directory:" + -onCommand ( "outputPathOptionsUI" ) + chooseCustomOutputPathRB; + setParent ..; //drop out of outputPathOptionsRC + + radioCollection outputFilenameOptionsRC; + radioButton + -label "Use original filename" + -select + -onCommand ( "outputFilenameOptionsUI" ) + chooseOriginalFilenameRB; + radioButton + -label "Use alternate filename" + -onCommand ( "outputFilenameOptionsUI" ) + chooseCustomFilenameRB; + setParent ..; //drop out of outputFilenameOptionsRC + + radioCollection transformModeRC; + radioButton + -label "all" + -select + -onCommand ( "transformModeUI" ) + chooseTransformAllRB; + radioButton + -label "model/DCS flag" + -onCommand ( "transformModeUI" ) + chooseTransformModelRB; + setParent ..; //drop out of transformModeRC + + text + -label "Maya Panda Exporter v.1.3 CMU/ETC Panda3D Team" + -font "plainLabelFont" + titleText; + + text + -label "Output File Options:" + -font "plainLabelFont" + outputFileOptionsText; + + text + -label "Texture Path Options:" + -font "plainLabelFont" + texPathOptionsText; + + text + -label "Specify alternate directory:" + -font "plainLabelFont" + customTexPathText; + + text + -label "Output directory Options:" + -font "plainLabelFont" + outputPathOptionsText; + + text + -label "Specify alternate directory:" + -font "plainLabelFont" + customOutputPathText; + + text + -label "Output filename Options:" + -font "plainLabelFont" + outputFilenameOptionsText; + + text + -label "Save transform:" + -font "plainLabelFont" + transformModeText; + + text + -label ("Convert unit from ( "+$unitFull+" ) to : ") + -align "right" + -font "boldLabelFont" + convertUnitText; + + textField + -editable 1 + -enable 0 + customTexPathTF; + + textField + -editable 1 + -enable 0 + customOutputPathTF; + + textField + -editable 1 + -enable 0 + customFilenameTF; + + optionMenu + unitMenu; + menuItem -label "mm"; + menuItem -label "cm"; + menuItem -label "m"; + menuItem -label "km"; + menuItem -label "in"; + menuItem -label "ft"; + menuItem -label "yd"; + menuItem -label "nmi"; + menuItem -label "mi"; + + + frameLayout + -label "Export Options:" + -font "plainLabelFont" + -labelIndent 2 + -collapsable 0 + -collapse 0 + -borderStyle "etchedOut" + leftFrame; + setParent ..; //drop out of leftFrame + + frameLayout + -label "" + -collapsable 0 + -collapse 0 + -borderStyle "etchedOut" + leftMiddleFrame; + setParent ..; //drop out of leftFrame + + frameLayout + -label "" + -collapsable 0 + -collapse 0 + -borderStyle "etchedOut" + leftBottomFrame; + setParent ..; //drop out of leftFrame + + frameLayout + -label "Animation Options:" + -font "plainLabelFont" + -labelIndent 2 + -collapsable 0 + -collapse 0 + -borderStyle "etchedOut" + rightFrame; + + columnLayout + -columnAttach "left" 0 + -rowSpacing 0 + -columnWidth 60 + leftFrameColumn; + + text -label "\n\n"; + text -label "Start Frame:"; + textField + -editable 1 + -enable 0 + -width 108 + startFrameTF; + + text -label "End Frame:"; + textField + -editable 1 + -enable 0 + -width 108 + endFrameTF; + + setParent ..; //drop out of leftFrameColumn + setParent ..; //drop out of rightFrame + + frameLayout + -label "Extra Tools" + -font "plainLabelFont" + -labelIndent 28 + -collapsable 0 + -collapse 0 + -borderStyle "etchedOut" + extraToolsFrame; + setParent ..; //drop out of extraToolsFrame + + frameLayout + -label "" + -collapsable 0 + -collapse 0 + -borderStyle "etchedIn" + exportButtonFrame; + setParent ..; //drop out of extraToolsFrame + + setParent ..; //drop out of "mainForm" + + // Now edit the layout of the controls in "mainForm + formLayout -edit + + + /* text */ + -ap titleText "top" 0 2 + -ap titleText "left" 0 5 + -ap titleText "right" 0 575 + + -ap outputFileOptionsText "top" 0 188 + -ap outputFileOptionsText "left" 0 10 + -ap outputFileOptionsText "right" 0 210 + + -ap texPathOptionsText "top" 0 226 + -ap texPathOptionsText "left" 0 10 + -ap texPathOptionsText "right" 0 210 + + -ap customTexPathText "top" 0 280 + -ap customTexPathText "left" 0 10 + -ap customTexPathText "right" 0 300 + + -ap outputPathOptionsText "top" 0 324 + -ap outputPathOptionsText "left" 0 10 + -ap outputPathOptionsText "right" 0 300 + + -ap customOutputPathText "top" 0 378 + -ap customOutputPathText "left" 0 10 + -ap customOutputPathText "right" 0 300 - setParent ..; //drop out of "mainForm" + -ap convertUnitText "top" 0 165 + -ap convertUnitText "left" 0 10 + -ap convertUnitText "right" 0 460 - // Now edit the layout of the controls in "mainForm - formLayout -edit + -ap outputFilenameOptionsText "top" 0 422 + -ap outputFilenameOptionsText "left" 0 10 + -ap outputFilenameOptionsText "right" 0 290 + -ap transformModeText "top" 0 505 + -ap transformModeText "left" 0 10 + -ap transformModeText "right" 0 290 - /* text */ - -ap titleText "top" 0 2 - -ap titleText "left" 0 5 - -ap titleText "right" 0 575 - -ap selectionOptionsText "top" 0 75 - -ap selectionOptionsText "left" 0 10 - -ap selectionOptionsText "right" 0 210 + /* textfields */ + -ap customTexPathTF "top" 0 298 + -ap customTexPathTF "left" 0 10 + -ap customTexPathTF "right" 0 480 - -ap outputFileOptionsText "top" 0 188 - -ap outputFileOptionsText "left" 0 10 - -ap outputFileOptionsText "right" 0 210 + -ap customOutputPathTF "top" 0 396 + -ap customOutputPathTF "left" 0 10 + -ap customOutputPathTF "right" 0 480 - -ap texPathOptionsText "top" 0 226 - -ap texPathOptionsText "left" 0 10 - -ap texPathOptionsText "right" 0 210 + -ap customFilenameTF "top" 0 480 + -ap customFilenameTF "left" 0 10 + -ap customFilenameTF "right" 0 284 - -ap customTexPathText "top" 0 280 - -ap customTexPathText "left" 0 10 - -ap customTexPathText "right" 0 300 - -ap outputPathOptionsText "top" 0 324 - -ap outputPathOptionsText "left" 0 10 - -ap outputPathOptionsText "right" 0 300 + -ap unitMenu "top" 0 160 + -ap unitMenu "left" 0 460 - -ap customOutputPathText "top" 0 378 - -ap customOutputPathText "left" 0 10 - -ap customOutputPathText "right" 0 300 - -ap outputFilenameOptionsText "top" 0 422 - -ap outputFilenameOptionsText "left" 0 10 - -ap outputFilenameOptionsText "right" 0 290 + /* frames */ + -ap leftFrame "top" 0 20 + -ap leftFrame "bottom" 0 80 + -ap leftFrame "left" 0 4 + -ap leftFrame "right" 0 330 + -ap leftMiddleFrame "top" 0 80 + -ap leftMiddleFrame "bottom" 0 158 + -ap leftMiddleFrame "left" 0 4 + -ap leftMiddleFrame "right" 0 330 + -ap leftBottomFrame "top" 0 158 + -ap leftBottomFrame "bottom" 0 188 + -ap leftBottomFrame "left" 0 4 + -ap leftBottomFrame "right" 0 574 - /* textfields */ - -ap customTexPathTF "top" 0 298 - -ap customTexPathTF "left" 0 10 - -ap customTexPathTF "right" 0 480 + -ap rightFrame "top" 0 20 + -ap rightFrame "bottom" 0 158 + -ap rightFrame "left" 0 334 + -ap rightFrame "right" 0 574 - -ap customOutputPathTF "top" 0 396 - -ap customOutputPathTF "left" 0 10 - -ap customOutputPathTF "right" 0 480 + -ap extraToolsFrame "top" 0 425 + -ap extraToolsFrame "bottom" 0 542 + -ap extraToolsFrame "left" 0 335 + -ap extraToolsFrame "right" 0 574 - -ap customFilenameTF "top" 0 480 - -ap customFilenameTF "left" 0 10 - -ap customFilenameTF "right" 0 284 + -ap exportButtonFrame "top" 0 542 + -ap exportButtonFrame "bottom" 0 573 + -ap exportButtonFrame "left" 0 2 + -ap exportButtonFrame "right" 0 574 - /* frames */ - -ap leftFrame "top" 0 20 - -ap leftFrame "bottom" 0 186 - -ap leftFrame "left" 0 2 - -ap leftFrame "right" 0 330 + /* checkboxes */ + -ap selectedCB "top" 0 82 + -ap selectedCB "left" 0 12 - -ap rightFrame "top" 0 20 - -ap rightFrame "bottom" 0 186 - -ap rightFrame "left" 0 334 - -ap rightFrame "right" 0 574 + -ap bfaceCB "top" 0 101 + -ap bfaceCB "left" 0 12 - -ap extraToolsFrame "top" 0 425 - -ap extraToolsFrame "bottom" 0 570 - -ap extraToolsFrame "left" 0 290 - -ap extraToolsFrame "right" 0 574 + -ap overwriteCB "top" 0 120 + -ap overwriteCB "left" 0 12 + -ap pviewCB "top" 0 139 + -ap pviewCB "left" 0 12 - /* checkboxes */ - -ap bfaceCB "top" 0 128 - -ap bfaceCB "left" 0 12 - -ap overwriteCB "top" 0 145 - -ap overwriteCB "left" 0 12 + /* exportOptionsRC */ + -ap chooseMeshRB "top" 0 21 + -ap chooseMeshRB "left" 0 170 - -ap pviewCB "top" 0 162 - -ap pviewCB "left" 0 12 + -ap chooseActorRB "top" 0 40 + -ap chooseActorRB "left" 0 20 + -ap chooseBothRB "top" 0 59 + -ap chooseBothRB "left" 0 20 + -ap chooseAnimationRB "top" 0 40 + -ap chooseAnimationRB "left" 0 170 - /* exportOptionsRC */ - -ap chooseMeshRB "top" 0 40 - -ap chooseMeshRB "left" 0 20 + -ap choosePoseRB "top" 0 59 + -ap choosePoseRB "left" 0 170 - -ap chooseBothRB "top" 0 59 - -ap chooseBothRB "left" 0 20 - -ap chooseAnimationRB "top" 0 40 - -ap chooseAnimationRB "left" 0 150 - -ap choosePoseRB "top" 0 59 - -ap choosePoseRB "left" 0 150 + /* animationOptionsRC */ + -ap chooseFullRangeRB "top" 0 40 + -ap chooseFullRangeRB "left" 0 346 + -ap chooseCustomRangeRB "top" 0 59 + -ap chooseCustomRangeRB "left" 0 346 - /* selectionOptionsRC */ - -ap chooseSceneRB "top" 0 91 - -ap chooseSceneRB "left" 0 20 - -ap chooseObjectsRB "top" 0 108 - -ap chooseObjectsRB "left" 0 20 + /* outputFileOptionsRC */ + -ap chooseEggRB "top" 0 205 + -ap chooseEggRB "left" 0 10 + -ap chooseBamRB "top" 0 205 + -ap chooseBamRB "left" 0 196 + -ap chooseEggBamRB "top" 0 205 + -ap chooseEggBamRB "left" 0 380 - /* animationOptionsRC */ - -ap chooseFullRangeRB "top" 0 40 - -ap chooseFullRangeRB "left" 0 346 - -ap chooseCustomRangeRB "top" 0 59 - -ap chooseCustomRangeRB "left" 0 346 + /* texPathOptionsRC */ + -ap chooseDefaultTexPathRB "top" 0 244 + -ap chooseDefaultTexPathRB "left" 0 10 + -ap chooseCustomTexPathRB "top" 0 264 + -ap chooseCustomTexPathRB "left" 0 10 - /* outputFileOptionsRC */ - -ap chooseEggRB "top" 0 205 - -ap chooseEggRB "left" 0 10 - -ap chooseBamRB "top" 0 205 - -ap chooseBamRB "left" 0 196 - -ap chooseEggBamRB "top" 0 205 - -ap chooseEggBamRB "left" 0 380 + /* outputPathOptionsRC */ + -ap chooseDefaultOutputPathRB "top" 0 342 + -ap chooseDefaultOutputPathRB "left" 0 10 + -ap chooseCustomOutputPathRB "top" 0 362 + -ap chooseCustomOutputPathRB "left" 0 10 - /* texPathOptionsRC */ - -ap chooseDefaultTexPathRB "top" 0 244 - -ap chooseDefaultTexPathRB "left" 0 10 - -ap chooseCustomTexPathRB "top" 0 264 - -ap chooseCustomTexPathRB "left" 0 10 + /* outputFilenameOptionsRC */ + -ap chooseOriginalFilenameRB "top" 0 440 + -ap chooseOriginalFilenameRB "left" 0 10 + -ap chooseCustomFilenameRB "top" 0 460 + -ap chooseCustomFilenameRB "left" 0 10 + /* transformModeRC */ + -ap chooseTransformAllRB "top" 0 525 + -ap chooseTransformAllRB "left" 0 10 - /* outputPathOptionsRC */ - -ap chooseDefaultOutputPathRB "top" 0 342 - -ap chooseDefaultOutputPathRB "left" 0 10 + -ap chooseTransformModelRB "top" 0 525 + -ap chooseTransformModelRB "left" 0 120 - -ap chooseCustomOutputPathRB "top" 0 362 - -ap chooseCustomOutputPathRB "left" 0 10 + /* browseTexPathButton */ + -ap browseTexPathButton "top" 0 298 + -ap browseTexPathButton "left" 0 485 + -ap browseTexPathButton "right" 0 575 - /* outputFilenameOptionsRC */ - -ap chooseOriginalFilenameRB "top" 0 440 - -ap chooseOriginalFilenameRB "left" 0 10 + /* browseOutputPathButton */ + -ap browseOutputPathButton "top" 0 396 + -ap browseOutputPathButton "left" 0 485 + -ap browseOutputPathButton "right" 0 575 - -ap chooseCustomFilenameRB "top" 0 460 - -ap chooseCustomFilenameRB "left" 0 10 + /* browseFilenameButton */ + -ap browseFilenameButton "top" 0 480 + -ap browseFilenameButton "left" 0 285 + -ap browseFilenameButton "right" 0 330 - /* browseTexPathButton */ - -ap browseTexPathButton "top" 0 298 - -ap browseTexPathButton "left" 0 485 - -ap browseTexPathButton "right" 0 575 + /* extra buttons */ + -ap pviewButton "top" 0 445 + -ap pviewButton "left" 0 340 + -ap pviewButton "right" 0 565 + -ap eggButton "top" 0 468 + -ap eggButton "left" 0 340 + -ap eggButton "right" 0 565 - /* browseOutputPathButton */ - -ap browseOutputPathButton "top" 0 396 - -ap browseOutputPathButton "left" 0 485 - -ap browseOutputPathButton "right" 0 575 + -ap bamButton "top" 0 492 + -ap bamButton "left" 0 340 + -ap bamButton "right" 0 565 + -ap webButton "top" 0 515 + -ap webButton "left" 0 340 + -ap webButton "right" 0 565 - /* extra buttons */ - -ap pviewButton "top" 0 445 - -ap pviewButton "left" 0 305 - -ap pviewButton "right" 0 560 - -ap eggButton "top" 0 475 - -ap eggButton "left" 0 305 - -ap eggButton "right" 0 560 + /* exportButton */ + -ap exportButton "top" 0 545 + -ap exportButton "bottom" 0 570 + -ap exportButton "left" 0 8 + -ap exportButton "right" 0 565 - -ap bamButton "top" 0 505 - -ap bamButton "left" 0 305 - -ap bamButton "right" 0 560 - -ap webButton "top" 0 535 - -ap webButton "left" 0 305 - -ap webButton "right" 0 560 + mainForm; //End of layout + // defining the current unit value + optionMenu -edit -value $unit unitMenu; - - /* exportButton */ - -ap exportButton "top" 0 510 - -ap exportButton "bottom" 0 570 - -ap exportButton "left" 0 8 - -ap exportButton "right" 0 284 - - mainForm; //End of layout - - showWindow PandaExporter; + showWindow PandaExporter2; } @@ -495,155 +593,183 @@ global proc pandaExporterUI() pandaExporterUI(); /////////////////////////////////////////////////////////// -// Process: openBrowser // -// Opens the default browser at the panda3d url // +// Process: openBrowser // +// Opens the default browser at the panda3d url // /////////////////////////////////////////////////////////// global proc openBrowser() { - print "\nGoing to www.panda3d.org...\n"; + print "\nGoing to www.panda3d.org...\n"; - launch -webPage "www.panda3d.org"; + launch -webPage "www.panda3d.org"; } /////////////////////////////////////////////////////////// -// Process: exportOptionsUI // -// Updates the UI when a radio button is chosen // +// Process: exportOptionsUI // +// Updates the UI when a radio button is chosen // /////////////////////////////////////////////////////////// global proc exportOptionsUI() { - string $selectedRB = `radioCollection -query -select exportOptionsRC`; + string $selectedRB = `radioCollection -query -select exportOptionsRC`; - switch ($selectedRB) - { - case "chooseMeshRB": - print("Export Mesh Chosen\n"); - textField -edit -enable 0 startFrameTF; - textField -edit -enable 0 endFrameTF; - radioButton -edit -enable 0 chooseFullRangeRB; - radioButton -edit -enable 0 chooseCustomRangeRB; - break; - case "chooseAnimationRB": - print("Export Animation Chosen\n"); - radioButton -edit -enable 1 -select chooseFullRangeRB; - radioButton -edit -enable 1 chooseCustomRangeRB; - animationOptionsUI(); - break; - case "chooseBothRB": - print("Export Meshes and Animation Chosen\n"); - radioButton -edit -enable 1 -select chooseFullRangeRB; - radioButton -edit -enable 1 chooseCustomRangeRB; - animationOptionsUI(); - break; - case "choosePoseRB": - print("Export Pose Chosen\n"); - textField -edit -enable 1 startFrameTF; - textField -edit -enable 0 endFrameTF; - radioButton -edit -enable 0 chooseFullRangeRB; - radioButton -edit -enable 1 -select chooseCustomRangeRB; - break; - } + switch ($selectedRB) + { + case "chooseMeshRB": + print("Export Mesh Chosen\n"); + textField -edit -enable 0 startFrameTF; + textField -edit -enable 0 endFrameTF; + radioButton -edit -enable 0 chooseFullRangeRB; + radioButton -edit -enable 0 chooseCustomRangeRB; + break; + case "chooseActorRB": + print("Export Actor Chosen\n"); + textField -edit -enable 0 startFrameTF; + textField -edit -enable 0 endFrameTF; + radioButton -edit -enable 0 chooseFullRangeRB; + radioButton -edit -enable 0 chooseCustomRangeRB; + break; + case "chooseAnimationRB": + print("Export Animation Chosen\n"); + radioButton -edit -enable 1 -select chooseFullRangeRB; + radioButton -edit -enable 1 chooseCustomRangeRB; + animationOptionsUI(); + break; + case "chooseBothRB": + print("Export Meshes and Animation Chosen\n"); + radioButton -edit -enable 1 -select chooseFullRangeRB; + radioButton -edit -enable 1 chooseCustomRangeRB; + animationOptionsUI(); + break; + case "choosePoseRB": + print("Export Pose Chosen\n"); + textField -edit -enable 1 startFrameTF; + textField -edit -enable 0 endFrameTF; + radioButton -edit -enable 0 chooseFullRangeRB; + radioButton -edit -enable 1 -select chooseCustomRangeRB; + break; + } } /////////////////////////////////////////////////////////// -// Process: animationOptionsUI // -// Updates the UI when a radio button is chosen // +// Process: animationOptionsUI // +// Updates the UI when a radio button is chosen // /////////////////////////////////////////////////////////// global proc animationOptionsUI() { - string $selectedRB = `radioCollection -query -select animationOptionsRC`; + string $selectedRB = `radioCollection -query -select animationOptionsRC`; - switch ($selectedRB) - { - case "chooseFullRangeRB": - print("Animation Full Range Chosen\n"); - textField -edit -enable 0 startFrameTF; - textField -edit -enable 0 endFrameTF; - break; - case "chooseCustomRangeRB": - print("Animation Custom Range Chosen\n"); - textField -edit -enable 1 startFrameTF; - textField -edit -enable 1 endFrameTF; - break; - } + switch ($selectedRB) + { + case "chooseFullRangeRB": + print("Animation Full Range Chosen\n"); + textField -edit -enable 0 startFrameTF; + textField -edit -enable 0 endFrameTF; + break; + case "chooseCustomRangeRB": + print("Animation Custom Range Chosen\n"); + textField -edit -enable 1 startFrameTF; + textField -edit -enable 1 endFrameTF; + break; + } } /////////////////////////////////////////////////////////// -// Process: texPathOptionsUI // -// Updates the UI when a radio button is chosen // +// Process: texPathOptionsUI // +// Updates the UI when a radio button is chosen // /////////////////////////////////////////////////////////// global proc texPathOptionsUI() { - string $selectedRB = `radioCollection -query -select texPathOptionsRC`; + string $selectedRB = `radioCollection -query -select texPathOptionsRC`; - switch ($selectedRB) - { - case "chooseDefaultTexPathRB": - print("Default Texture Path Chosen\n"); - textField -edit -enable 0 customTexPathTF; - button -edit -enable 0 browseTexPathButton; - break; - case "chooseCustomTexPathRB": - print("Custom Texture Path Chosen\n"); - textField -edit -enable 1 customTexPathTF; - button -edit -enable 1 browseTexPathButton; - break; - } + switch ($selectedRB) + { + case "chooseDefaultTexPathRB": + print("Default Texture Path Chosen\n"); + textField -edit -enable 0 customTexPathTF; + button -edit -enable 0 browseTexPathButton; + break; + case "chooseCustomTexPathRB": + print("Custom Texture Path Chosen\n"); + textField -edit -enable 1 customTexPathTF; + button -edit -enable 1 browseTexPathButton; + break; + } } /////////////////////////////////////////////////////////// -// Process: outputPathOptionsUI // -// Updates the UI when a radio button is chosen // +// Process: outputPathOptionsUI // +// Updates the UI when a radio button is chosen // /////////////////////////////////////////////////////////// global proc outputPathOptionsUI() { - string $selectedRB = `radioCollection -query -select outputPathOptionsRC`; + string $selectedRB = `radioCollection -query -select outputPathOptionsRC`; - switch ($selectedRB) - { - case "chooseDefaultOutputPathRB": - print("Default File Path Chosen\n"); - textField -edit -enable 0 customOutputPathTF; - button -edit -enable 0 browseOutputPathButton; - break; - case "chooseCustomOutputPathRB": - print("Custom File Path Chosen\n"); - textField -edit -enable 1 customOutputPathTF; - button -edit -enable 1 browseOutputPathButton; - break; - } + switch ($selectedRB) + { + case "chooseDefaultOutputPathRB": + print("Default File Path Chosen\n"); + textField -edit -enable 0 customOutputPathTF; + button -edit -enable 0 browseOutputPathButton; + break; + case "chooseCustomOutputPathRB": + print("Custom File Path Chosen\n"); + textField -edit -enable 1 customOutputPathTF; + button -edit -enable 1 browseOutputPathButton; + break; + } } /////////////////////////////////////////////////////////// -// Process: outputFilenameOptionsUI // -// Updates the UI when a radio button is chosen // +// Process: outputFilenameOptionsUI // +// Updates the UI when a radio button is chosen // /////////////////////////////////////////////////////////// global proc outputFilenameOptionsUI() { - string $selectedRB = `radioCollection -query -select outputFilenameOptionsRC`; + string $selectedRB = `radioCollection -query -select outputFilenameOptionsRC`; - switch ($selectedRB) - { - case "chooseOriginalFilenameRB": - print("Default Filename Chosen\n"); - textField -edit -enable 0 customFilenameTF; - break; - case "chooseCustomFilenameRB": - print("Custom Filename Chosen\n"); - textField -edit -enable 1 customFilenameTF; - break; - } + switch ($selectedRB) + { + case "chooseOriginalFilenameRB": + print("Default Filename Chosen\n"); + textField -edit -enable 0 customFilenameTF; + button -edit -enable 0 browseFilenameButton; + break; + case "chooseCustomFilenameRB": + print("Custom Filename Chosen\n"); + textField -edit -enable 1 customFilenameTF; + button -edit -enable 1 browseFilenameButton; + break; + } +} + +/////////////////////////////////////////////////////////// +// Process: transformModeUI // +// Updates the UI when a radio button is chosen // +/////////////////////////////////////////////////////////// +global proc transformModeUI() +{ + string $selectedRB = `radioCollection -query -select transformModeRC`; + + switch ($selectedRB) + { + case "chooseTransformModelRB": + print("Save transform of objects which have model- or DCS-flag only, CLEARS local pivot, orientation, scale, and shear of the other objects (all transform will be frozen to the vertices and will be 0 when loaded into Panda3D)\n"); + break; + case "chooseTransformAllRB": + print("Save transform of all objects, PRESERVES local pivot, orientation, scale, and shear (all transform will remain when loaded into Panda3D)\n"); + break; + } } /////////////////////////////////////////////////////////////// -// Process: browseForFolder // +// Process: browseForFolder // // Browses for a directory and returns the path as a string // /////////////////////////////////////////////////////////////// global proc browseForFolder(string $destination) { fileBrowserDialog - -mode 4 - -fileCommand ( "browseForFolderCallback \"" + $destination + "\"" ) - -actionName "Pick a Folder"; + -mode 4 + -fileCommand ( "browseForFolderCallback \"" + $destination + "\"" ) + -actionName "Pick a Folder"; } global proc browseForFolderCallback(string $destination, string $result, string $type ) @@ -653,21 +779,43 @@ global proc browseForFolderCallback(string $destination, string $result, string if ( $destination == "texPath") { - textField -edit -text $result customTexPathTF; + textField -edit -text $result customTexPathTF; } else { - textField -edit -text $result customOutputPathTF; + textField -edit -text $result customOutputPathTF; } } +/////////////////////////////////////////////////////////////// +// Process: browseForFile // +// Browses for a file // +/////////////////////////////////////////////////////////////// +global proc browseForFile(string $destination) +{ + fileBrowserDialog + -mode 0 + -fileType "*.EGG" + -fileCommand ( "browseForFileCallback \"" + $destination + "\"" ) + -actionName "Pick a file"; +} + +global proc browseForFileCallback(string $destination, string $result, string $type ) +{ + $result=filePart($result); + $result=match( "[^.]*", $result ); + print ( "File name: " + $result + "\n" ); + + textField -edit -text $result customFilenameTF; +} + /////////////////////////////////////////////////////////// -// Process: filePart // -// Extracts the path portion of an absolute filepath. // -// Input: e.g. "D:/projects/default/scenes/myScene.mb" // -// Result: e.g. "myScene.mb" // -// Filepath can be delimited with // -// either slash ("/" or "\") // +// Process: filePart // +// Extracts the file portion of an absolute filepath. // +// Input: e.g. "D:/projects/default/scenes/myScene.mb" // +// Result: e.g. "myScene.mb" // +// Filepath can be delimited with // +// either slash ("/" or "\") // /////////////////////////////////////////////////////////// global proc string filePart( string $path ) { @@ -677,12 +825,12 @@ global proc string filePart( string $path ) } //////////////////////////////////////////////////////////// -// Process: pathPart // -// Extracts the path portion of an absolute filepath. // -// Input: e.g. "D:/projects/default/scenes/myScene.mb" // -// Result: e.g. "D:/projects/default/scenes" // -// Note: Requires that the filepath be delimited with // -// _forward_ slashes ("/") // +// Process: pathPart // +// Extracts the path portion of an absolute filepath. // +// Input: e.g. "D:/projects/default/scenes/myScene.mb" // +// Result: e.g. "D:/projects/default/scenes" // +// Note: Requires that the filepath be delimited with // +// _forward_ slashes ("/") // //////////////////////////////////////////////////////////// global proc string pathPart( string $path ) { @@ -692,497 +840,520 @@ global proc string pathPart( string $path ) // int $sz = size( $dir ); // if ( ( $sz > 1 ) && ( substring( $dir, $sz, $sz ) == "/" ) ) // { - // $dir = substring( $dir, 1, ($sz - 1) ); + // $dir = substring( $dir, 1, ($sz - 1) ); // } return $dir; } /////////////////////////////////////////////////////////////// -// Process: exportScene // -// exports the entire scene/selected objects // +// Process: exportScene // +// exports the entire scene/selected objects // /////////////////////////////////////////////////////////////// global proc string exportScene( string $selection ) { - print "Exporting scene...\n"; + print "Exporting scene...\n"; - string $sceneFilePath = `file -q -sceneName`; //get scene filename and path + string $sceneFilePath = `file -q -sceneName`; //get scene filename and path - if ( $sceneFilePath == "" ) - { - error "You have not yet saved this scene.\nPlease save your scene or specify a custom output directory and filename.\n"; - return "failed"; - } + if ( $sceneFilePath == "" ) + { + error "You have not yet saved this scene.\nPlease save your scene or specify a custom output directory and filename.\n"; + return "failed"; + } - string $scenePath = pathPart($sceneFilePath); - string $sceneFile = filePart($sceneFilePath); - string $fileName = `match "^[^\.]*" $sceneFile`; //cut off the file extension - string $tempScenePath = ($scenePath + $fileName + "_temp.mb"); + string $scenePath = pathPart($sceneFilePath); + string $sceneFile = filePart($sceneFilePath); + string $fileName = `match "^[^\.]*" $sceneFile`; //cut off the file extension + string $tempScenePath = ($scenePath + $fileName + "_temp.mb"); - if ( $selection == "all") - { - file -op "v=1" -typ "mayaBinary" -ea $tempScenePath; //export the whole scene - print ("Saved entire scene as temporary file: " + $fileName + "_temp.mb\n"); - } - else - { - file -op "v=1" -typ "mayaBinary" -es $tempScenePath; //export only selected objects - print ("Saved selected objects as temporary file: " + $fileName + "_temp.mb\n"); - } + if ( $selection == "all") + { + file -op "v=1" -typ "mayaBinary" -ea $tempScenePath; //export the whole scene + print ("Saved entire scene as temporary file: " + $fileName + "_temp.mb\n"); + } + else + { + file -op "v=1" -typ "mayaBinary" -es $tempScenePath; //export only selected objects + print ("Saved selected objects as temporary file: " + $fileName + "_temp.mb\n"); + } - return $tempScenePath; + return $tempScenePath; } /////////////////////////////////////////////////////////////// -// Process: argsBuilder // -// constructs the arguments to pass to maya2egg // +// Process: argsBuilder // +// constructs the arguments to pass to maya2egg // /////////////////////////////////////////////////////////////// global proc string argsBuilder() { - string $args = "maya2egg"; + string $args = "maya2egg"; - //get the version of maya and append it to the maya2egg call - string $mayaVersionLong = `getApplicationVersionAsFloat`; - string $mayaVersionShort = substituteAllString($mayaVersionLong, ".", ""); - //only strips the zeroes if the version number is less than 4 - if (`size($mayaVersionShort)`<4) - { - $mayaVersionShort = substituteAllString($mayaVersionShort, "0", ""); - } + //get the version of maya and append it to the maya2egg call + string $mayaVersionLong = `getApplicationVersionAsFloat`; + string $mayaVersionShort = substituteAllString($mayaVersionLong, ".", ""); + print ("MAYA VERSION : "+$mayaVersionShort+"\n"); + //only strips the zeroes if the version number is less than 4 + if (`size($mayaVersionShort)`<4) + { + $mayaVersionShort = substituteAllString($mayaVersionShort, "0", ""); + } - $args += $mayaVersionShort; + $args += $mayaVersionShort; - $args += " "; + $args += " "; - //check back face culling - if ( `checkBox -query -value bfaceCB` ) - { - $args += "-bface "; - } + //check back face culling + if ( `checkBox -query -value bfaceCB` ) + { + $args += "-bface "; + } - //check animation options - string $exportOptionsARGS = `radioCollection -query -select exportOptionsRC`; + //check animation options + string $exportOptionsARGS = `radioCollection -query -select exportOptionsRC`; - switch ($exportOptionsARGS) - { - case "chooseMeshRB": - $args += "-a model "; - break; - case "chooseAnimationRB": - $args += "-a chan "; + switch ($exportOptionsARGS) + { + case "chooseMeshRB": + $args += "-a none "; + break; + case "chooseActorRB": + $args += "-a model "; + break; + case "chooseAnimationRB": + $args += "-a chan "; - //set the start frames **Does not check if start frame < end frame **Does not support negative values **Does not check if start/end frame is within bounds of the scene - if ( `radioCollection -query -select animationOptionsRC` == "chooseCustomRangeRB" ) - { - string $startFrameARGS = `textField -query -text startFrameTF`; - string $endFrameARGS = `textField -query -text endFrameTF`; + //set the start frames **Does not check if start frame < end frame **Does not support negative values **Does not check if start/end frame is within bounds of the scene + if ( `radioCollection -query -select animationOptionsRC` == "chooseCustomRangeRB" ) + { + string $startFrameARGS = `textField -query -text startFrameTF`; + string $endFrameARGS = `textField -query -text endFrameTF`; - //start frame - if ( `match "[0-9]+" $startFrameARGS` == $startFrameARGS && $startFrameARGS != "") - { - $args += ( "-sf " + `match "[0-9]+" $startFrameARGS` + " " ); - } - else - { - error "Start Frame entered data is the wrong format. Should be an integer.\n"; - return "failed"; - } + //start frame + if ( `match "[0-9]+" $startFrameARGS` == $startFrameARGS && $startFrameARGS != "") + { + $args += ( "-sf " + `match "[0-9]+" $startFrameARGS` + " " ); + } + else + { + error "Start Frame entered data is the wrong format. Should be an integer.\n"; + return "failed"; + } - //end frame - if ( `match "[0-9]+" $endFrameARGS` == $endFrameARGS && $endFrameARGS != "") - { - $args += ( "-ef " + `match "[0-9]+" $endFrameARGS` + " " ); - } - else - { - error "End Frame entered data is the wrong format. Should be an integer.\n"; - return "failed"; - } - } - break; - case "chooseBothRB": - $args += "-a both "; + //end frame + if ( `match "[0-9]+" $endFrameARGS` == $endFrameARGS && $endFrameARGS != "") + { + $args += ( "-ef " + `match "[0-9]+" $endFrameARGS` + " " ); + } + else + { + error "End Frame entered data is the wrong format. Should be an integer.\n"; + return "failed"; + } + } + break; + case "chooseBothRB": + $args += "-a both "; - //set the start frames **Does not check if start frame < end frame **Does not support negative values **Does not check if start/end frame is within bounds of the scene - if ( `radioCollection -query -select animationOptionsRC` == "chooseCustomRangeRB" ) - { - string $startFrameARGS = `textField -query -text startFrameTF`; - string $endFrameARGS = `textField -query -text endFrameTF`; + //set the start frames **Does not check if start frame < end frame **Does not support negative values **Does not check if start/end frame is within bounds of the scene + if ( `radioCollection -query -select animationOptionsRC` == "chooseCustomRangeRB" ) + { + string $startFrameARGS = `textField -query -text startFrameTF`; + string $endFrameARGS = `textField -query -text endFrameTF`; - //start frame - if ( `match "[0-9]+" $startFrameARGS` == $startFrameARGS && $startFrameARGS != "") - { - $args += ( "-sf " + `match "[0-9]+" $startFrameARGS` + " " ); - } - else - { - error "Start Frame entered data is the wrong format. Should be an integer.\n"; - return "failed"; - } + //start frame + if ( `match "[0-9]+" $startFrameARGS` == $startFrameARGS && $startFrameARGS != "") + { + $args += ( "-sf " + `match "[0-9]+" $startFrameARGS` + " " ); + } + else + { + error "Start Frame entered data is the wrong format. Should be an integer.\n"; + return "failed"; + } - //end frame - if ( `match "[0-9]+" $endFrameARGS` == $endFrameARGS && $endFrameARGS != "") - { - $args += ( "-ef " + `match "[0-9]+" $endFrameARGS` + " " ); - } - else - { - error "End Frame entered data is the wrong format. Should be an integer.\n"; - return "failed"; - } - } + //end frame + if ( `match "[0-9]+" $endFrameARGS` == $endFrameARGS && $endFrameARGS != "") + { + $args += ( "-ef " + `match "[0-9]+" $endFrameARGS` + " " ); + } + else + { + error "End Frame entered data is the wrong format. Should be an integer.\n"; + return "failed"; + } + } - break; - case "choosePoseRB": - $args += "-a pose "; + break; + case "choosePoseRB": + $args += "-a pose "; - //set the start frames **Does not check if start frame < end frame **Does not support negative values **Does not check if start/end frame is within bounds of the scene - //start frame - string $startFrameARGS = `textField -query -text startFrameTF`; + //set the start frames **Does not check if start frame < end frame **Does not support negative values **Does not check if start/end frame is within bounds of the scene + //start frame + string $startFrameARGS = `textField -query -text startFrameTF`; - if ( `match "[0-9]+" $startFrameARGS` == $startFrameARGS && $startFrameARGS != "") - { - $args += ( "-sf " + `match "[0-9]+" $startFrameARGS` + " " ); - } - else - { - error "Start Frame entered data is the wrong format. Should be an integer.\n"; - return "failed"; - } - break; - } + if ( `match "[0-9]+" $startFrameARGS` == $startFrameARGS && $startFrameARGS != "") + { + $args += ( "-sf " + `match "[0-9]+" $startFrameARGS` + " " ); + } + else + { + error "Start Frame entered data is the wrong format. Should be an integer.\n"; + return "failed"; + } + break; + } - //Relative path check - if ( `radioCollection -query -select texPathOptionsRC` == "chooseCustomTexPathRB" ) - { - $args += ( "-pd " + "\"" + `textField -query -text customTexPathTF` + "\"" + " " ); - } + //Relative path check + if ( `radioCollection -query -select texPathOptionsRC` == "chooseCustomTexPathRB" ) + { + $args += ( "-pd " + "\"" + `textField -query -text customTexPathTF` + "\"" + " " ); + } - print ( "Using these arguments: " + $args + "[END]\n" ); + print ( "Using these arguments: " + $args + "[END]\n" ); - return $args; + return $args; } /////////////////////////////////////////////////////////// -// Process: export2Egg // +// Process: export2Egg // /////////////////////////////////////////////////////////// -global proc string export2Egg ( string $mbfile, string $destPath, string $destFilename, string $ARGS) +global proc string export2Egg ( string $mbfile, string $destPath, string $destFilename, string $transformMode, string $ARGS) { string $pandaEnvSetup = "set PATH=%MAYA_LOCATION%\\bin;%PATH% & "; - //Check if there is a valid maya binary file to operate on - if ( $mbfile == "" ) - { - error "Not a valid Maya Binary file."; + //Check if there is a valid maya binary file to operate on + if ( $mbfile == "" ) + { + error "Not a valid Maya Binary file."; - return "failed"; - } - //Start export process - else - { - //make the final egg path - string $eggFile = ( $destPath + $destFilename ); + return "failed"; + } + //Start export process + else + { + //make the final egg path + string $eggFile = ( $destPath + $destFilename ); + string $up=`upAxis -q -axis`; + string $unit=`optionMenu -q -value unitMenu`; - print ("Your scene will be saved as this egg file: " + $destFilename + "\n" ); + $ARGS += " -cs " + $up+"-up"; + $ARGS += " -uo " + $unit; + $ARGS += " -trans " + $transformMode; - print ("In this directory: " + $destPath + "\n" ); + print ("Your scene will be saved as this egg file: " + $destFilename + "\n" ); - //Check if overwriting is enabled - if ( `checkBox -query -value overwriteCB` ) - { - //Overwrite - print "!!Overwrite enabled!!\n"; - string $result = - system - ( + print ("In this directory: " + $destPath + "\n" ); + + //Check if overwriting is enabled + if ( `checkBox -query -value overwriteCB` ) + { + //Overwrite + print "!!Overwrite enabled!!\n"; + string $result = + system + ( $pandaEnvSetup + $ARGS - + " -o " - + "\"" + $eggFile + "\"" - + " " - + "\"" + $mbfile + "\"" - ); + + " -o " + + "\"" + $eggFile + "\"" + + " " + + "\"" + $mbfile + "\"" + ); - print ($result + "\n"); - } - else - { - //Don't overwrite - string $result = - system - ( + print ($result + "\n"); + } + else + { + //Don't overwrite + string $result = + system + ( $pandaEnvSetup + $ARGS - + "\"" + $mbfile + "\"" - + " " - + "\"" + $eggFile + "\"" - ); + + "\"" + $mbfile + "\"" + + " " + + "\"" + $eggFile + "\"" + ); - print ($result + "\n"); - } + print ($result + "\n"); + } - print ("Finished exporting (.mb -> .egg)\n"); - return $eggFile; - } + string $unit=`optionMenu -q -value unitMenu`; + print ("Finished exporting (.mb -> .egg), unit : "+$unit+"\n"); + return $eggFile; + } } /////////////////////////////////////////////////////////// -// Process: exportButton // +// Process: exportButton // /////////////////////////////////////////////////////////// global proc int exportButton () { - //We need to do before calling export2EGG/BAM/Pview: - //-Export a temporary MB - //-Get the destination path - //-Get the filename - //-Get the custom arguments + //We need to do before calling export2EGG/BAM/Pview: + //-Export a temporary MB + //-Get the destination path + //-Get the filename + //-Get the custom arguments - //Export the scene as a temporary file - string $tempMBFile = ""; - if ( `radioCollection -query -select selectionOptionsRC` == "chooseSceneRB" ) - { - $tempMBFile = exportScene( "all" ); - if ( $tempMBFile == "failed" ) - { - return 0; - } - } - else - { - $tempMBFile = exportScene( "selected" ); - if ( $tempMBFile == "failed" ) - { - return 0; - } - } + //Export the scene as a temporary file + string $tempMBFile = ""; + if ( `checkBox -query -value selectedCB` ) + { + $tempMBFile = exportScene( "selected" ); + if ( $tempMBFile == "failed" ) + { + return 0; + } + } + else + { + $tempMBFile = exportScene( "all" ); + if ( $tempMBFile == "failed" ) + { + return 0; + } + } - //get the original scene name - string $origFileName = filePart ( `file -q -sceneName` ); - $origFileName = `match "^[^\.]*" $origFileName`; //cut off the file extension + //get the original scene name + string $origFileName = filePart ( `file -q -sceneName` ); + $origFileName = `match "^[^\.]*" $origFileName`; //cut off the file extension - //-Get the destination path - //-Get the filename - //-Get the custom arguments + //-Get the destination path + //-Get the filename + //-Get the custom arguments - string $eggFile = exportPrep ( $tempMBFile, $origFileName ); + string $eggFile = exportPrep ( $tempMBFile, $origFileName ); - if ( $eggFile == "failed" ) - { - return 0; - } - else - { - return 1; - } + if ( $eggFile == "failed" ) + { + return 0; + } + else + { + return 1; + } } /////////////////////////////////////////////////////////// -// Process: send2Pview // +// Process: send2Pview // /////////////////////////////////////////////////////////// global proc send2Pview( string $file ) { - print "\nStarting pview...\n"; + print "\nStarting pview...\n"; - string $result = - system - ( + string $result = + system + ( "shell pview -l -c " - + "\"" + $file + "\"" - ); + + "\"" + $file + "\"" + ); - print ($result + "\n"); + print ($result + "\n"); } /////////////////////////////////////////////////////////// -// Process: getFile2Pview // +// Process: getFile2Pview // /////////////////////////////////////////////////////////// global proc getFile2Pview() { - string $selectedFile = `fileDialog -directoryMask "*.egg;*.bam"`; + string $selectedFile = `fileDialog -directoryMask "*.egg;*.bam"`; - string $origFileName = filePart ( $selectedFile ); - $origFileName = `match "^[^\.]*" $origFileName`; //cut off the file extension + string $origFileName = filePart ( $selectedFile ); + $origFileName = `match "^[^\.]*" $origFileName`; //cut off the file extension - if ( $selectedFile == "") - { - error ( "No file selected\n" ); - } - else - { - send2Pview ( $selectedFile ); - } + if ( $selectedFile == "") + { + error ( "No file selected\n" ); + } + else + { + send2Pview ( $selectedFile ); + } } /////////////////////////////////////////////////////////// -// Process: getFile2Bam // +// Process: getFile2Bam // /////////////////////////////////////////////////////////// global proc getFile2Bam() { - string $selectedFile = `fileDialog -directoryMask "*.egg"`; + string $selectedFile = `fileDialog -directoryMask "*.egg"`; - if ( $selectedFile == "") - { - error ( "No file selected\n" ); - } - else - { - export2Bam ( $selectedFile ); - } + if ( $selectedFile == "") + { + error ( "No file selected\n" ); + } + else + { + export2Bam ( $selectedFile ); + } } /////////////////////////////////////////////////////////// -// Process: getFile2Egg // +// Process: getFile2Egg // /////////////////////////////////////////////////////////// global proc getFile2Egg() { - string $selectedFile = `fileDialog -directoryMask "*.mb"`; + string $selectedFile = `fileDialog -directoryMask "*.mb"`; - string $fileName = filePart ( $selectedFile ); - $fileName = `match "^[^\.]*" $fileName`; //cut off the file extension + string $fileName = filePart ( $selectedFile ); + $fileName = `match "^[^\.]*" $fileName`; //cut off the file extension - if ( $selectedFile == "") - { - error ( "No file selected\n" ); - } - else - { - exportPrep ( $selectedFile, $fileName ); - } + if ( $selectedFile == "") + { + error ( "No file selected\n" ); + } + else + { + exportPrep ( $selectedFile, $fileName ); + } } /////////////////////////////////////////////////////////// -// Process: exportPrep // +// Process: exportPrep // /////////////////////////////////////////////////////////// global proc string exportPrep( string $workFile, string $fileName ) { - //Get the destination path - string $destPath = ""; - if ( `radioCollection -query -select outputPathOptionsRC` == "chooseDefaultOutputPathRB" ) - { - $destPath = pathPart($workFile); - } - else - { - if ( `textField -query -text customOutputPathTF` == "") - { - error "Output directory field is empty"; - return "failed"; - } - else - { - $destPath = `textField -query -text customOutputPathTF` + "/"; - } - } + //Get the destination path + string $destPath = ""; + if ( `radioCollection -query -select outputPathOptionsRC` == "chooseDefaultOutputPathRB" ) + { + $destPath = pathPart($workFile); + } + else + { + if ( `textField -query -text customOutputPathTF` == "") + { + error "Output directory field is empty"; + return "failed"; + } + else + { + $destPath = `textField -query -text customOutputPathTF` + "/"; + } + } - //Get the filename - string $destFilename = ""; - if ( `radioCollection -query -select outputFilenameOptionsRC` == "chooseOriginalFilenameRB" ) - { - $destFilename = $fileName + ".egg"; - } - else - { - if ( `textField -query -text customFilenameTF` == "") - { - error "Custom filename field is empty"; - return "failed"; - } - else - { - $destFilename = `textField -query -text customFilenameTF` + ".egg"; - } - } + //Get the filename + string $destFilename = ""; + if ( `radioCollection -query -select outputFilenameOptionsRC` == "chooseOriginalFilenameRB" ) + { + $destFilename = $fileName + ".egg"; + } + else + { + if ( `textField -query -text customFilenameTF` == "") + { + error "Custom filename field is empty"; + return "failed"; + } + else + { + $destFilename = `textField -query -text customFilenameTF` + ".egg"; + } + } - //-Get the custom arguments - string $ARGS = argsBuilder(); + //Get the transform mode + string $transformMode = ""; + if ( `radioCollection -query -select transformModeRC` == "chooseTransformModelRB" ) + { + $transformMode = "model"; + } + else + { + $transformMode = "all"; + } - if ( $ARGS == "failed" ) - { - return "failed"; - } + //-Get the custom arguments + string $ARGS = argsBuilder(); - //export the egg - string $eggFile = export2Egg ( $workFile, $destPath, $destFilename, $ARGS); + if ( $ARGS == "failed" ) + { + return "failed"; + } - if ( $eggFile == "failed" ) - { - return "failed"; - } + //export the egg + string $eggFile = export2Egg ( $workFile, $destPath, $destFilename, $transformMode, $ARGS); - //run pview if option is selected - if ( `checkBox -query -value pviewCB` ) - { - send2Pview ( $eggFile ); - } + if ( $eggFile == "failed" ) + { + return "failed"; + } - if ( `radioCollection -query -select outputFileOptionsRC` == "chooseEggBamRB" ) - { - export2Bam ( $eggFile ); - } + //run pview if option is selected + if ( `checkBox -query -value pviewCB` ) + { + send2Pview ( $eggFile ); + } - return $eggFile; + if ( `radioCollection -query -select outputFileOptionsRC` == "chooseEggBamRB" ) + { + export2Bam ( $eggFile ); + } + + return $eggFile; } /////////////////////////////////////////////////////////// -// Process: export2Bam // +// Process: export2Bam // /////////////////////////////////////////////////////////// global proc export2Bam ( string $eggFile ) { - //Check if there is a valid egg file to operate on - if ( $eggFile == "" ) - { - //Cannot operate without an egg first - //throw error if the scene has no associated egg file - error "Invalid egg file"; - } - //Call egg2bam - else - { - string $bamFile = ""; - string $fileName = filePart($eggFile); - string $filePath = pathPart($eggFile); + //Check if there is a valid egg file to operate on + if ( $eggFile == "" ) + { + //Cannot operate without an egg first + //throw error if the scene has no associated egg file + error "Invalid egg file"; + } + //Call egg2bam + else + { + string $bamFile = ""; + string $fileName = filePart($eggFile); + string $filePath = pathPart($eggFile); - //Use either the original fileName or a new fileName for the output - if ( `radioCollection -query -select outputFilenameOptionsRC` == "chooseCustomFilenameRB" ) - { - $bamFile = $filePath + `textField -query -text customFilenameTF` + ".bam"; - } - else - { - $bamFile = $filePath + `match "^[^\.]*" $fileName` + ".bam"; - } + //Use either the original fileName or a new fileName for the output + if ( `radioCollection -query -select outputFilenameOptionsRC` == "chooseCustomFilenameRB" ) + { + $bamFile = $filePath + `textField -query -text customFilenameTF` + ".bam"; + } + else + { + $bamFile = $filePath + `match "^[^\.]*" $fileName` + ".bam"; + } - print ("Your file is: " + $fileName + "\nFound in path: " + $filePath + "\n\n"); + print ("Your file is: " + $fileName + "\nFound in path: " + $filePath + "\n\n"); - print ("Your file will be saved as this bam file: " + $bamFile + "\n"); + print ("Your file will be saved as this bam file: " + $bamFile + "\n"); - //Check if overwriting is enabled - if ( `checkBox -query -value overwriteCB` ) - { - //Overwrite - string $result = - system - ( + //Check if overwriting is enabled + if ( `checkBox -query -value overwriteCB` ) + { + //Overwrite + string $result = + system + ( "egg2bam -o " - + "\"" + $bamFile + "\"" - + " " - + "\"" + $eggFile + "\"" - ); + + "\"" + $bamFile + "\"" + + " " + + "\"" + $eggFile + "\"" + ); - print ($result + "\n"); - } - else - { - //Don't overwrite - string $result = - system - ( + print ($result + "\n"); + } + else + { + //Don't overwrite + string $result = + system + ( "egg2bam " - + "\"" + $eggFile + "\"" - + " " - + "\"" + $bamFile + "\"" - ); + + "\"" + $eggFile + "\"" + + " " + + "\"" + $bamFile + "\"" + ); - print ($result + "\n"); - } - } + print ($result + "\n"); + } + } - print ("Finished exporting (.egg -> .bam)\n"); + string $unit=`optionMenu -q -value unitMenu`; + print ("Finished exporting (.egg -> .bam), unit : "+$unit+"\n"); }