Put points onto the primitive center

how to put points onto the primitives center file download link

This is one of ways I know, just simply use import primitive attribute


8 ways to put points onto the geo surface

1 @P=minpos(1,@P);

which use using the paricles to find nearest points onto the geometry. This is not limitate to only the particles but also the Geos or what ever you wanna use.

download scene file

use minpos.gif

2 using volume gradient(vector direction) and volume sample to get vector force which point to out-ward and then we invert it which will keep particle onto the surface.

use curl noise to give points a bit random noise on position or v.

download scene file

3 Use self- collision to keep particles moving around surface, popattract node will do the trick. This is a quick way for smooth surface object like sphere. The example is not working really well though.

4 use pop advect to use volume control particles

the trick here is use volume point.N as velocity direction, then inside popnetwork use pop advect adjust vel value to -20, which will create a inward force to keep particle stay within geo. Then we need to setup particle to collision with geo to get correct result.

download scene file

5 xyzdist and primuv

int primAAA;

vector uvBBB;

float dist=xyzdist(1,@P,primAAA,uvBBB);

vector position=primuv(1,'P',primAAA,uvBBB);

@P=position;

download scene file

6 attribute interpolation use with scatter, just need to turn on the source prim and source primuv inside scatter node, this is the same as xyzdist.

7 displacement along the edge

8 point deform


3 ways to do attribute transfer

1 attribute transfer: example is transfer sphere Normal to the intersection points

2 use PCcloud and pcfilter

3 use volume gradient

download scene file

1 smooth/lerp interpolation 2 values blend in two models and use time to control it

interpolation 2 ways.png
Screen Shot 2018-11-14 at 11.22.09 PM.png

lerp is the same as mix in vop

here is the example to use relbox control lerp, here if you don’t want to create a new control vector, you can just use @Cd and @Cd.g to do it. The result will be same.

v@Ctrl=relbbox(2,@P);

@Ctrl.y=clamp(@Ctrl.y,0,1);

you can also combine 2 lines above with v@Ctrl=relbbox(2,@P)[1] (here [1] shortcut for Y axis)

@P=lerp(@P,@opinput1_P,@Ctrl.y);

download scene file

Ramp selections

connect points into lines

couples ways here

1 convert lines, to convert shaded geo into outlines, this also create a restlength value as well(we gonna use it in constraint)

2 ends, unroll U to convert

3 add, first you can create cluster points and then use cluster attribute to convert points into lines,

4 add, you can also use sourceptnum attribute to convert particles into lines(need to make sure popnetwork has this value),

5 add, setup @id=@ptnum and then use id attribute to connect to grids

download scene file

Groups

Okay, there are couple different way to group in Houdini as far as I know.

1 use paint node group things.

paint node - use partition - group @Cd<1or @Cd>1 based on what color you paint on.

2 just use Group node

but this only works with existing attributes in spreadsheet. like

@N.x>1, @Cd>0.5, @P.y<0.2

3 use Attribute Wrangle

you can just create a group in here or you create a new attribute then use group node to adjust this new attribute.

  • create a new attribute then use group node to adjust this new attribute

    use existing value Cd, use noise will create a bigger pattern noise

    @Cd=noise(@P+@Time);

  • or just create a new one like

    f@Ctrl=noise(@P+@Time);

    then inside group use @Ctrl<0.5 to group the points

  • direct create a group inside attributewrangle, use rand will create a super fast jumpping pattern and changed on each frame,I think it more works like seed.

    f@group_A=rand(@ptnum+@Time/8);

    more works like seed difference

  • f@group_A=noise(@ptnum+@Time/8);

    this will create a more calm pattern compare to rand()

  • the good things about using attribute wrangle is you have more control on things. here you can use “noise value to control the group range“

    v@B=rand(@ptnum)<ch('noise');

    then inside group use @B==1 to group points

4 how to use distance to create the a ramp for selection then you can use partition group based on color

5 How to control Group B by Using group A mask, Group Combine use group B to internet with group A

download scene file

Use particle flip to deform geo

1 need to copy filpobject name back to the geometry level dopnetwork object merge, so we can use it to drive original object. or just use object merge bring in the file object.

2inside flip object choose particle field instead of suface sop

3inside flip solver, particle motion tab, turn off reseed particles. if not, which will create mess.

4 inside volume motion turn on viscosity

5 a way to give object new texture based on UV, you need to promote vertices back to points

download scene file