1363 lines
56 KiB
Text
1363 lines
56 KiB
Text
|
///////////////////////////////////////////////////////////////////////////////////
|
|||
|
// 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. //
|
|||
|
///////////////////////////////////////////////////////////////////////////////////
|
|||
|
//
|
|||
|
// 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 PandaExporter2` )
|
|||
|
deleteUI -window PandaExporter2;
|
|||
|
|
|||
|
string $unit=`currentUnit -q -linear`;
|
|||
|
string $unitFull=`currentUnit -q -linear -fullName`;
|
|||
|
|
|||
|
// Window is locked for image dimensions: 280<38>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
|
|||
|
|
|||
|
-ap convertUnitText "top" 0 165
|
|||
|
-ap convertUnitText "left" 0 10
|
|||
|
-ap convertUnitText "right" 0 460
|
|||
|
|
|||
|
-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
|
|||
|
|
|||
|
|
|||
|
/* textfields */
|
|||
|
-ap customTexPathTF "top" 0 298
|
|||
|
-ap customTexPathTF "left" 0 10
|
|||
|
-ap customTexPathTF "right" 0 480
|
|||
|
|
|||
|
-ap customOutputPathTF "top" 0 396
|
|||
|
-ap customOutputPathTF "left" 0 10
|
|||
|
-ap customOutputPathTF "right" 0 480
|
|||
|
|
|||
|
-ap customFilenameTF "top" 0 480
|
|||
|
-ap customFilenameTF "left" 0 10
|
|||
|
-ap customFilenameTF "right" 0 284
|
|||
|
|
|||
|
|
|||
|
-ap unitMenu "top" 0 160
|
|||
|
-ap unitMenu "left" 0 460
|
|||
|
|
|||
|
|
|||
|
/* 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
|
|||
|
|
|||
|
-ap rightFrame "top" 0 20
|
|||
|
-ap rightFrame "bottom" 0 158
|
|||
|
-ap rightFrame "left" 0 334
|
|||
|
-ap rightFrame "right" 0 574
|
|||
|
|
|||
|
-ap extraToolsFrame "top" 0 425
|
|||
|
-ap extraToolsFrame "bottom" 0 542
|
|||
|
-ap extraToolsFrame "left" 0 335
|
|||
|
-ap extraToolsFrame "right" 0 574
|
|||
|
|
|||
|
-ap exportButtonFrame "top" 0 542
|
|||
|
-ap exportButtonFrame "bottom" 0 573
|
|||
|
-ap exportButtonFrame "left" 0 2
|
|||
|
-ap exportButtonFrame "right" 0 574
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/* checkboxes */
|
|||
|
-ap selectedCB "top" 0 82
|
|||
|
-ap selectedCB "left" 0 12
|
|||
|
|
|||
|
-ap bfaceCB "top" 0 101
|
|||
|
-ap bfaceCB "left" 0 12
|
|||
|
|
|||
|
-ap overwriteCB "top" 0 120
|
|||
|
-ap overwriteCB "left" 0 12
|
|||
|
|
|||
|
-ap pviewCB "top" 0 139
|
|||
|
-ap pviewCB "left" 0 12
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/* exportOptionsRC */
|
|||
|
-ap chooseMeshRB "top" 0 21
|
|||
|
-ap chooseMeshRB "left" 0 170
|
|||
|
|
|||
|
-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
|
|||
|
|
|||
|
-ap choosePoseRB "top" 0 59
|
|||
|
-ap choosePoseRB "left" 0 170
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/* animationOptionsRC */
|
|||
|
-ap chooseFullRangeRB "top" 0 40
|
|||
|
-ap chooseFullRangeRB "left" 0 346
|
|||
|
|
|||
|
-ap chooseCustomRangeRB "top" 0 59
|
|||
|
-ap chooseCustomRangeRB "left" 0 346
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/* 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
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/* texPathOptionsRC */
|
|||
|
-ap chooseDefaultTexPathRB "top" 0 244
|
|||
|
-ap chooseDefaultTexPathRB "left" 0 10
|
|||
|
|
|||
|
-ap chooseCustomTexPathRB "top" 0 264
|
|||
|
-ap chooseCustomTexPathRB "left" 0 10
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/* outputPathOptionsRC */
|
|||
|
-ap chooseDefaultOutputPathRB "top" 0 342
|
|||
|
-ap chooseDefaultOutputPathRB "left" 0 10
|
|||
|
|
|||
|
-ap chooseCustomOutputPathRB "top" 0 362
|
|||
|
-ap chooseCustomOutputPathRB "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
|
|||
|
|
|||
|
-ap chooseTransformModelRB "top" 0 525
|
|||
|
-ap chooseTransformModelRB "left" 0 120
|
|||
|
|
|||
|
|
|||
|
/* browseTexPathButton */
|
|||
|
-ap browseTexPathButton "top" 0 298
|
|||
|
-ap browseTexPathButton "left" 0 485
|
|||
|
-ap browseTexPathButton "right" 0 575
|
|||
|
|
|||
|
|
|||
|
/* browseOutputPathButton */
|
|||
|
-ap browseOutputPathButton "top" 0 396
|
|||
|
-ap browseOutputPathButton "left" 0 485
|
|||
|
-ap browseOutputPathButton "right" 0 575
|
|||
|
|
|||
|
|
|||
|
/* browseFilenameButton */
|
|||
|
-ap browseFilenameButton "top" 0 480
|
|||
|
-ap browseFilenameButton "left" 0 285
|
|||
|
-ap browseFilenameButton "right" 0 330
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/* 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
|
|||
|
|
|||
|
-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
|
|||
|
|
|||
|
|
|||
|
|
|||
|
/* exportButton */
|
|||
|
-ap exportButton "top" 0 545
|
|||
|
-ap exportButton "bottom" 0 570
|
|||
|
-ap exportButton "left" 0 8
|
|||
|
-ap exportButton "right" 0 565
|
|||
|
|
|||
|
|
|||
|
mainForm; //End of layout
|
|||
|
|
|||
|
// defining the current unit value
|
|||
|
optionMenu -edit -value $unit unitMenu;
|
|||
|
|
|||
|
showWindow PandaExporter2;
|
|||
|
}
|
|||
|
|
|||
|
|
|||
|
//Automatically start the tool
|
|||
|
pandaExporterUI();
|
|||
|
|
|||
|
///////////////////////////////////////////////////////////
|
|||
|
// Process: openBrowser //
|
|||
|
// Opens the default browser at the panda3d url //
|
|||
|
///////////////////////////////////////////////////////////
|
|||
|
global proc openBrowser()
|
|||
|
{
|
|||
|
print "\nGoing to www.panda3d.org...\n";
|
|||
|
|
|||
|
launch -webPage "www.panda3d.org";
|
|||
|
}
|
|||
|
|
|||
|
///////////////////////////////////////////////////////////
|
|||
|
// Process: exportOptionsUI //
|
|||
|
// Updates the UI when a radio button is chosen //
|
|||
|
///////////////////////////////////////////////////////////
|
|||
|
global proc exportOptionsUI()
|
|||
|
{
|
|||
|
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 "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 //
|
|||
|
///////////////////////////////////////////////////////////
|
|||
|
global proc animationOptionsUI()
|
|||
|
{
|
|||
|
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;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
///////////////////////////////////////////////////////////
|
|||
|
// Process: texPathOptionsUI //
|
|||
|
// Updates the UI when a radio button is chosen //
|
|||
|
///////////////////////////////////////////////////////////
|
|||
|
global proc texPathOptionsUI()
|
|||
|
{
|
|||
|
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;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
///////////////////////////////////////////////////////////
|
|||
|
// Process: outputPathOptionsUI //
|
|||
|
// Updates the UI when a radio button is chosen //
|
|||
|
///////////////////////////////////////////////////////////
|
|||
|
global proc outputPathOptionsUI()
|
|||
|
{
|
|||
|
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;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
///////////////////////////////////////////////////////////
|
|||
|
// Process: outputFilenameOptionsUI //
|
|||
|
// Updates the UI when a radio button is chosen //
|
|||
|
///////////////////////////////////////////////////////////
|
|||
|
global proc outputFilenameOptionsUI()
|
|||
|
{
|
|||
|
string $selectedRB = `radioCollection -query -select outputFilenameOptionsRC`;
|
|||
|
|
|||
|
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 //
|
|||
|
// 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";
|
|||
|
}
|
|||
|
|
|||
|
global proc browseForFolderCallback(string $destination, string $result, string $type )
|
|||
|
{
|
|||
|
// Do whatever you need to with the $result
|
|||
|
print ( "Folder selection: " + $result + "\n" );
|
|||
|
|
|||
|
if ( $destination == "texPath")
|
|||
|
{
|
|||
|
textField -edit -text $result customTexPathTF;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
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 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 )
|
|||
|
{
|
|||
|
string $filePart = match( "[^/\\]*$", $path );
|
|||
|
|
|||
|
return $filePart;
|
|||
|
}
|
|||
|
|
|||
|
////////////////////////////////////////////////////////////
|
|||
|
// 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 )
|
|||
|
{
|
|||
|
string $dir = match( "^.*/", $path );
|
|||
|
|
|||
|
// Strip off trailing '/'
|
|||
|
// int $sz = size( $dir );
|
|||
|
// if ( ( $sz > 1 ) && ( substring( $dir, $sz, $sz ) == "/" ) )
|
|||
|
// {
|
|||
|
// $dir = substring( $dir, 1, ($sz - 1) );
|
|||
|
// }
|
|||
|
return $dir;
|
|||
|
}
|
|||
|
|
|||
|
///////////////////////////////////////////////////////////////
|
|||
|
// Process: exportScene //
|
|||
|
// exports the entire scene/selected objects //
|
|||
|
///////////////////////////////////////////////////////////////
|
|||
|
global proc string exportScene( string $selection )
|
|||
|
{
|
|||
|
print "Exporting scene...\n";
|
|||
|
|
|||
|
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";
|
|||
|
}
|
|||
|
|
|||
|
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");
|
|||
|
}
|
|||
|
|
|||
|
return $tempScenePath;
|
|||
|
}
|
|||
|
|
|||
|
///////////////////////////////////////////////////////////////
|
|||
|
// Process: argsBuilder //
|
|||
|
// constructs the arguments to pass to maya2egg //
|
|||
|
///////////////////////////////////////////////////////////////
|
|||
|
global proc string argsBuilder()
|
|||
|
{
|
|||
|
string $args = "maya2egg";
|
|||
|
|
|||
|
//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 += " ";
|
|||
|
|
|||
|
// We always want polygons, never nurbs.
|
|||
|
$args += "-p ";
|
|||
|
|
|||
|
//check back face culling
|
|||
|
if ( `checkBox -query -value bfaceCB` )
|
|||
|
{
|
|||
|
$args += "-bface ";
|
|||
|
}
|
|||
|
|
|||
|
//check animation options
|
|||
|
string $exportOptionsARGS = `radioCollection -query -select exportOptionsRC`;
|
|||
|
|
|||
|
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`;
|
|||
|
|
|||
|
//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 ";
|
|||
|
|
|||
|
//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";
|
|||
|
}
|
|||
|
|
|||
|
//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 ";
|
|||
|
|
|||
|
//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;
|
|||
|
}
|
|||
|
|
|||
|
//Relative path check
|
|||
|
if ( `radioCollection -query -select texPathOptionsRC` == "chooseCustomTexPathRB" )
|
|||
|
{
|
|||
|
$args += ( "-pd " + "\"" + `textField -query -text customTexPathTF` + "\"" + " " );
|
|||
|
}
|
|||
|
|
|||
|
print ( "Using these arguments: " + $args + "[END]\n" );
|
|||
|
|
|||
|
return $args;
|
|||
|
}
|
|||
|
|
|||
|
///////////////////////////////////////////////////////////
|
|||
|
// Process: export2Egg //
|
|||
|
///////////////////////////////////////////////////////////
|
|||
|
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.";
|
|||
|
|
|||
|
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`;
|
|||
|
|
|||
|
$ARGS += " -cs " + $up+"-up";
|
|||
|
$ARGS += " -uo " + $unit;
|
|||
|
$ARGS += " -trans " + $transformMode;
|
|||
|
|
|||
|
print ("Your scene will be saved as this egg file: " + $destFilename + "\n" );
|
|||
|
|
|||
|
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 + "\""
|
|||
|
);
|
|||
|
|
|||
|
print ($result + "\n");
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
//Don't overwrite
|
|||
|
string $result =
|
|||
|
system
|
|||
|
(
|
|||
|
$pandaEnvSetup + $ARGS
|
|||
|
+ "\"" + $mbfile + "\""
|
|||
|
+ " "
|
|||
|
+ "\"" + $eggFile + "\""
|
|||
|
);
|
|||
|
|
|||
|
print ($result + "\n");
|
|||
|
}
|
|||
|
|
|||
|
string $unit=`optionMenu -q -value unitMenu`;
|
|||
|
print ("Finished exporting (.mb -> .egg), unit : "+$unit+"\n");
|
|||
|
return $eggFile;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
///////////////////////////////////////////////////////////
|
|||
|
// 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
|
|||
|
|
|||
|
//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 destination path
|
|||
|
//-Get the filename
|
|||
|
//-Get the custom arguments
|
|||
|
|
|||
|
string $eggFile = exportPrep ( $tempMBFile, $origFileName );
|
|||
|
|
|||
|
if ( $eggFile == "failed" )
|
|||
|
{
|
|||
|
return 0;
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
return 1;
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
///////////////////////////////////////////////////////////
|
|||
|
// Process: send2Pview //
|
|||
|
///////////////////////////////////////////////////////////
|
|||
|
global proc send2Pview( string $file )
|
|||
|
{
|
|||
|
print "\nStarting pview...\n";
|
|||
|
|
|||
|
string $result =
|
|||
|
system
|
|||
|
(
|
|||
|
"shell pview -l -c "
|
|||
|
+ "\"" + $file + "\""
|
|||
|
);
|
|||
|
|
|||
|
print ($result + "\n");
|
|||
|
}
|
|||
|
|
|||
|
///////////////////////////////////////////////////////////
|
|||
|
// Process: getFile2Pview //
|
|||
|
///////////////////////////////////////////////////////////
|
|||
|
global proc getFile2Pview()
|
|||
|
{
|
|||
|
string $selectedFile = `fileDialog -directoryMask "*.egg;*.bam"`;
|
|||
|
|
|||
|
string $origFileName = filePart ( $selectedFile );
|
|||
|
$origFileName = `match "^[^\.]*" $origFileName`; //cut off the file extension
|
|||
|
|
|||
|
if ( $selectedFile == "")
|
|||
|
{
|
|||
|
error ( "No file selected\n" );
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
send2Pview ( $selectedFile );
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
///////////////////////////////////////////////////////////
|
|||
|
// Process: getFile2Bam //
|
|||
|
///////////////////////////////////////////////////////////
|
|||
|
global proc getFile2Bam()
|
|||
|
{
|
|||
|
string $selectedFile = `fileDialog -directoryMask "*.egg"`;
|
|||
|
|
|||
|
if ( $selectedFile == "")
|
|||
|
{
|
|||
|
error ( "No file selected\n" );
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
export2Bam ( $selectedFile );
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
///////////////////////////////////////////////////////////
|
|||
|
// Process: getFile2Egg //
|
|||
|
///////////////////////////////////////////////////////////
|
|||
|
global proc getFile2Egg()
|
|||
|
{
|
|||
|
string $selectedFile = `fileDialog -directoryMask "*.mb"`;
|
|||
|
|
|||
|
string $fileName = filePart ( $selectedFile );
|
|||
|
$fileName = `match "^[^\.]*" $fileName`; //cut off the file extension
|
|||
|
|
|||
|
if ( $selectedFile == "")
|
|||
|
{
|
|||
|
error ( "No file selected\n" );
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
exportPrep ( $selectedFile, $fileName );
|
|||
|
}
|
|||
|
}
|
|||
|
///////////////////////////////////////////////////////////
|
|||
|
// 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 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 transform mode
|
|||
|
string $transformMode = "";
|
|||
|
if ( `radioCollection -query -select transformModeRC` == "chooseTransformModelRB" )
|
|||
|
{
|
|||
|
$transformMode = "model";
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
$transformMode = "all";
|
|||
|
}
|
|||
|
|
|||
|
//-Get the custom arguments
|
|||
|
string $ARGS = argsBuilder();
|
|||
|
|
|||
|
if ( $ARGS == "failed" )
|
|||
|
{
|
|||
|
return "failed";
|
|||
|
}
|
|||
|
|
|||
|
//export the egg
|
|||
|
string $eggFile = export2Egg ( $workFile, $destPath, $destFilename, $transformMode, $ARGS);
|
|||
|
|
|||
|
if ( $eggFile == "failed" )
|
|||
|
{
|
|||
|
return "failed";
|
|||
|
}
|
|||
|
|
|||
|
//run pview if option is selected
|
|||
|
if ( `checkBox -query -value pviewCB` )
|
|||
|
{
|
|||
|
send2Pview ( $eggFile );
|
|||
|
}
|
|||
|
|
|||
|
if ( `radioCollection -query -select outputFileOptionsRC` == "chooseEggBamRB" )
|
|||
|
{
|
|||
|
export2Bam ( $eggFile );
|
|||
|
}
|
|||
|
|
|||
|
return $eggFile;
|
|||
|
}
|
|||
|
|
|||
|
///////////////////////////////////////////////////////////
|
|||
|
// 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);
|
|||
|
|
|||
|
//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 will be saved as this bam file: " + $bamFile + "\n");
|
|||
|
|
|||
|
//Check if overwriting is enabled
|
|||
|
if ( `checkBox -query -value overwriteCB` )
|
|||
|
{
|
|||
|
//Overwrite
|
|||
|
string $result =
|
|||
|
system
|
|||
|
(
|
|||
|
"egg2bam -o "
|
|||
|
+ "\"" + $bamFile + "\""
|
|||
|
+ " "
|
|||
|
+ "\"" + $eggFile + "\""
|
|||
|
);
|
|||
|
|
|||
|
print ($result + "\n");
|
|||
|
}
|
|||
|
else
|
|||
|
{
|
|||
|
//Don't overwrite
|
|||
|
string $result =
|
|||
|
system
|
|||
|
(
|
|||
|
"egg2bam "
|
|||
|
+ "\"" + $eggFile + "\""
|
|||
|
+ " "
|
|||
|
+ "\"" + $bamFile + "\""
|
|||
|
);
|
|||
|
|
|||
|
print ($result + "\n");
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
string $unit=`optionMenu -q -value unitMenu`;
|
|||
|
print ("Finished exporting (.egg -> .bam), unit : "+$unit+"\n");
|
|||
|
}
|