cwisbg

ScatterToInstance_v1_Align

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