cwisbg

# ScatterToInstance_v1

Mar 12th, 2015
481
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 5.29 KB | None | 0 0
  1. # ScatterToInstance_v1
  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. # DisplayComponent Node
  38. displayNode = ls(scatterBase+"_displayComponents")
  39. if not displayNode:    
  40.     displayNode = createNode("displayComponents")
  41.     rename(displayNode, scatterBase+"_displayComponents")
  42.     displayNode = ls(scatterBase+"_displayComponents")
  43.     pointNode[0].outGeometry >> displayNode[0].inGeometry
  44.     pointNode[0].outRadiusPP >> displayNode[0].inDataPP
  45. # pointsOnMeshInfo Node s
  46. pointsOnMeshInfoNode1 = ls(scatterBase+"_pointsOnMeshInfo1")
  47. if not pointsOnMeshInfoNode1:      
  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.     scat[0].outPositionPP >> pointsOnMeshInfoNode1[0].inPositionPP
  54.     pointsOnMeshInfoNode1[0].outRgbaPP >> pointNode[0].inRgbaPP
  55.     setAttr(pointsOnMeshInfoNode1[0].colors, 1)
  56.  
  57.      
  58. # position_arrayToDynArrays Node
  59. posArray = ls(scatterBase+"_position_arrayToDynArrays")
  60. if not posArray:
  61.     posArray = createNode("arrayToDynArrays")
  62.     rename(posArray, scatterBase+"_position_arrayToDynArrays")
  63.     posArray = ls(scatterBase+"_position_arrayToDynArrays")
  64.     pointNode[0].outPositionPP >> posArray[0].inArray
  65.     setAttr(scatterBase+"_position_arrayToDynArrays"+".name","position",type="string")
  66.     setAttr(pointNode[0].enablePosition,1)
  67.  
  68. # Instancer Node
  69. instancerNode = ls(scatterBase+"_instancerNode")
  70. if not instancerNode:
  71.     instancerNode = createNode("instancer")
  72.     rename(instancerNode, scatterBase+"_instancerNode")
  73.     instancerNode = ls(scatterBase+"_instancerNode")
  74.     #cmds.instancer(instancerNode[0], e=1, a=1, obj = slList)
  75.     posArray[0].outDynamicArrays >> instancerNode[0].inputPoints
  76.     i = 0
  77.     for s in scatterObjs:
  78.         print s
  79.         s.matrix >> instancerNode[0].inputHierarchy[i]
  80.         i += 1
  81. # Index_arrayToDynArrays Node
  82. objIndexArray = ls(scatterBase+"_objIndex_arrayToDynArrays")
  83. if not objIndexArray:    
  84.     objIndexArray = createNode("arrayToDynArrays")
  85.     rename(objIndexArray, scatterBase+"_objIndex_arrayToDynArrays")
  86.     objIndexArray = ls(scatterBase+"_objIndex_arrayToDynArrays")
  87.     pointNode[0].outWeightPP >> objIndexArray[0].inArray
  88.     setAttr(scatterBase+"_objIndex_arrayToDynArrays"+".name","objectIndex",type="string")  
  89.     setAttr(pointNode[0].enableWeight,1)
  90.     objIndexArray[0].outDynamicArrays >> posArray[0].inDynamicArrays
  91.     scaterLength = str(len(scatterObjs))
  92.     setAttr(pointNode[0]+".stringWeight","// POINT WEIGHT "+"\n"+"$x ="+ scaterLength +";" +"\n"+"$W=rand(0,$x);",type="string")    
  93.  
  94. # rotate_arrayToDynArrays Node
  95. rotateArray = ls(scatterBase+"_rotate_arrayToDynArrays")
  96. if not rotateArray:    
  97.     rotateArray = createNode("arrayToDynArrays")
  98.     rename(rotateArray, scatterBase+"_rotate_arrayToDynArrays")
  99.     rotateArray = ls(scatterBase+"_rotate_arrayToDynArrays")
  100.     pointNode[0].outNormalPP >> rotateArray[0].inArray
  101.     rotateArray[0].outDynamicArrays >> objIndexArray[0].inDynamicArrays
  102.     setAttr(scatterBase+"_rotate_arrayToDynArrays"+".name","rotation",type="string")  
  103.     setAttr(pointNode[0].enableNormal,1)
  104.     setAttr(pointNode[0]+".stringNormal","// POINT NORMAL (PARTICLE VELOCITY)"+"\n"+"$X=$NX;"+"\n"+"$Y=$NY+rand(360);"+"\n"+"$Z=$NZ;",type="string")
  105. # scale_arrayToDynArrays Node
  106. scaleArray = ls(scatterBase+"_scale_arrayToDynArrays")
  107. if not scaleArray:    
  108.     scaleArray = createNode("arrayToDynArrays")
  109.     rename(scaleArray, scatterBase+"_scale_arrayToDynArrays")
  110.     scaleArray = ls(scatterBase+"_scale_arrayToDynArrays")
  111.     pointNode[0].outRadiusPP >> scaleArray[0].inArray
  112.     scaleArray[0].outDynamicArrays >> rotateArray[0].inDynamicArrays
  113.     setAttr(scatterBase+"_scale_arrayToDynArrays"+".name","scale",type="string")  
  114.     setAttr(pointNode[0].enableRadius,1)
  115.     setAttr(pointNode[0]+".stringRadius","// POINT RADIUS "+"\n"+"$R= $CR;"+"\n"+"if ($CR <= .2)"+"\n"+"$R = 0;"+"\n"+"if ($CR >= 1)"+"\n"+"$R = rand(.2,1.2);",type="string")
  116. select(scat)
  117. polyColorPerVertex(scatterBase, r=1,g=1,b=1,a=1,cdo=1)
Advertisement
Add Comment
Please, Sign In to add comment