Jump to content
Sign in to follow this  
fxrod

Point SOP - Now Legacy?

Recommended Posts

Hey All:

Ever since the advent of VOP SOPs, I haven't used the Point SOP as often. As a matter of fact, I encourage my team to replace the Point SOP wherever possible in their setups as an optimization step. Now, with the Wrangle SOP, it's even easier to whip up some simple VEX code to do almost anything the Point SOP does.

Do other users find that the Point SOP is slowly becoming the sweet ol' grandpa of point data manipulation? Is there anything the Point SOP can do that can't be done in VOPs/VEX?

  • Like 1

Share this post


Link to post
Share on other sites

I'm avoiding Point SOP completely as well(for may years now) and I see no benefit in using it (quite the opposite), in my opinion it was legacy a long time ago since even the seemingly simpler usage doesn't make up for the speed penalty it has

  • Like 1

Share this post


Link to post
Share on other sites

But what if you need to use all kinds of expressions? Can they still be replaced? For example Point SOP has lots of local variables.

Share this post


Link to post
Share on other sites

I cannot think of any expression/variable that cannot be easily replicated in VOP SOP/Wrangle nodes

do you have any example?

we are of course talking only about per-point/element expressions since other you can use in parms of VOP/VEX nodes

I don't mind Point SOP staying around for some extremely rare cases if any, but personally It's never been the case for me yet

  • Like 1

Share this post


Link to post
Share on other sites

Yes, I have one.

The point sop creates on the fly the "egde_dir" attribute, a vector that points to the smallest point neighbour sharing an edge. It can easily be created with vop, but why waste time doing it?

It also very important for learning purpose, even to understanding expressions and mapping several fundamental attributes.

  • Like 1

Share this post


Link to post
Share on other sites

That's a good example Fabiano. Also if you do it in VOPs, it will still take more than 1 VOPSOP, right? (Because of the last point). If you say that you would use an if statement inside, then technically that should be slower? :)

I will see if I can find more cases anim, I will have to check inside Houdini :)

But one thing that bothers me is the self-explanatory nature of the Point SOP. Yes it does many things but it still takes more time to see what the VOPSOP does. Renaming it helps of course. But to exactly know what it is doing, you have to read the network.

In the case of Wrangle SOPs, it would be faster to read but still an effort to understand what's going on.

Also why isn't Point SOP made as fast as VOPSOP unless the expression used prevents it? I am sure someone can make a VOPSOP that mimics it at a higher level?

Another thing is if Point SOP can be replaced, so many other SOPs available.

Some people criticize that I even make an effort to use the Duplicate SOP instead of the Copy SOP when it makes sense, but that's not only faster but clearer.

So do you think clarity vs performance is an issue when using VOPSOP/Wrangle SOPs? Btw I am not against using them, just wondering, because I normally use the Point SOP in most cases as they are not real production files.

But if I was making an operator, or know that the data set might be large, then I always use VOPSOPs.

Edited by magneto

Share this post


Link to post
Share on other sites

Yes, I have one.

The point sop creates on the fly the "egde_dir" attribute, a vector that points to the smallest point neighbour sharing an edge. It can easily be created with vop, but why waste time doing it?

It also very important for learning purpose, even to understanding expressions and mapping several fundamental attributes.

I forgot about edgedir as I got used to Polyframe SOP

but I guess that's true that using Point SOP to set standard attributes may be faster to setup as it is made for that purpose, but as soon as you need to use expressions and variables in the process it makes it questionable speedwise, but even in that case it's up to user to decide if it'll cause penalty or not

the problem I noticed among many new houdini users is that they are learning Point SOP as the main tool to modify point attributes (mainly P and N) using complex expressions and local variables. That makes it unintuitive and not very clear either (at least from my POV), because even simple vector operations need to be done 3 times, individually for each component

so if you say it's ok for learning, then I'd say that such learning process should always contain the warning about the speed penalty of Point SOP and the more efficient options like Vop SOP or Wrangle nodes so that the new user can switch whenever he feels like

because in Houdini world where each tool can be nested inside another, the speed of HDAs(executed in runtime) is everything and any node that unnecessarily slows down the process should be considered for optimisation if you want your tools to be useable

to sum it up I'm not against Point SOP being part of Houdini toolset, but users should decide what nodes to use for the task. But if I had my own team I'd ophide the Point SOP for them just to be sure :)

  • Like 2

Share this post


Link to post
Share on other sites

....

Some people criticize that I even make an effort to use the Duplicate SOP instead of the Copy SOP when it makes sense, but that's not only faster but clearer.

...

hmm, I guess the world is not always black and white and not always the node with more options is necessairly slower

just did a quick test with copying simple geometry massive amount of times and Copy SOP was about 1.3-1.5x faster than Duplicate SOP

Duplicate SOP is one of the SOPs I consider legacy for me as well

  • Like 1

Share this post


Link to post
Share on other sites

Interesting topic!

From a beginners point of view I have to say that The Point SOP has helped me a lot to understand houdini and be able to use it at the beginning. It is now a few monthas since I started using houdini that I am doing point operations within vopSOP and wrangleSOP and therefore not using pointSOP as much as in the beginning since it is slower.

# Tomas; About the learning process I agree with you that new users should be introduced to use vopSOPs early in order to skip using complex expressions in the pointSOP. Altough in order to learn the software and feel some kind of feedback on your work a new user needs to be able to build a whole network and reach some kind of result. If you get stuck on learning vopSOPs at the very beginning you may feel unmotivated to keep learning since it will take a long time to figure out how to do simple operations in vopSOP instead of pointSOP. I am speaking of my own learning process ofc. That since I am quite new to VFX and am a self-taugth houdini user. Nevertheless if the new houdini user studies in a VFX-school it might be better to quickly get introduced top vops and wrangle.

If I had my own team with experience houdini-users there would be a lot more nodes I would almost prohibit. Such as point SOP, vopforce among others :)

Share this post


Link to post
Share on other sites

Great answer anim, I agree with you completely. I also only use the Point SOP when it's for simple setups, expressions. When you get into unwieldy vector expressions and such, it not only becomes more cumbersome but also much slower like you mentioned.

For these cases, I never even think of using the Point SOP.

Also same with the custom operators. I always try to make them as fast as possible given my current knowledge. If in the future I see a faster way to do it, I always make sure to update my operators, because speed is king for custom operators IMO even if you don't need it.

I think it's a case of using "Premature optimization is the root of all evil" as a catch statement for doing sloppy work. I say you should always write the fastest code you know if it doesn't take much longer, which in our case definitely doesn't.

Also on that note that reminded me of another issue I have that I would like to know ways to improve. Will make a new thread not to derail this one though :)

Re Duplicate SOP:

I just tried copying 1M boxes, but Houdini crashed due to display driver's lost connection. Even 10K crashes it. Not sure if a restart would solve it.

  • Like 1

Share this post


Link to post
Share on other sites
I just tried copying 1M boxes, but Houdini crashed due to display driver's lost connection. Even 10K crashes it. Not sure if a restart would solve it.

If you don't transform the box at all, then you end up hitting a rendering bottleneck in modern GPUs. The GPU will constantly be fetching, testing and writing the same Z values at the same pixel locations (x10K), causing significant latency issues. Windows will then terminate the driver because it thinks it's hung, since the draw is taking more than 2s. On Linux, it just draws very slowly with 10K. If you translate the box a bit (say by 1 unit), it should work without issue.

  • Like 1

Share this post


Link to post
Share on other sites

Thanks Mark, I didn't know that. When I did what you said, it worked beautifully. Duplicate seemed to take 25s vs Copy took 5.6s. So about 4.5 times slower. I am surprised. I guess I won't use Duplicate then :)

Share this post


Link to post
Share on other sites

All good points, I generally stay away from the Point. Classically, one advantage the Point sop has had over a Vopsop is Matching by Attribute, grabbing N or P based on id is incredibly easy. As of 12.5 this has been added to vops with the Find Attribute Value vop (and it's been very useful). Still a lot simpler to grab it with the Point if you can though. Has anyone done a speed comparison between the two?

  • Like 1

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this  

×