Sorry for the much later reply! This is a great scene! So much to learn from it. Now I understand why you used "Segment" in the raycast, so it start and a sample and stops at the next one :) It still is not clear to me the why to pass the info to a sample set, probably because I never use ICE in pointclouds contexts, just Polymeshes. But I'll keep playing with it and will get there.
Many thanks! On Sun, Jun 1, 2014 at 3:48 AM, Mathias N <[email protected]> wrote: > I don't know what you're using pb_MatrixFilter for (Never seen that > compound before), but basically what you are doing is: For each point on > the curve you get the closest location on the sphere, output the closest > position of the point that is the closest to the sphere. However, you are > comparing the x/y/z values of the vector between the point and the closest > location rather than comparing their DISTANCE. You want to plug the vector > into a length node first. > > The result of this operation will depend on which happens to be nearest to > the sphere, so it's not really a usable solution. You must remember that > getting the pointposition of a curve returns the CONTROL POINTS, not > smoothed points along the curve. > ____________ > > Here's my scene file (SI2013): http://mayulive.com/circlemeshraycast.scn > > Using generate sample set to allow a single-threaded operation to be > multithreaded has been covered on the list before: > https://groups.google.com/forum/?hl=en#!searchin/xsi_list/multithreading$20tip/xsi_list/utMwDX74NSY/_tD3yA2UUAIJ > > At the beginning of the ice tree we use UV to Location to get a number of > smooth positions along the curve. UV to Location + array of values between > 0-1 = object-context array of smoothed point positions along curve. > > Normally could have each of these points get the vector to the next point > in the array and raycast against the sphere to get our intersections. > However, because the array is in the object context (just a long array of > positions) this would be single-threaded. Softimage also has a tendency to > crash if you try to plug multiple arrays into raycast (even in 2015). So > instead of doing this we generate a sample set. > A sample set is essentially identical to a particle, in that each particle > can store values separately from the other particles, and can be executed > independently too. Generate Sample set will generate one of these > "particles" for each item in the array of positions, then, using its own > index, each sample will select the values of one of these points. > > This takes of from this: > > For object > position 1 > position 2 > position 3 > position 4 > ... > > To this: > > For object > Sample 1 > position 1 > Sample 2 > position 2 > Sample 3 > position 3 > ... > > > We do the same for the vector from each position to the next position, and > then we simply have each sample perform a single raycast operation. > Building an array from this set of data gives us > an array of intersections along the curve. You will need to keep in mind > that the order of these intersections will depend on the location of the > first control point of the curve. The first intersection in the array will > be the first intersection starting from CP0 > > > -- *------------------------------[image: http://i153.photobucket.com/albums/s202/animatics/probiner-sig.gif]Pedro Alpiarça dos Santos Animator 3DModeler Illustrator >> http://probiner.x10.mx/ <http://probiner.x10.mx/>*

