// // // Written by Menashe Morobuse // June 2008 Copyright by Menashe Morobuse // source up_createRefPlanes.mel ; up_createRefPlanesUI; // Version 0.0.1 // // UI proc global proc up_createRefPlanesUI() { // if the window already exists delete it so it can // be recreated. if (`window -exists up_createRefPlanesUI`) deleteUI up_createRefPlanesUI; // we first declare a window. string $window = `window -title "Reference Creator" -w 500 -h 120 up_createRefPlanesUI`; // a column layout to house the controls. columnLayout -w 500 -h 120; textFieldButtonGrp -label "Front" -text "" -bc "up_changeValue frontBtn" -buttonLabel ">>" frontBtn; textFieldButtonGrp -label "Side" -text "" -bc "up_changeValue sideBtn" -buttonLabel ">>" sideBtn; checkBox -label "Import to project" -v 1 importChbx; button -label "Create Reference" -c "up_createRefPlanes; deleteUI up_createRefPlanesUI;" -w 490 -h 30 -align "center" actionBtn; window -e -wh 500 120 $window; showWindow; } // change value of the text field UI proc global proc up_changeValue (string $type) { string $file = `fileDialog`; textFieldButtonGrp -e -text $file $type; } // copy texture, works only on windows global proc string up_copyTex (string $path) { string $basename = basename( $path, "" ); string $project = `workspace -q -act`; string $destWin = $project + "/sourceimages/" + $basename; string $srcWin = $path; sysFile -copy $destWin $srcWin; return $destWin; } // the actual proc for the whole thing... global proc up_createRefPlanes () { // create the main items as prep for the image planes setup if (!`objExists "referenceLAY"` ) { createDisplayLayer -name "referenceLAY" -number 1 -empty; setAttr referenceLAY.displayType 2; } if (!`objExists "referenceGRP"`) { group -n "referenceGRP" -em; } // for front and side... do the following... string $sides[] = {"front", "side"}; float $sizeOfImage[]; for ($side in $sides) { string $fileNames = `textFieldButtonGrp -q -text ($side + "Btn")`; if (($fileNames != "") && (! `objExists ($side + "ReferencePLN")`)) { shadingNode -n ($side + "SHD") -asShader lambert; shadingNode -n ($side + "TEX") -asTexture file; shadingNode -n ($side + "P2DT") -asUtility place2dTexture; // connect from place2dtex to texture connectAttr -f ($side + "P2DT.outUV") ($side + "TEX.uvCoord"); connectAttr -f ($side + "P2DT.outUvFilterSize") ($side + "TEX.uvFilterSize"); connectAttr -f ($side + "P2DT.coverage") ($side + "TEX.coverage"); connectAttr -f ($side + "P2DT.translateFrame") ($side + "TEX.translateFrame"); connectAttr -f ($side + "P2DT.rotateFrame") ($side + "TEX.rotateFrame"); connectAttr -f ($side + "P2DT.mirrorU") ($side + "TEX.mirrorU"); connectAttr -f ($side + "P2DT.mirrorV") ($side + "TEX.mirrorV"); connectAttr -f ($side + "P2DT.stagger") ($side + "TEX.stagger"); connectAttr -f ($side + "P2DT.wrapU") ($side + "TEX.wrapU"); connectAttr -f ($side + "P2DT.wrapV") ($side + "TEX.wrapV"); connectAttr -f ($side + "P2DT.repeatUV") ($side + "TEX.repeatUV"); connectAttr -f ($side + "P2DT.vertexUvOne") ($side + "TEX.vertexUvOne"); connectAttr -f ($side + "P2DT.vertexUvTwo") ($side + "TEX.vertexUvTwo"); connectAttr -f ($side + "P2DT.vertexUvThree") ($side + "TEX.vertexUvThree"); connectAttr -f ($side + "P2DT.vertexCameraOne") ($side + "TEX.vertexCameraOne"); connectAttr -f ($side + "P2DT.noiseUV") ($side + "TEX.noiseUV"); connectAttr -f ($side + "P2DT.offset") ($side + "TEX.offset"); connectAttr -f ($side + "P2DT.rotateUV") ($side + "TEX.rotateUV"); // connect from texture to shader connectAttr -force ($side + "TEX.outColor") ($side + "SHD.color"); // if user wants to copy the file to current project than string $newName; if (`checkBox -q -v importChbx` == 1) { $newName = `up_copyTex ($fileNames)`; } else { $newName = $fileNames; } // sets the path to the image path setAttr -type "string" ($side + "TEX.fileTextureName") $newName; // get size of image $sizeOfImage = `getAttr ($side + "TEX.outSize")`; // creates new plane to map on. nurbsPlane -n ($side + "ReferencePLN") -p 0 0 0 -ax 0 1 0 -w 1 -lr 1 -d 3 -u 1 -v 1 -ch 0; scale ($sizeOfImage[0]/10) 1 ($sizeOfImage[1]/10); select -cl; // createNode -n ($side + "SHDSG") shadingEngine; // connectAttr -f ($side + "SHD.outColor") ($side + "SHDSG.surfaceColor"); defaultNavigation -source ($side + "SHD") -destination ($side + "ReferencePLNShape.instObjGroups[0]") -connectToExisting; setAttr ($side + "ReferencePLNShape.doubleSided") 0; setAttr ($side + "ReferencePLNShape.primaryVisibility") 0; setAttr ($side + "ReferencePLNShape.receiveShadows") 0; setAttr ($side + "ReferencePLNShape.castsShadows") 0; select ($side + "ReferencePLN"); editDisplayLayerMembers referenceLAY `ls -selection`; parent ($side + "ReferencePLN") "referenceGRP"; if ($side == "side") { rotate 90 90 0 ($side + "ReferencePLN"); makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 ($side + "ReferencePLN"); delete -ch; move (-($sizeOfImage[0]/20)) ($sizeOfImage[1]/20) 0 ($side + "ReferencePLN"); } else if ($side == "front") { rotate 90 0 0 ($side + "ReferencePLN"); makeIdentity -apply true -t 1 -r 1 -s 1 -n 0 ($side + "ReferencePLN"); delete -ch; move 0 ($sizeOfImage[1]/20) (-($sizeOfImage[0]/20)) ($side + "ReferencePLN"); } select -cl; } } }