cwisbg

# ScatterToPaintEffects_v.1

Jan 26th, 2016
415
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.42 KB | None | 0 0
  1. # ScatterToPaintEffects_v.1
  2. # Select mesh, then scatter object
  3. from pymel.core import *
  4. import maya.cmds as cmds
  5. import random as r
  6.  
  7. sl = selected()
  8. scatterObjs = sl[:-1]
  9. scatterBase = sl[-1]
  10.  
  11.  
  12. scatterBaseN = scatterBase.split("|")[-1]
  13.  
  14. # pfx Node
  15. scatCheck = ls(scatterBase+"_pfxToArray")
  16. if not scatCheck:
  17.     scat = soup().create('pfxToArray')
  18.     print scat
  19.     rename(scat, scatterBase+"_pfxToArray")
  20.     scat = ls(scatterBaseN+"_pfxToArray")  
  21.     scatterBase.worldMainMesh[0] >> scat[0].inStrokeMesh
  22. # position_arrayToDynArrays Node
  23. posArray = ls(scatterBase+"_pfx_position_arrayToDynArrays")
  24. if not posArray:
  25.     posArray = createNode("arrayToDynArrays")
  26.     rename(posArray, scatterBase+"_pfx_position_arrayToDynArrays")
  27.     posArray = ls(scatterBaseN+"_pfx_position_arrayToDynArrays")
  28.     setAttr(scatterBaseN+"_pfx_position_arrayToDynArrays"+".name","position",type="string")
  29.     scat[0].outLeafPositionPP >> posArray[0].inArray
  30.    
  31. # rotate_arrayToDynArrays Node
  32. rotateArray = ls(scatterBase+"_pfx__rotate_arrayToDynArrays")
  33. if not rotateArray:    
  34.     rotateArray = createNode("arrayToDynArrays")
  35.     rename(rotateArray, scatterBase+"_pfx__rotate_arrayToDynArrays")
  36.     rotateArray = ls(scatterBaseN+"_pfx__rotate_arrayToDynArrays")
  37.     scat[0].outLeafRotationPP >> rotateArray[0].inArray
  38.     setAttr(scatterBaseN+"_pfx__rotate_arrayToDynArrays"+".name","rotation",type="string")
  39.     rotateArray[0].outDynamicArrays >> posArray[0].inDynamicArrays    
  40.    
  41. # Instancer Node
  42. instancerNode = ls(scatterBase+"_instancerNode")
  43. if not instancerNode:
  44.     instancerNode = createNode("instancer")
  45.     rename(instancerNode, scatterBase+"_instancerNode")
  46.     instancerNode = ls(scatterBaseN+"_instancerNode")
  47.     #cmds.instancer(instancerNode[0], e=1, a=1, obj = slList)
  48.     setAttr(instancerNode[0].levelOfDetail,1)
  49.     print scatterObjs
  50.     i = 0
  51.     for s in scatterObjs:
  52.         print s, "HHEERREE"
  53.         s.matrix >> instancerNode[0].inputHierarchy[i]
  54.         i += 1
  55.     posArray[0].outDynamicArrays >> instancerNode[0].inputPoints
  56.    
  57.  
  58.  
  59. """
  60. attrCheck = hasattr(scatterBase,"Scatter_Ammount")
  61. if not attrCheck:
  62.    print "adding Scatter_Ammount to ",scatterBase
  63.    addAttr(scatterBase, longName ="Scatter_Ammount",at="short",defaultValue=2000)
  64. select(cl=1)
  65.  
  66. # Scatter Node
  67. scatCheck = ls(scatterBase+"_scatter")
  68. if not scatCheck:
  69.    scat = soup().create('scatter')
  70.    rename(scat[0], scatterBase+"_scatter")
  71.    scat = ls(scatterBase+"_scatter")  
  72.    scatterBase.getShape().worldMesh[0] >> scat[0].inGeometry
  73.    scatterBase.worldMatrix[0] >> scat[0].inWorldMatrix
  74.    setAttr(scat[0].scatterMode,1)
  75.  
  76. # Curve node thing  
  77. pointCloudToCurveThingCheck = ls(scatterBase+"_pointCloudToCurve")
  78. if not pointCloudToCurveThingCheck:    
  79.    pointCloudToCurveThing = createNode("pointCloudToCurve")
  80.    rename(pointCloudToCurveThing, scatterBase+"_pointCloudToCurve")
  81.    scat[0].outPositionPP >> pointCloudToCurveThing.inArray
  82.    
  83. # Point Node
  84. pointNode = ls(scatterBase+"_pointNode")
  85. if not pointNode:    
  86.    pointNode = createNode("point")
  87.    rename(pointNode, scatterBase+"_pointNode")
  88.    pointNode = ls(scatterBase+"_pointNode")
  89.    pointCloudToCurveThing.outCurve >> pointNode[0].inGeometry  
  90. # DisplayComponent Node
  91. displayNode = ls(scatterBase+"_displayComponents")
  92. if not displayNode:    
  93.    displayNode = createNode("displayComponents")
  94.    rename(displayNode, scatterBase+"_displayComponents")
  95.    displayNode = ls(scatterBase+"_displayComponents")
  96.    pointNode[0].outGeometry >> displayNode[0].inGeometry
  97.    pointNode[0].outRadiusPP >> displayNode[0].inDataPP
  98. # pointsOnMeshInfo Node s
  99. pointsOnMeshInfoNode1 = ls(scatterBase+"_pointsOnMeshInfo1")
  100. if not pointsOnMeshInfoNode1:      
  101.    #node 2
  102.    pointsOnMeshInfoNode1 = createNode("pointsOnMeshInfo")
  103.    rename(pointsOnMeshInfoNode1, scatterBase+"_rbg_pointsOnMeshInfo1")
  104.    pointsOnMeshInfoNode1 = ls(scatterBase+"_rbg_pointsOnMeshInfo1")
  105.    scatterBase.worldMesh[0] >> pointsOnMeshInfoNode1[0].inMesh
  106.    scat[0].outPositionPP >> pointsOnMeshInfoNode1[0].inPositionPP
  107.    pointsOnMeshInfoNode1[0].outRgbaPP >> pointNode[0].inRgbaPP
  108.    setAttr(pointsOnMeshInfoNode1[0].colors, 1)
  109.  
  110.      
  111. # position_arrayToDynArrays Node
  112. posArray = ls(scatterBase+"_position_arrayToDynArrays")
  113. if not posArray:
  114.    posArray = createNode("arrayToDynArrays")
  115.    rename(posArray, scatterBase+"_position_arrayToDynArrays")
  116.    posArray = ls(scatterBase+"_position_arrayToDynArrays")
  117.    pointNode[0].outPositionPP >> posArray[0].inArray
  118.    setAttr(scatterBase+"_position_arrayToDynArrays"+".name","position",type="string")
  119.    setAttr(pointNode[0].enablePosition,1)
  120.  
  121. # Instancer Node
  122. instancerNode = ls(scatterBase+"_instancerNode")
  123. if not instancerNode:
  124.    instancerNode = createNode("instancer")
  125.    rename(instancerNode, scatterBase+"_instancerNode")
  126.    instancerNode = ls(scatterBase+"_instancerNode")
  127.    #cmds.instancer(instancerNode[0], e=1, a=1, obj = slList)
  128.    posArray[0].outDynamicArrays >> instancerNode[0].inputPoints
  129.    i = 0
  130.    for s in scatterObjs:
  131.        print s
  132.        s.matrix >> instancerNode[0].inputHierarchy[i]
  133.        i += 1
  134. # Index_arrayToDynArrays Node
  135. objIndexArray = ls(scatterBase+"_objIndex_arrayToDynArrays")
  136. if not objIndexArray:    
  137.    objIndexArray = createNode("arrayToDynArrays")
  138.    rename(objIndexArray, scatterBase+"_objIndex_arrayToDynArrays")
  139.    objIndexArray = ls(scatterBase+"_objIndex_arrayToDynArrays")
  140.    pointNode[0].outWeightPP >> objIndexArray[0].inArray
  141.    setAttr(scatterBase+"_objIndex_arrayToDynArrays"+".name","objectIndex",type="string")  
  142.    setAttr(pointNode[0].enableWeight,1)
  143.    objIndexArray[0].outDynamicArrays >> posArray[0].inDynamicArrays
  144.    scaterLength = str(len(scatterObjs))
  145.    setAttr(pointNode[0]+".stringWeight","// POINT WEIGHT "+"\n"+"$x ="+ scaterLength +";" +"\n"+"$W=rand(0,$x);",type="string")    
  146.  
  147. # rotate_arrayToDynArrays Node
  148. rotateArray = ls(scatterBase+"_rotate_arrayToDynArrays")
  149. if not rotateArray:    
  150.    rotateArray = createNode("arrayToDynArrays")
  151.    rename(rotateArray, scatterBase+"_rotate_arrayToDynArrays")
  152.    rotateArray = ls(scatterBase+"_rotate_arrayToDynArrays")
  153.    pointNode[0].outNormalPP >> rotateArray[0].inArray
  154.    rotateArray[0].outDynamicArrays >> objIndexArray[0].inDynamicArrays
  155.    setAttr(scatterBase+"_rotate_arrayToDynArrays"+".name","rotation",type="string")  
  156.    setAttr(pointNode[0].enableNormal,1)
  157.    setAttr(pointNode[0]+".stringNormal","// POINT NORMAL (PARTICLE VELOCITY)"+"\n"+"$X=$NX;"+"\n"+"$Y=$NY+rand(360);"+"\n"+"$Z=$NZ;",type="string")
  158. # scale_arrayToDynArrays Node
  159. scaleArray = ls(scatterBase+"_scale_arrayToDynArrays")
  160. if not scaleArray:    
  161.    scaleArray = createNode("arrayToDynArrays")
  162.    rename(scaleArray, scatterBase+"_scale_arrayToDynArrays")
  163.    scaleArray = ls(scatterBase+"_scale_arrayToDynArrays")
  164.    pointNode[0].outRadiusPP >> scaleArray[0].inArray
  165.    scaleArray[0].outDynamicArrays >> rotateArray[0].inDynamicArrays
  166.    setAttr(scatterBase+"_scale_arrayToDynArrays"+".name","scale",type="string")  
  167.    setAttr(pointNode[0].enableRadius,1)
  168.    setAttr(pointNode[0]+".stringRadius","// POINT RADIUS "+"\n"+"$R= $CR;"+"\n"+"if ($CR < .2)"+"\n"+"$R = 0;"+"\n"+"if ($CR >= .2)"+"\n"+"$R = $CR+rand(.2,1.2);",type="string")
  169. select(scat)
  170. #polyColorPerVertex(scatterBase, r=1,g=1,b=1,a=1,cdo=1)
  171. #scatterBase.Scatter_Ammount >> scat[0].pointDensity
  172. """
Advertisement
Add Comment
Please, Sign In to add comment