Random Instance Rotation

  • November 2019
  • PDF

This document was uploaded by user and they confirmed that they have the permission to share it. If you are author or own the copyright of this book, please report to us by using this DMCA report form. Report DMCA


Overview

Download & View Random Instance Rotation as PDF for free.

More details

  • Words: 313
  • Pages: 2
// usage: // 0. source this code // 1. first select the particle object // 2. then select the instancer node (not the instanced geometry) // 3. run km_randominstancerotation //============================================================================ global proc km_randominstancerotation() { //get selected particles string $particleobject[] = `ls -sl`; string $particleshape[] = `getshapes $particleobject[0]`; //get instancer string $instancer = $particleobject[1]; //add attributes needed for expression addattr -ln rotmax -at double $particleshape; setattr -e -keyable true ($particleshape[0]+ ".rotmax"); addattr -ln axispp -dt doublearray $particleshape; setattr -e -keyable true ($particleshape[0]+ ".axispp"); addattr -ln rotpp -dt vectorarray $particleshape; setattr -e -keyable true ($particleshape[0]+ ".rotpp"); addattr -ln rotmaxrandpp -dt doublearray $particleshape; setattr -e -keyable true ($particleshape[0]+ ".rotmaxrandpp"); //================================================== // creation expression string $expressionc; $expressionc = ($particleshape[0] + ".axispp = floor(rand(3)); \n"); $expressionc += ($particleshape[0]+ ".rotpp = <>;\n"); $expressionc += ($particleshape[0]+ ".rotmaxrandpp = rand( 0 - " + $particleshape[0]+ ".rotmax," + $particleshape[0]+ ".rotmax)/1000;\n"); dynexpression -s $expressionc -c $particleshape[0]; //================================================== // runtime expression string $expressionr; $expressionr = ("if (" + $particleshape[0]+ ".axispp == 0)\n"); $expressionr += ($particleshape[0] + ".rotpp = " +$particleshape[0]+ ".rotpp + <<" + $particleshape[0] + ".rotmaxrandpp,0,0>>;\n"); $expressionr += ("else if (" + $particleshape[0] + ".axispp == 1)\n"); $expressionr += ($particleshape[0] + ".rotpp = " + $particleshape[0] + ".rotpp + << 0, " + $particleshape[0] + ".rotmaxrandpp, 0 >>;\n"); $expressionr += ("else\n"); $expressionr += ($particleshape[0] + ".rotpp = " + $particleshape[0]+ ".rotpp + << 0, 0, " + $particleshape[0] + ".rotmaxrandpp >>;" ); dynexpression -s $expressionr -rbd $particleshape[0]; // set correct rotation for instancer particleinstancer -e -name $instancer -rotation rotpp $particleshape[0];

} //=================================================== //getshapes gets the shaped of a selected transform // (from bryans site) //=================================================== proc string[] getshapes( string $xform ) { string $shapes[]; $shapes[0] = $xform; if ( "transform" == `nodetype $xform` ) // if given node is not a transform, assume it is a shape // and pass it through { $shapes = `listrelatives -fullpath -shapes $xform`; } return $shapes; }

Related Documents

Random Instance Rotation
November 2019 12
Random Instance Objects
November 2019 15
Rotation
April 2020 20
Rotation
April 2020 9
Rotation
November 2019 18
Random
December 2019 55