Pinboard tutorial
This tutorial will show you how to make pinboard in maya.

First create particle grid from one end of grid to another (using particle tool). My grid is default, -12 to 12. I set spacing 0.5. Beware that if that processing will get slower more particles you have


I added two custom scalar attributes called PosU and PosV.

I made expression so every particle will get unique index on creation. Basically I’m converting x and z positions to u and v coordinates. I use -12,12 since that is how far grid goes. I want to map positions between -12, 12 to 0,1 range so I use linstep.
Vector $pos=particleShape1.worldPosition;
Float $x=$pos.x;
Float $y=$pos.y;
particleShape1.PosU=`linstep -12,12 $x`;
particleShape1.PosV=`linstep -12,12 $z`;


I added attribute scalar attribute named HeightPP and created ramp for it.

Ramp will bi driven by Pos U and Pos V. So posU,V are coordinates where image will be sampled. Array mapper is node that samples color on one point of image driven by particle attributes for U and V.


This is image I will use.

Turn off filtering on texture to avoid blurring of image.

On ramp leave only one color and connect file.outColor to it. I could connect file directly to array maper, I didn’t want to bother.

To check if everything works, add PP attribute for color.

And add line:
particleShape.rgbPP=particleShape1.HeightPP;

Press 6. It works, but it’s flipped.

Just put change expression on PosU to 1-`linstep -12 12 $x`; (INVERT)

Add lines:
Float $offset=particleShape1.HeightPP*4;
particleShape1.position=<<$x,$offset,$z>>;
Particles will move upward.

Make one pin, and instance it. (particles/instancer)


To get animation working just put this into runtime expression;

Nice eh? Check the movie I posted (maya playblast (cinepak codec))

· Sometimes maya reads black image, reopening scene worked for me.