[Sidefx-houdini-list] Stopping a For Each SOP

Nick Nimble nick at nicknimble.com
Sat Jan 5 04:38:14 EST 2013


Well what I'm doing is use iterations to speedup pointcloud lookups on 
vast numbers of points. The goal is to get a good result with finding a 
closest point that is not taken between two sets of a 1.000.000 points 
for every point. I use this to seamless blend a FLIP fluid to a very 
specific shape, in slowmotion. So there is nowhere to hide.

I came a long way, it now takes 18 secs to mary up two sets of 10.000 
points, but the two large sets take about 14 hours now, where its is in 
the stage of still processing the 'I'm done and skipping most of the 
stuff' iterations.

The idea is to predict how many neighbor points are needed in a given 
pointcloud lookup to get to a good result. I use a gamma (power 2) curve 
0 -1 that is used as a fraction of the total number of points. Because 
it ends with 1 every point will find a 'partner' eventually. How this 
works is that I exclude all matches from previous iterations through 
groups from future iterations. This works very well and for the 10.000 
points where I use 100 iterations. much more that that doesn't seem to 
make much of a difference. 10 iterations seemed the very effective on a 
1000 points so that is how I got to the total number of points / 100 is 
the number of iterations.

How ever sometimes there are no points left before the last iteration. 
Which is awesome, but this is how I got to the point where I wanted to 
break from the loop at a given point.

I realize I have to get get a better figure at how many iterations are 
needed. Because in the example to 1.000.000 points, if the 'nothing left 
to do skipping most of it step' takes 3 sec per iteration which is not 
to bad on a total of 14 hours ;-). Although if it succeeds half way 
through (total of 10000 iterations) it still takes 4 hours to get 
through all that.

I guess more testing is the best method. I'm also going to run the same 
tests with just a cap on the total number of neighbor points. Just to 
see if I can get away when using enough iterations with say 100 
neighbors max. It seems that a relative wider range of neighbors is 
essential for point clouds with a low density, but it just might be that 
you hardly notice the difference on very high density pointclouds.

Cheers,
Nick, be Nimble
+31 622 4243 94 | www.nicknimble.com | www.facebook.com/nicknimble

On 1/4/13 11:14 PM, Stephen Tucker wrote:
> Not sure if I'm guessing what you're doing correctly, but maybe there's a
> better way to calculate the number of times you need to run the loop than
> manually entering in the x value?
>
>
> On Fri, Jan 4, 2013 at 10:33 AM, Nick Nimble <nick at nicknimble.com> wrote:
>
>> Hi Andrew,
>>
>> Well I'm not sure if its the ideal method, but it works very well for my
>> purpose. I'm very grateful :-).
>>
>> Today's paradox: 'Sometimes the solution is so simple that its overlooked'
>> ;-)
>>
>>
>> Cheers,
>> Nick, be Nimble
>> +31 622 4243 94 | www.nicknimble.com | www.facebook.com/nicknimble
>>
>> On 1/4/13 6:39 PM, Andrew Lyons wrote:
>>
>>> not sure on getting correct break behavior (SESI?) - but perhaps using a
>>> switch SOP in your foreach to output null for those iterations where
>>> there's nothing to be done could at least eliminate compute time ... ?
>>>
>>> Cheers
>>>
>>> On 4 January 2013 09:34, Nick Nimble <nick at nicknimble.com> wrote:
>>>
>>>   Hi :-)
>>>> I'm having a for each sop that iterates over geometry. aka I it goes over
>>>> the same set of points an x number of times.
>>>> It happens that halfway trough the iterations 'there is noting left to
>>>> do'
>>>> and I would like to exit/break from the loop. Very common in
>>>> scripting/programming, right?
>>>>
>>>> I noticed the 'Stop Condition' parm on the for each node. Lovely when you
>>>> want to stop at a given iteration using the stamp expression. How ever
>>>> when
>>>> you refer to anything that lives inside, like the number of points in a
>>>> group, it seems to dive into an endless loop.
>>>>
>>>> My question is, is there a node that I can use inside a for each SOP to
>>>> 'break' from the iterations?
>>>> Any suggestions are more than appreciated :-)
>>>>
>>>> --
>>>> Cheers,
>>>> Nick, be Nimble
>>>> +31 622 4243 94 | www.nicknimble.com | www.facebook.com/nicknimble
>>>>
>>>> ______________________________****_________________
>>>> Sidefx-houdini-list mailing list
>>>> Sidefx-houdini-list at sidefx.com
>>>> https://lists.sidefx.com:443/****mailman/listinfo/sidefx-****
>>>> houdini-list<https://lists.sidefx.com:443/**mailman/listinfo/sidefx-**houdini-list>
>>>> <https://lists.**sidefx.com:443/mailman/**listinfo/sidefx-houdini-list<https://lists.sidefx.com:443/mailman/listinfo/sidefx-houdini-list>
>>>>
>>>
>> ______________________________**_________________
>> Sidefx-houdini-list mailing list
>> Sidefx-houdini-list at sidefx.com
>> https://lists.sidefx.com:443/**mailman/listinfo/sidefx-**houdini-list<https://lists.sidefx.com:443/mailman/listinfo/sidefx-houdini-list>
>>
>
>




More information about the Sidefx-houdini-list mailing list