jeudi 31 octobre 2013

Clumping and clump borders

A method I found to find clump borders.

1 Create a Sphere

2 Create a Pointcloud, Emit 10 particles from the Sphere (Emit from Geometry) and call that Pointcloud "BaseEmitter"


3 Create a new PoinCloud, Emit 10000 particles from the Sphere (Emit from Geometry).
Using GetClosestLocationFromGeometry, get particles datas from "BaseEmitter" such as color, so you can visualize what it's doing. See, it's making large beautifull colored areas :)
What we want, is find the border of these areas
 This way of doing things was taught from my friend Nika Ragua on vimeo https://vimeo.com/69505473

4 We're also getting the BaseEmitter ID and storing them as Self.Clump
See, each particle has a number corresponding to the area it is belonging to.

5 With a GetNeighboringParticles we're getting that Clump value.
The idea here is that, now every particle is aware of the Clump value of its closest neighbor.
We're storing that value as ClumpNeighbor
6 Now, We're Subtracting the Clump from ClumpNeighbor
The idea here is that if result is different from zero, it means we're on a border !
Now look, every "1" is showing the border.
 7 That's good, but there's a problem. It's working for one (1) neighbor per particle, but if you want more neighbor (thicker border) you'll end dealing with arrays per particles.
(Max Neighbor =5 for the example)

8 Let's filter that ! Border!

mercredi 30 octobre 2013

Distributing particles in circle


Hello there, I've decided to try myself to the sharing of experiences within Softimage Ice :) 
It's not that I intend to learn anything to anyone, but sometimes sharing thoughts  is good, and writing them is even better !

Recently Andy Moorer published a great article http://andy.moonbase.net/archives/859 about putting strands in circles.
This exercise has a different approach with different results. It's just about distributing particles around other particles. ...well the only common point is it deals with circles ^^

First, lets create a simple Pointcloud, call it "Emitter" :
100 Particles aligned on surface.

In another Pointcloud, create an unsimulated IceTree, that will create 10 copies on top of each other of the previous Emitter Pointcloud. We're storing Self.NumberOfclone for later use.

 
Method provided by Vincent Ulmann
Now, let's see what we have here. (Temporary randomizing the Particle Position for a clearer look).
Notice how the particle ID are organized per particle, we have a clump of 1, 11, 21, 31, etc and further in the picture you see another clump 5, 15, 25, 35...
We want these clumps to be reorganized in 0, 1, 2, 3, 4, 5, 6, etc. per particle clump
Now, let's remove that temporary random. We're going to use Chris Marshall's "Rotate Local" and "Translate Local". (Sorry it's named "OJ" in my compound, but that's just the forename I give to all my added compounds (Hoppe Chris won't mind))
Let's clone, and repeat the Translate local. (Store the 2 PointPositions Values, before and after cloning)
Now you can create an Array of points between those 2 (Check "Delete Source" in ClonePoint)
And with some Turbulences and higher values

Complete Tree

lundi 10 mai 2010

mercredi 29 avril 2009

samedi 6 septembre 2008

lundi 28 janvier 2008