Thanks for the explanation Andy. I’ve got “Multithreading for VFX” and it
gave me more of an understanding of the complexities involved but much of it
went over my head. As I’ve mentioned before I’m comfortable with Python and
Processing but in no way would I describe myself as a programmer.
I’ll soak up your feedback and see if I can apply it to the HIP I shared.

 

From: [email protected]
[mailto:[email protected]] On Behalf Of Andy Nicholas
Sent: 15 March 2017 12:00
To: Official Softimage Users Mailing List.
https://groups.google.com/forum/#!forum/xsi_list
<[email protected]>
Subject: Re: houdini question (and where to ask)

 

> The thing I don’t quite understand is why Detail Mode always has to run on
a single thread

There's a lot of complexity involved in threading. The way to better
understand is to ask a few questions. If detail ran multithreaded, how
should houdini split the threads? How would Houdini prevent you overwriting
data that you might also need to read from?

For example, imagine this VEX script running in detail mode:

//Copy position from (n-1)th point to nth point
for(int i=1;i<num_pts;i++)
{
    vector pos = point(0,"P",i-1);
    setpointattrib(geoself(),"P",i,pos);
}

Lets say you have 100 points and Houdini tried to split that loop by placing
it into 10 threads. If the first thread finished before the second thread,
and the second thread finished before the third, then you'd get the same
correct result as if it wasn't threaded. But... if the order of finishing
was changed at all, then you'll get a very different result.

The problem is that there's no guaranteed order, so the result would change
randomly depending on the machine load. 

Houdini can't be expected to understand what you're doing inside a loop to
know if it's compatible with multithreading, which is why it gives you the
Run Over Numbers mode instead. That way you have complete control over the
threading optimisation. I'd recommend you try it out. It'll give you a good
understanding on the issues involved with trying to multi thread code.

If you want better insight into threading issues and specifically some of
the challenges Houdini has to deal with in letting you use VEX in a user
friendly way, I'd highly recommend having a read of this:
https://www.amazon.co.uk/gp/search?index=books
<https://www.amazon.co.uk/gp/search?index=books&linkCode=qs&keywords=9781482
243574> &linkCode=qs&keywords=9781482243574 

Cheers,
Andy




On 15/03/2017 11:00, Jonathan Moore wrote:

It’s definitely far more complicated than it should be. Especially in
comparison to ICE. 

 

The thing I don’t quite understand is why Detail Mode always has to run on a
single thread, especially for common stuff like Arrays. If I could get a
handle on Numbers Mode I’d be happier but it feels like another unnecessary
layer of complexity.

 

From: [email protected]
<mailto:[email protected]>
[mailto:[email protected]] On Behalf Of Olivier
Jeannel
Sent: 15 March 2017 10:45
To: Official Softimage Users Mailing List.
https://groups.google.com/forum/#!forum/xsi_list
<mailto:[email protected]> <[email protected]>
Subject: Re: houdini question (and where to ask)

 

This is terrible when you think of the ice logic that would be a no brainer.

I'm too having some issue with overal sorting stuff. I wish there was more
vop vex tool to do that kind of operation.

 



On Wednesday, March 15, 2017, Jonathan Moore <[email protected]
<mailto:[email protected]> > wrote:

Nice find Oliver.

 

I managed to decipher what was going on in the speedy GIF (wish people would
share videos for this kind of stuff) and the technique does indeed work.
Here’s the HIP (Indie) for anybody that wants to check it out.

 

http://d.pr/f/FpMi.zip

 

The downside is that the Wrangles runs in Detail Mode so it’s single
threaded on those Wrangles, which slows the network down. I don’t know how
to set up the Wrangle in Numbers Mode, which breaks the job down for
multiple threads. If Andy Nicholas is still reading this thread (or anybody
else that understands Numbers Mode on Wrangles) I’d love to know how to get
this example to work that way. This example works fine because it’s only
processing 100,000 points. As the point count goes up it will get a lot
slower running in Details Mode.

 

From: [email protected]
<javascript:_e(%7B%7D,'cvml','[email protected]');>
[mailto:[email protected]
<javascript:_e(%7B%7D,'cvml','[email protected]');> ]
On Behalf Of Olivier Jeannel
Sent: 14 March 2017 19:45
To: Official Softimage Users Mailing List.
https://groups.google.com/forum/#!forum/xsi_list
<https://groups.google.com/forum/#%21forum/xsi_list>
<[email protected]
<javascript:_e(%7B%7D,'cvml','[email protected]');> >
Subject: Re: houdini question (and where to ask)

 

Back to the Get MaximumInSet request, I found this (I haven't tested) :

http://gifyu.com/image/SpJl

 

 

2017-03-07 13:20 GMT+01:00 Fabricio Chamon <[email protected]
<javascript:_e(%7B%7D,'cvml','[email protected]');> >:

thanks for all the insights guys, much appreciated! 

 

2017-03-07 11:41 GMT+01:00 Andy Nicholas <[email protected]
<javascript:_e(%7B%7D,'cvml','[email protected]');> >:

That's good to know, thanks :)

 

On 07/03/2017 10:06, Christopher Crouzet wrote:

I naively compared the AttribPromote with an AttribWrangle in detail mode,
and the results were much (much) faster with the AttribPromote, so I assume
it is multi-threaded and would be hard to beat with any sort of wrangle
trickery.

I'm still stuck with H13 so I didn't know about the numbers mode, that's
neat!

 

On 7 March 2017 at 16:43, Andy Nicholas <[email protected]
<javascript:_e(%7B%7D,'cvml','[email protected]');> > wrote:

Andy, the O(N) thing got me thinking and realized that instead of running
the attrib wrangle in detail mode, which uses only a single thread, it'd be
possible to generate say 4 points and, in a point wrangle, let each of these
points process 1/4th of the array, thus effectively running the same logic
on 4 threads! Another attrib wrangle is then needed in post to sum up the
result from each point. Well, in all honesty I don't think there'll ever be
a use case for it :)


Yes absolutely! Definitely a good approach if you're after performance. It'd
be interesting to do a comparison between that and an Attribute Promote SOP
to see which is faster. I suspect (i.e. hope) the Attribute Promote SOP is
multithreaded, so probably no major advantage.

BTW, you don't even need to generate the 4 points as you've got the Run Over
"Numbers" mode which will do the same. You can save the result into a detail
array attribute and analyse it in a Detail Wrangle. Just takes a bit more
management to set it up. 






On 07/03/2017 01:35, Christopher Crouzet wrote:

Wow, I shouldn't have wrote that late last night, I completely mixed things
up in my previous post, sorry!

I'll try again! With a ramp, you have the source (input) values on the X
axis, and the target (output) values on the Y axis. If either your source or
target values aren't in the range [0, 1], you can remap them using a simple
float parameter (to use as a simple multiplier if your desired lower bound
is 0), or a float2 parameter to precisely control the desired range.

It seems to be a standard practice in Houdini since they use it for some
built-in nodes, such as the Pyro SHOP.

Andy, the O(N) thing got me thinking and realized that instead of running
the attrib wrangle in detail mode, which uses only a single thread, it'd be
possible to generate say 4 points and, in a point wrangle, let each of these
points process 1/4th of the array, thus effectively running the same logic
on 4 threads! Another attrib wrangle is then needed in post to sum up the
result from each point. Well, in all honesty I don't think there'll ever be
a use case for it :)

 

On 7 March 2017 at 01:14, Olivier Jeannel <[email protected]
<javascript:_e(%7B%7D,'cvml','[email protected]');> > wrote:

Ok we agree. 



On Monday, March 6, 2017, Jonathan Moore <[email protected]
<javascript:_e(%7B%7D,'cvml','[email protected]');> > wrote:

As far as I understood it Oliver, the spline version of the Houdini Ramp
only operates in the zero to one range. You re-fit the values pre/post/ or
both to suite your needs.

 

I get that this doesn’t match the UX of FCurves in XSI, but I’ve always
understood Ramp’s in Houdini to be more of a lower level discrete element in
visual programing terms.

 

From: [email protected]
<javascript:_e(%7B%7D,'cvml','[email protected]');>
[mailto:[email protected]
<javascript:_e(%7B%7D,'cvml','[email protected]');> ]
On Behalf Of Olivier Jeannel
Sent: 06 March 2017 17:31
To: Official Softimage Users Mailing List.
https://groups.google.com/forum/#!forum/xsi_list
<https://groups.google.com/forum/#%21forum/xsi_list>
<[email protected]
<javascript:_e(%7B%7D,'cvml','[email protected]');> >
Subject: Re: houdini question (and where to ask)

 

Not sure I get it Christopher (not in front of H) 

Does your trick actualy change the graph visualy ?

In short, can I see the negative x & y values ?

On Monday, March 6, 2017, Christopher Crouzet <[email protected]
<javascript:_e(%7B%7D,'cvml','[email protected]');> > wrote:

Indeed, which is why I mentioned the “detail” mode which brings you back to
O(N). Not saying that one approach is better than the other though, only
that it is possible.

 

On 7 March 2017 at 00:12, Andy Nicholas <[email protected]
<javascript:_e(%7B%7D,'cvml','[email protected]');> > wrote:

Yep it is possible, but you wouldn't want to do it because each calculation
of the maximum value would be running across N points to calculate that.
That'd make it an O(N^2) operation, albeit spread over multiple threads.

It might seem like a pain to have to do this in advance using an Attribute
Promote, but by doing so, it's actually forcing you to work in a more
efficient way. Go with it ;)

 

On 06/03/2017 16:32, Christopher Crouzet wrote:

It is possible to retrieve the maximum value in a VOP since nothing stops
anyone from manually iterating through all the points of the geometry. This
kind of operation might be more suited in “detail” mode though.

Also, having the ramp normalized to the [0, 1] range in both the X and Y
axis is usually “workarounded” by adding a float parameter for the amplitude
(Y axis) that is used as a global multiplier (making later tweakings
convenient!), and a float2 parameter for the target range (X axis) that is
then remapped using `fit("my_ramp", 0.0, 1.0, range_min, range_max)` (which
is also convenient for later tweakings!).

Now, if you really want to have an actual FCurve, then just create a simple
float parameter, add all the keys however you want, then query it in using
`chf("my_param", the_time_in_seconds)` in VEX/VOP, or using the equivalent
expression.

 

On 6 March 2017 at 23:29, Jonathan Moore <[email protected]
<javascript:_e(%7B%7D,'cvml','[email protected]');> > wrote:

Fabricio , 

 

The Attribute Promote help page has approx 15 examples you can load.
Hopefully you might find something within the examples to inspires a
solution.

 

From: [email protected]
<javascript:_e(%7B%7D,'cvml','[email protected]');>
[mailto:[email protected]
<javascript:_e(%7B%7D,'cvml','[email protected]');> ]
On Behalf Of Olivier Jeannel
Sent: 06 March 2017 15:56
To: Official Softimage Users Mailing List.
https://groups.google.com/forum/#!forum/xsi_list
<https://groups.google.com/forum/#%21forum/xsi_list>
<[email protected]
<javascript:_e(%7B%7D,'cvml','[email protected]');> >


Subject: Re: houdini question (and where to ask)

 

You can't get the "get maximum in set" when inside a vop.

But, you get those options with the promote attribute sop.

 


On Monday, March 6, 2017, Oscar Juarez <[email protected]
<javascript:_e(%7B%7D,'cvml','[email protected]');> > wrote:

I would like to be proven wrong, but that would be the way, I mean in your
second pointvop you don't need to add another noise, your noise is already
saved in an attribute, when you promote just check off delete original and
you can access the same noise. Also noises have specific output ranges, they
come in the documentation, so you can always add a fit node to change your
range to what you need, in the geometry spreadsheet you can also sort by
value so you can see max and min. 

 

If you press X with your mouse over the noise output it will add a
visualization node, you can visualize on the viewport or in the geometry
spreadsheet the values. I know its not the same but as far as I know their
is no way to do the same as the get maximum in set node in a vopsop context.

 

 

 

On Mon, Mar 6, 2017 at 3:57 PM, Fabricio Chamon <[email protected]
<javascript:_e(%7B%7D,'cvml','[email protected]');> > wrote:

thanks everyone. The ramp parameter kind of works but as you say, is not
that user friendly and does not show the points below 0. (that's ok, but I
wonder if it is possible to write a custom widget in houdini)

 

anyway, the thing I could not get right just yet is that sort of "get
maximum in set" thing. Sorry for using ICE language, I'm trying to be open
minded here, so please tell me if that`s not the correct mindset.

 

so on this graph:

 



 

...how could I get the maximum value of the output noise node and compare to
a single point output of the same node?

 

>From what I can tell, I'd have to:

 

1- create this pointvop node with a turbnoise, then store the output noise
into an attribute (via bindexport?) 

2- up one level -> drop an attrib promote (detail), set to maximum

3- drop another pointvop node with another noise node inside (same
parameters) and compare the result noise to that found on the atrib promote
node??

 

I'm 99% sure this is totally wrong...how would you go about that single task
specifically?

 

and finally, thanks for the suggestions on houdini forums and discord. will
try both (although I pretty much like this list =) )

 

 

2017-03-06 15:17 GMT+01:00 gareth bell <[email protected]
<javascript:_e(%7B%7D,'cvml','[email protected]');> >:

yeah - the lack of handles is frustrating

  _____  

From: [email protected]
<javascript:_e(%7B%7D,'cvml','[email protected]');>
<[email protected]
<javascript:_e(%7B%7D,'cvml','[email protected]');> >
on behalf of Olivier Jeannel <[email protected]
<javascript:_e(%7B%7D,'cvml','[email protected]');> >
Sent: 06 March 2017 14:05:17
To: Official Softimage Users Mailing List.
<https://groups.google.com/forum/#%21forum/xsi_list>
https://groups.google.com/forum/#!forum/xsi_list
Subject: Re: houdini question (and where to ask) 

 

yep but it has no handles  

and try to make négative values, it takes them but wont show on the curve as
it has a 0,1 space.

Unless i'm wrong (which i'd love to be)

 

Le 6 mars 2017 14:36, "Olivier Jeannel" <[email protected]
<javascript:_e(%7B%7D,'cvml','[email protected]');> > a écrit :

in vop, bind and bind export node will get an set datas. 

Ramp Parameters is sort of fcurve.

It's a bit weak in terms of curve manipulation, but does the job. 

It has 2 modes rgb (ramp) and spline.

If you use several ramps in the same vop, name them with different name or
they might not export.

 

Le 6 mars 2017 14:28, "Fabricio Chamon" <[email protected]
<javascript:_e(%7B%7D,'cvml','[email protected]');> > a écrit :

..sorry, hit send too soon. 

 

Question #1: are there any equivalents to ICE "get ... in set"? or or do I
have to iterate and store values for later comparision? In other words: what
is the best or recommended workflow to compare single point data with global
point data?

 

Question #2: any nodes that resemble a fCurve node, like we have in ICE? if
not, what is the alternative?

 

and finally, I can see this list is becoming more and more houdini-esque
than ever..but, what is the best place to ask beginner questions like the
above? houdini foruns, houdini list, odForce...

 

thanks!

 

2017-03-06 14:23 GMT+01:00 Fabricio Chamon <[email protected]
<javascript:_e(%7B%7D,'cvml','[email protected]');> >:

Hi, I'm slowly getting into houdini and this is my first attempt to port a
really simple ridged fractal deformer made in ICE to houdini (using
pointvop).  

 

Question #1: are there any equivalents to ICE "get ... in set"? or or do I
have to iterate and store values for later comparision? In other words: what
is the best or recommended workflow to compare single point data with 

 


------
Softimage Mailing List.
To unsubscribe, send a mail to [email protected]
<javascript:_e(%7B%7D,'cvml','[email protected]');>
with "unsubscribe" in the subject, and reply to confirm.


------
Softimage Mailing List.
To unsubscribe, send a mail to [email protected]
<javascript:_e(%7B%7D,'cvml','[email protected]');>
with "unsubscribe" in the subject, and reply to confirm.

 


------
Softimage Mailing List.
To unsubscribe, send a mail to [email protected]
<javascript:_e(%7B%7D,'cvml','[email protected]');>
with "unsubscribe" in the subject, and reply to confirm.

 


------
Softimage Mailing List.
To unsubscribe, send a mail to [email protected]
<javascript:_e(%7B%7D,'cvml','[email protected]');>
with "unsubscribe" in the subject, and reply to confirm.




-- 

Christopher Crouzet
 <https://christophercrouzet.com> https://christophercrouzet.com

 

 

------
Softimage Mailing List.
To unsubscribe, send a mail to [email protected]
<javascript:_e(%7B%7D,'cvml','[email protected]');>
with "unsubscribe" in the subject, and reply to confirm.

 

------ Softimage Mailing List. To unsubscribe, send a mail to
[email protected]
<javascript:_e(%7B%7D,'cvml','[email protected]');>
with "unsubscribe" in the subject, and reply to confirm.

-- 

Christopher Crouzet  <https://christophercrouzet.com>
https://christophercrouzet.com

 

------ Softimage Mailing List. To unsubscribe, send a mail to
[email protected]
<javascript:_e(%7B%7D,'cvml','[email protected]');>
with "unsubscribe" in the subject, and reply to confirm. 

-- 

Christopher Crouzet  <https://christophercrouzet.com>
https://christophercrouzet.com 

------
Softimage Mailing List.
To unsubscribe, send a mail to [email protected]
<javascript:_e(%7B%7D,'cvml','[email protected]');>
with "unsubscribe" in the subject, and reply to confirm.

------ Softimage Mailing List. To unsubscribe, send a mail to
[email protected]
<javascript:_e(%7B%7D,'cvml','[email protected]');>
with "unsubscribe" in the subject, and reply to confirm. 

-- 

Christopher Crouzet  <https://christophercrouzet.com>
https://christophercrouzet.com 

------
Softimage Mailing List.
To unsubscribe, send a mail to [email protected]
<javascript:_e(%7B%7D,'cvml','[email protected]');>
with "unsubscribe" in the subject, and reply to confirm.


------
Softimage Mailing List.
To unsubscribe, send a mail to [email protected]
<javascript:_e(%7B%7D,'cvml','[email protected]');>
with "unsubscribe" in the subject, and reply to confirm.

 


------
Softimage Mailing List.
To unsubscribe, send a mail to [email protected]
<javascript:_e(%7B%7D,'cvml','[email protected]');>
with "unsubscribe" in the subject, and reply to confirm.

 






------
Softimage Mailing List.
To unsubscribe, send a mail to [email protected]
<mailto:[email protected]>  with "unsubscribe" in the
subject, and reply to confirm.

 

------
Softimage Mailing List.
To unsubscribe, send a mail to [email protected] with 
"unsubscribe" in the subject, and reply to confirm.

Reply via email to