Hello,
I'm currently learning Houdini and vex. My test scene consist of a sphere which is projected unto a bigger sphere. Using the ray node, it works fine and the performance is fast. I then tried to do the same thing using an attribute wrangle node with vex intersect(…). It also works, but the performance is very slow.
While I understand why the vex code is slow, I don't understand why the ray node is this fast, and why it doesn't seem affected by the number of primitive from the collision geometry.
I would like to know how to do something in vex as fast (or faster ) as the ray node. Or at least understand why there's a difference in performance. I've attached a sample file to illustrate the problem.
Thanks for the help.
P.S. An easier question, why is the ray collision primitives connector dotted ?
Vex intersect(...) vs ray node performance
4215 3 2- zxcl111
- Member
- 2 posts
- Joined: March 2019
- Offline
- tamte
- Member
- 8449 posts
- Joined: July 2007
- Offline
it's most probably caching of the acceleration structure
it seems that Ray SOP is able to detect that the collision geo is the same among all the iterations and therefore computes acceleration structure just once, while VEX intersect function is probably computing a new one each iteration
just a guess though
it seems that Ray SOP is able to detect that the collision geo is the same among all the iterations and therefore computes acceleration structure just once, while VEX intersect function is probably computing a new one each iteration
just a guess though
Tomas Slancik
FX Supervisor
Method Studios, NY
FX Supervisor
Method Studios, NY
- zxcl111
- Member
- 2 posts
- Joined: March 2019
- Offline
- Andr
- Member
- 900 posts
- Joined: Feb. 2016
- Offline
Funny I've always used the Ray Sop node because I was lazy to do it in vex and I always regretted about the lost performance.
Turns out that Ray Sop is way faster than intersect() function, even when you let it create and import all the attributes.
I didn't try profiling with intersect_all() too, though. But I guess it would be the same story.
A little annoyance about the Ray Sop is that if you want the hitpos, you need to create a rest position attribute in the collider geo, and then import it with Import Attributes from hits in the Ray Sop.
Regarding the Vex intersect(), why it doesn't come with the tol and ttol arguments like intersect_all()?
Is intersect() less precise than intersect_all()?
Turns out that Ray Sop is way faster than intersect() function, even when you let it create and import all the attributes.
I didn't try profiling with intersect_all() too, though. But I guess it would be the same story.
A little annoyance about the Ray Sop is that if you want the hitpos, you need to create a rest position attribute in the collider geo, and then import it with Import Attributes from hits in the Ray Sop.
Regarding the Vex intersect(), why it doesn't come with the tol and ttol arguments like intersect_all()?
Is intersect() less precise than intersect_all()?
Edited by Andr - April 4, 2021 18:17:16
-
- Quick Links