On Sun, 25 Oct 2015 3:35 AM Christopher. <[email protected]
<mailto:[email protected]>> wrote:
I added the source command, and I used the globalProc within the
script to execute the script but my question is; shouldn't the
globalproc encapsulate the entire script ?
No
The first globalProc in the script is called rotateProjection, if
I execute rotateProjection, I get the typical /Cannot find
Procedure/ error ?
Strange. Seems like the script wasn't successfully sourced.
The script is written badly. It has loose code in the global scope of
the file, at the bottom. Just that loose code should be encapsulated
in a global proc. If it is named the same as the file, Maya will
execute it automatically if you put it in the scripts location. This
would probably be bad since it launches a gui. So it needs a global
proc name that doesn't match the file name.
On Saturday, October 24, 2015 at 2:07:11 AM UTC-4, Justin Israel
wrote:
On Sat, Oct 24, 2015 at 6:35 PM Crest Christopher
<[email protected] <mailto:[email protected]>> wrote:
I hoped to get it to work.
And did my last reply help at all?
Justin Israel wrote:
On Sat, 24 Oct 2015 1:51 PM Christopher.
<[email protected] <mailto:[email protected]>>
wrote:
Safe to assume no one has the answer and I need to
put it in the trash bin ?
It's safe to assume that people have tried to help
answer your questions, and have since probably give
up on this particular thread.
Your script has code located in the global scope that
is going to run every time it is sourced. that means
if you source this script manually, it would launch a
gui. I never wrote much MEL from scratch, but I
believe this is bad practice. If I remember correctly,
if you name a global proc the same as the file name,
Maya will call it when it sources the script at
startup. Otherwise you can/should just have one or
more global procs that you want someone to call from
MEL, to launch your tool or command.
What goal do you want to achieve here? I don't know
what this file is called but it probably doesn't
matter because it assumes you will source it to get
it to launch the GUI. Look up the "source" Mel command.
Or... place this thread in the trash as you suggested,
if this still doesn't solve your issue.
Justin
On Sunday, October 18, 2015 at 6:47:29 PM UTC-4,
Christopher. wrote:
Source. I originally though the global
function was rotateProjection, until I
realized it didn't encapsulate the entire
script; unless it doesn't have to ? I suppose
if not, someone on this list will inform me,
or I hope someone will.
//Additional Variables
string $dir2d = "";
string $projName = "";
string $fileName = "";
string $placeName = "";
string $productName = "";
string $camProductName = "";
string $remapName = "";
string $multDivName = "";
string $Dir = "";
int $camSetExists = 0;
global proc rotateProjection( string
$placementNode, string $direction )
{
if($direction == "PosX") //Left
{
xform -ro 0 -90 0 $placementNode;
}
if($direction == "NegX") //Right
{
xform -ro 0 90 0 $placementNode;
}
if($direction == "PosY") //Bottom
{
xform -ro 90 0 0 $placementNode;
}
if($direction == "NegY") //Top
{
xform -ro -90 0 0 $placementNode;
}
//if($direction == "PosZ") No Case: Default
Position //Front
if($direction == "NegZ") //Back
{
xform -ro 0 180 0 $placementNode;
}
}
//Makes and Sets up Camera Node Network
global proc setupCameraNodes()
{
if(`objExists "RenBakeCam1"`)
{
//Makes sure only 1 camera bake network exists
to keep everything as clean as it can be.
$camSetExists=1;
print "Camera Nodes Already Exist \n";
}
else{
camera -name "RenBakeCam1" -centerOfInterest 5
-focalLength 35 -lensSqueezeRatio 1
-cameraScale 1 -horizontalFilmAperture 1.41732
-horizontalFilmOffset 0 -verticalFilmAperture
0.94488 -verticalFilmOffset 0 -filmFit Fill
-overscan 1 -motionBlur 0 -shutterAngle 144
-nearClipPlane 0.01 -farClipPlane 1000
-orthographic 0 -orthographicWidth 30;
objectMoveCommand; cameraMakeNode 1 "";
shadingNode -asUtility "samplerInfo" -name
"sampInfo1";
shadingNode -asUtility "vectorProduct" -name
"CamVec1";
setAttr CamVec1.operation 3; //sets op type to
Vector Matrix Product
setAttr CamVec1.normalizeOutput true; //sets
normalizeOutput to ON
//Connects to Vector Product for Object Normal
in World Space
connectAttr -f sampInfo1.normalCamera
CamVec1.input1;
connectAttr -f RenBakeCam1.matrix CamVec1.matrix;
print "Camera Node Setup Complete \n";
}
}
//Generates all nodes needed for the selected
number of textures, then links them to the
camera and output chains
global proc setupTextureNodes(int $numProjections)
{
//Sets name and number of directions
string $DirList[];
global string $PosZ_ProductNode;
global string $PosZ_RemapNode;
//variables for file attachment
global string $TopNode;
global string $BottomNode;
global string $LeftNode;
global string $RightNode;
global string $FrontNode;
global string $BackNode;
//variables for shader output network
string $colorSum = `shadingNode -asUtility
"plusMinusAverage" -name "ColorSum1"`;
string $valueSum = `shadingNode -asUtility
"plusMinusAverage" -name "ValueSum1"`;
string $remapSum = `shadingNode -asUtility
"remapValue" -name "RemapSum1"`;
string $finalColor = `shadingNode -asUtility
"multiplyDivide" -name "FinalColor1"`;
string $shaderName = `shadingNode -asShader
"blinn" -name "BlinnName"`;
sets -renderable true -noSurfaceShader true
-empty -name ($shaderName + "SG");
print $numProjections;
if($numProjections == 3)
{
//$DirList[] = {"PosZ","PosY","PosX"};
$DirList[0] = "PosZ";
$DirList[1] = "PosY";
$DirList[2] = "PosX";
print "Making 3 projections... \n";
}
if($numProjections == 6)
{
//$DirList[] =
{"PosZ","NegY","NegZ","PosY","PosX","NegX"};
$DirList[0] = "PosZ";
$DirList[1] = "NegY";
$DirList[2] = "NegZ";
$DirList[3] = "PosY";
$DirList[4] = "PosX";
$DirList[5] = "NegX";
print "Making 6 projections.... \n";
}
print $DirList;
int $plusMinusInputCounter = 1;
//Generates Shader Output chain, and calls
Camera creation chain, which may not output if
a camera chain already exists.
setupCameraNodes();
//Generates nodes for Output Chain
//variables named as a result of the operation
as more than one output network/shader can
exist in a given scene
setAttr ($finalColor + ".operation") 2; //sets
node to divide
connectAttr -f ($colorSum + ".output3D")
($finalColor + ".input1");
connectAttr -f ($valueSum + ".output1D")
($remapSum + ".inputValue");
connectAttr -f ($remapSum + ".outValue")
($finalColor + ".input2X");
connectAttr -f ($remapSum + ".outValue")
($finalColor + ".input2Y");
connectAttr -f ($remapSum + ".outValue")
($finalColor + ".input2Z");
//final color to shader node occurs at end of
script
print "Output Node Setup Complete \n";
for($Dir in $DirList){
//Sets up name variables for each direction,
$Dir taken from For Loop
$dir2d = $Dir + "_2d1";
$projName = $Dir + "_Projection1";
$fileName = $Dir + "_File1";
$placeName = $Dir + "_Placement1";
$productName = $Dir + "_Product1";
$camProductName = $Dir + "_CamProduct1";
$remapName = $Dir + "_Remap1";
$multDivName = $Dir + "_colorXRemap1";
//Creates File Projection Network
$projName = `shadingNode -asUtility
"projection" -name $projName`;
$fileName = `shadingNode -asTexture "file"
-name $fileName`;
//Notes name of file nodes for file assignment
switch($Dir)
{
case "PosZ":
//front
$FrontNode = $fileName;
break;
case "PosY":
//bottom
$BottomNode = $fileName;
break;
case "PosX":
//left
$LeftNode = $fileName;
break;
case "NegZ":
//back
$BackNode = $fileName;
break;
case "NegY":
//top
$TopNode = $fileName;
break;
case "NegX":
//right
$RightNode = $fileName;
break;
default:
print ("UNKNOWN DIRECTION, VALUE FOR CAMERA
NOT SET, FILE ASSIGNMENT WILL FAIL \n");
break;
}
$placeName = `shadingNode -asUtility
"place3dTexture" -name $placeName`;
$dir2d = `shadingNode -asUtility
"place2dTexture" -name $dir2d`;
//Links nodes together as default projection
normally does
connectAttr -f ($placeName +
".worldInverseMatrix[0]") ($projName +
".placementMatrix");
connectAttr -f ($fileName + ".outColor")
($projName + ".image");
connectAttr -f ($dir2d + ".coverage")
($fileName + ".coverage");
connectAttr -f ($dir2d + ".translateFrame")
($fileName + ".translateFrame");
connectAttr -f ($dir2d + ".rotateFrame")
($fileName + ".rotateFrame");
connectAttr -f ($dir2d + ".mirrorU")
($fileName + ".mirrorU");
connectAttr -f ($dir2d + ".mirrorV")
($fileName + ".mirrorV");
connectAttr -f ($dir2d + ".stagger")
($fileName + ".stagger");
connectAttr -f ($dir2d + ".wrapU") ($fileName
+ ".wrapU");
connectAttr -f ($dir2d + ".wrapV") ($fileName
+ ".wrapV");
connectAttr -f ($dir2d + ".repeatUV")
($fileName + ".repeatUV");
connectAttr -f ($dir2d + ".offset") ($fileName
+ ".offset");
connectAttr -f ($dir2d + ".rotateUV")
($fileName + ".rotateUV");
connectAttr -f ($dir2d + ".noiseUV")
($fileName + ".noiseUV");
connectAttr -f ($dir2d + ".vertexUvOne")
($fileName + ".vertexUvOne");
connectAttr -f ($dir2d + ".vertexUvTwo")
($fileName + ".vertexUvTwo");
connectAttr -f ($dir2d + ".vertexUvThree")
($fileName + ".vertexUvThree");
connectAttr -f ($dir2d + ".vertexCameraOne")
($fileName + ".vertexCameraOne");
connectAttr -f ($dir2d + ".outUV") ($fileName
+ ".uv");
connectAttr -f ($dir2d + ".outUvFilterSize")
($fileName + ".uvFilterSize");
///////////////
print ("Projection Node Output Complete for "
+ $Dir + " \n");
//Function Call to rotate Place3d Node to
correct location
rotateProjection($placeName , $Dir);
//creates and sets nodes for vector functions
$productName = `shadingNode -asUtility
"vectorProduct" -name $productName`;
$camProductName = `shadingNode -asUtility
"vectorProduct" -name $camProductName`;
$remapName = `shadingNode -asUtility
"remapValue" -name $remapName`;
$multDivName = `shadingNode -asUtility
"multiplyDivide" -name $multDivName`;
setAttr ($productName + ".operation") 3;
//sets to Vector Matrix Product
setAttr ($productName + ".input2Z") -1;
setAttr ($camProductName + ".operation") 1;
//sets to Dot Product
setAttr ($camProductName + ".normalizeOutput")
true; //normalizes output
setAttr ($remapName +
".value[0].value_Position") 0.244;
setAttr ($remapName +
".value[0].value_FloatValue") 0;
setAttr ($remapName +
".value[0].value_Interp") 2; //sets to smooth
interpolation
//connects camera, output, projection and
vector chains
if( $Dir == "PosZ" )
{
//Sets up primary node chain, all other chains
have a dependency on the Dir_Product
vectorProduct node of this chain
connectAttr -f ($projName + ".outColor")
($multDivName + ".input1");
connectAttr -f ($placeName + ".worldMatrix")
($productName + ".matrix");
connectAttr -f ($productName + ".output")
($camProductName + ".input1");
connectAttr -f CamVec1.output ($camProductName
+ ".input2");
connectAttr -f ($camProductName + ".outputX")
($remapName + ".inputValue");
connectAttr -f ($remapName + ".outValue")
($multDivName + ".input2X");
connectAttr -f ($remapName + ".outValue")
($multDivName + ".input2Y");
connectAttr -f ($remapName + ".outValue")
($multDivName + ".input2Z");
connectAttr -f ($multDivName + ".output")
($colorSum + ".input3D[0]");
connectAttr -f ($remapName + ".outValue")
($valueSum + ".input1D[0]");
$PosZ_ProductNode = $productName;
$PosZ_RemapNode = $remapName;
setAttr ($productName + ".input1Z") 1;
////////
print "Node Chain Complete \n";
}
else
{
//Sets up node chain for all but the first
connectAttr -f ($projName + ".outColor")
($multDivName + ".input1");
connectAttr -f ($placeName + ".worldMatrix")
($productName + ".matrix");
//ONLY TRIGGERS ON NON-FIRST RUN
connectAttr -f ($PosZ_ProductNode + ".input1")
($productName + ".input1");
connectAttr -f ($PosZ_RemapNode + ".value[0]")
($remapName + ".value[0]");
//
connectAttr -f ($productName + ".output")
($camProductName + ".input1");
connectAttr -f CamVec1.output ($camProductName
+ ".input2");
connectAttr -f ($camProductName + ".outputX")
($remapName + ".inputValue");
connectAttr -f ($remapName + ".outValue")
($multDivName + ".input2X");
connectAttr -f ($remapName + ".outValue")
($multDivName + ".input2Y");
connectAttr -f ($remapName + ".outValue")
($multDivName + ".input2Z");
connectAttr -f ($multDivName + ".output")
($colorSum + ".input3D[" +
$plusMinusInputCounter + "]");
connectAttr -f ($remapName + ".outValue")
($valueSum + ".input1D[" +
$plusMinusInputCounter + "]");
$plusMinusInputCounter =
$plusMinusInputCounter + 1;
////////
print "Node Chain Complete \n";
} //end else
} //end for
//connects into shader node
connectAttr -f ($finalColor + ".output")
($shaderName + ".color");
$file1 = `textField -query -text file1Text`;
//front
$file2 = `textField -query -text file2Text`;
//bottom
$file3 = `textField -query -text file3Text`;
//left
$file4 = `textField -query -text file4Text`;
//back
$file5 = `textField -query -text file5Text`; //top
$file6 = `textField -query -text file6Text`;
//right
//HardLink the texture links from the GUI into
the File nodes
if($numProjections == 3)
{
//$DirList[] = {"PosZ","PosY","PosX"}; Front
Bottom Left
setAttr ($FrontNode + ".fileTextureName")
-type "string" $file1;
setAttr ($BottomNode + ".fileTextureName")
-type "string" $file2;
setAttr ($LeftNode + ".fileTextureName")
-type "string" $file3;
/////////
print "file nodes set \n";
}
if($numProjections == 6)
{
//$DirList[] =
{"PosZ","NegY","NegZ","PosY","PosX","NegX"};
Front Top Back Bottom Left Right
setAttr ($FrontNode + ".fileTextureName")
-type "string" $file1;
setAttr ($BottomNode + ".fileTextureName")
-type "string" $file2;
setAttr ($LeftNode + ".fileTextureName")
-type "string" $file3;
setAttr ($BackNode + ".fileTextureName")
-type "string" $file4;
setAttr ($RightNode + ".fileTextureName")
-type "string" $file6;
setAttr ($TopNode + ".fileTextureName") -type
"string" $file5;
print "file nodes set \n";
}
} //end proc
//GUI
int $numProjections; //initializes $numProjections
if (`window -exists BlendedBoxMapGui`)
deleteUI BlendedBoxMapGui;
window -widthHeight 370 450 -title "Maya
Blended Box Map Maker" BlendedBoxMapGui;
frameLayout -width 100 -height 100 -label
"Num Projections" RadioFrame;
setParent RadioFrame;
columnLayout RadioColumn;
setParent RadioColumn;
radioCollection AllRadioButtons;
// radioButton -label "3" -changeCommand
"$numProjections = 3" -select RadioButton1;
radioButton -label "6" -changeCommand
"$numProjections = 6" -select RadioButton2;
text -label "Texture Links:";
rowColumnLayout -numberOfColumns 3
-columnAttach 1 "right" 0
-columnWidth 1 150 -columnWidth 2 250
-columnWidth 3 100;
text -label "Front";
string $file1 = `textField file1Text`;
button -label "Browse" -command "$file1 =
`fileDialog`; textField -edit -text $file1
file1Text" BrowseFile1;
text -label "Bottom";
string $file2 = `textField file2Text`;
button -label "Browse" -command "$file2 =
`fileDialog`; textField -edit -text $file2
file2Text" BrowseFile2;
text -label "Left";
string $file3 = `textField file3Text`;
button -label "Browse" -command "$file3 =
`fileDialog`; textField -edit -text $file3
file3Text" BrowseFile3;
text -label "Back";
string $file4 = `textField file4Text`;
button -label "Browse" -command "$file4 =
`fileDialog`; textField -edit -text $file4
file4Text" BrowseFile4;
text -label "Top";
string $file5 = `textField file5Text`;
button -label "Browse" -command "$file5 =
`fileDialog`; textField -edit -text $file5
file5Text" BrowseFile5;
text -label "Right";
string $file6 = `textField file6Text`;
button -label "Browse" -command "$file6 =
`fileDialog`; textField -edit -text $file6
file6Text" BrowseFile6;
button -label "Generate Shader Network"
-command "setupTextureNodes($numProjections)"
goButton;
$numProjections = 6;
showWindow BlendedBoxMapGui;
On Sunday, October 18, 2015 at 2:43:38 PM
UTC-4, Carlos Rico wrote:
source it?
*Carlos Rico Adega*
-------------------------------------
LinkedIn
<http://www.linkedin.com/pub/carlos-rico/6/58/325>
[email protected]
<mailto:[email protected]>
2015-10-18 20:20 GMT+02:00 Christopher.
<[email protected]
<mailto:[email protected]>>:
The script is located in the proper
MEL path, that I can testify;
although, there is no global function.
On Saturday, October 17, 2015 at
11:21:06 PM UTC-4, Justin Israel wrote:
Is the script in a proper Maya
scripts location?
Have you checked the file and
confirmed that it has a global
proc that can be called?
On Sun, 18 Oct 2015 4:09
PM Christopher.
<[email protected]
<mailto:[email protected]>> wrote:
From what I know, if a MEL
script doesn't have a command
to which one should use, you
can look for the global
function, and run the function
name; what if that is giving,
no procedure found and you
know it's not a paths problem ?
--
You received this message
because you are subscribed to
the Google Groups "Python
Programming for Autodesk Maya"
group.
To unsubscribe from this group
and stop receiving emails from
it, send an email to
[email protected]
<mailto:python_inside_maya%[email protected]>.
To view this discussion on the
web visit
https://groups.google.com/d/msgid/python_inside_maya/c189227e-cfc6-42ce-862b-6f3a5784c148%40googlegroups.com
<https://groups.google.com/d/msgid/python_inside_maya/c189227e-cfc6-42ce-862b-6f3a5784c148%40googlegroups.com?utm_medium=email&utm_source=footer>.
For more options, visit
https://groups.google.com/d/optout.
--
You received this message because you
are subscribed to the Google Groups
"Python Programming for Autodesk Maya"
group.
To unsubscribe from this group and
stop receiving emails from it, send an
email to
[email protected]
<mailto:python_inside_maya%[email protected]>.
To view this discussion on the web
visit
https://groups.google.com/d/msgid/python_inside_maya/cde01e8d-8cbf-45a4-b689-61641ec58eb8%40googlegroups.com
<https://groups.google.com/d/msgid/python_inside_maya/cde01e8d-8cbf-45a4-b689-61641ec58eb8%40googlegroups.com?utm_medium=email&utm_source=footer>.
For more options, visit
https://groups.google.com/d/optout.
--
You received this message because you are
subscribed to the Google Groups "Python
Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving
emails from it, send an email to
[email protected]
<mailto:python_inside_maya%[email protected]>.
To view this discussion on the web visit
https://groups.google.com/d/msgid/python_inside_maya/8796292d-a071-449b-829b-696f4ddcf241%40googlegroups.com
<https://groups.google.com/d/msgid/python_inside_maya/8796292d-a071-449b-829b-696f4ddcf241%40googlegroups.com?utm_medium=email&utm_source=footer>.
For more options, visit
https://groups.google.com/d/optout.
--
You received this message because you are subscribed
to a topic in the Google Groups "Python Programming
for Autodesk Maya" group.
To unsubscribe from this topic, visit
https://groups.google.com/d/topic/python_inside_maya/Zi9tMVXanqg/unsubscribe.
To unsubscribe from this group and all its topics,
send an email to
[email protected]
<mailto:python_inside_maya%[email protected]>.
To view this discussion on the web visit
https://groups.google.com/d/msgid/python_inside_maya/CAPGFgA0%2B_E-bKvN%2BBZdcDJPJMGVbvB3fC%3DfW98vqXy-KBxeKEQ%40mail.gmail.com
<https://groups.google.com/d/msgid/python_inside_maya/CAPGFgA0%2B_E-bKvN%2BBZdcDJPJMGVbvB3fC%3DfW98vqXy-KBxeKEQ%40mail.gmail.com?utm_medium=email&utm_source=footer>.
For more options, visit
https://groups.google.com/d/optout.
--
You received this message because you are subscribed to
the Google Groups "Python Programming for Autodesk Maya"
group.
To unsubscribe from this group and stop receiving emails
from it, send an email to
[email protected]
<mailto:python_inside_maya%[email protected]>.
To view this discussion on the web visit
https://groups.google.com/d/msgid/python_inside_maya/562B18BB.70209%40gmail.com
<https://groups.google.com/d/msgid/python_inside_maya/562B18BB.70209%40gmail.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google
Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this group and stop receiving emails from it,
send an email to [email protected]
<mailto:[email protected]>.
To view this discussion on the web visit
https://groups.google.com/d/msgid/python_inside_maya/09827b7c-2f03-4796-becb-705fba25c26a%40googlegroups.com
<https://groups.google.com/d/msgid/python_inside_maya/09827b7c-2f03-4796-becb-705fba25c26a%40googlegroups.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to a topic in the
Google Groups "Python Programming for Autodesk Maya" group.
To unsubscribe from this topic, visit
https://groups.google.com/d/topic/python_inside_maya/Zi9tMVXanqg/unsubscribe.
To unsubscribe from this group and all its topics, send an email to
[email protected]
<mailto:[email protected]>.
To view this discussion on the web visit
https://groups.google.com/d/msgid/python_inside_maya/CAPGFgA0exo7c4u33gP7zsEaLZBDe7WwS9xiP20m6H4BqfMZCAQ%40mail.gmail.com
<https://groups.google.com/d/msgid/python_inside_maya/CAPGFgA0exo7c4u33gP7zsEaLZBDe7WwS9xiP20m6H4BqfMZCAQ%40mail.gmail.com?utm_medium=email&utm_source=footer>.
For more options, visit https://groups.google.com/d/optout.