Hi,
Since it's the first point you can also create it by itself and them merge with the input geometry.
Found 1547 posts.
Search results Show results as topic list.
Technical Discussion » Inserting a new point at an arbitrary ptnum
- animatrix_
- 4504 posts
- Online
Technical Discussion » read an attribute name
- animatrix_
- 4504 posts
- Online
alexwheezy
I've never done performance tests for this, but how much slower is it?
It depends on the input geometry, i.e. number of elements but from my tests with high res geo (10M+ points), it was orders of magnitude slower because the point/prim/vertex functions are designed to look up arbitrary elements.
alexwheezy
I think few people know about this feature because few people talk about it at all in their lessons. It is easier for artists to call the appropriate function.
That's why I talk about all kinds of tricks like this in Pragmatic VEX
Technical Discussion » read an attribute name
- animatrix_
- 4504 posts
- Online
Gerardo Castellanos
@BabaJ, ok, thanks for your answer
@ObeidaZakzak ... ohh good to know, thanks a lot!
I also recommend using the Bindings tab if you can, as using any of the point/prim/vertex functions, you will take a severe performance hit over direct attribute binding, even if you are just reading from the current element.
A lot of people in production are not aware of this.
Technical Discussion » to select only those edges that are open
- animatrix_
- 4504 posts
- Online
Technical Discussion » Deleting first and last point over for each primitive
- animatrix_
- 4504 posts
- Online
Technical Discussion » Volume or VDB for image processing with OpenCL?
- animatrix_
- 4504 posts
- Online
Technical Discussion » why Some point number cannot be removed from the array
- animatrix_
- 4504 posts
- Online
Hi,
You shouldn't modify the array you are looping over when using foreach loop. You don't have to loop over the elements like that to remove values. Just do like this:
Or loop over the elements to remove:
You shouldn't modify the array you are looping over when using foreach loop. You don't have to loop over the elements like that to remove values. Just do like this:
removevalue ( npts, 6 ); removevalue ( npts, 1 );
Or loop over the elements to remove:
int elements [ ] = { 6, 1 }; foreach ( int element; elements ) removevalue ( npts, element );
Edited by animatrix_ - April 12, 2024 11:24:47
Technical Discussion » Why is frame padding ($FN) used and not just $F in renders?
- animatrix_
- 4504 posts
- Online
Hi,
It makes managing the files easier and some file management systems do not sort the files properly if the digits don't have padding. It also works easier in some applications that work with sequences like Nuke.
It makes managing the files easier and some file management systems do not sort the files properly if the digits don't have padding. It also works easier in some applications that work with sequences like Nuke.
Technical Discussion » How can the parameter be called in wrangler?
- animatrix_
- 4504 posts
- Online
As BabaJ said there are a lot of differences between Hscript and VEX. For example detail VEX function can get any type of attribute but for strings you need to use the details Hscript expression.
Technical Discussion » Can use Eigen C++ library in Vex or OpenCL?
- animatrix_
- 4504 posts
- Online
ljzmathematicsjuejueziThank you very much for your suggestion. I actually have a small problem with HDK. Every time I recompile the plug-in, I have to restart Houdini to recognize it. This is a bit annoying. Is there a way to make Houdini detect custom node updates in real time?
use eigen in vex:
HDK: Custom Vex Function [www.sidefx.com]
But it's still inconvenient
The C++ Wrangle SOP won't have this problem. It will only compile if the code is changed or it's run on a new system where it wasn't compiled before or a new version of Houdini that uses a new compiler. The same binaries will be used indefinitely.
SESI did a great job with C++ integration albeit it's not really popularized.
Technical Discussion » Can use Eigen C++ library in Vex or OpenCL?
- animatrix_
- 4504 posts
- Online
Hi,
You can use it inside Houdini using C++ Wrangle:
This guy integrated the Eigen library also:
https://github.com/lecopivo/cpp-wrangle [github.com]
So you can try that version to access the Eigen library directly. This is the closest you can get albeit not inside VEX or OpenCL.
You can use it inside Houdini using C++ Wrangle:
This guy integrated the Eigen library also:
https://github.com/lecopivo/cpp-wrangle [github.com]
So you can try that version to access the Eigen library directly. This is the closest you can get albeit not inside VEX or OpenCL.
Technical Discussion » If we can program in this editor, does that mean we can solv
- animatrix_
- 4504 posts
- Online
Staglaitortamte
no
I was tempted to learn Houdini because "supposedly" programming integration is done at the kernel level, so you can do EVERYTHING (panacea) - go ahead, start learning.
It turns that I was duped. Ha-ha... (((
If you use the HDK (from within Houdini or outside), then the sky is the limit.
Houdini Indie and Apprentice » Use a Curve to Adjust a Ramp
- animatrix_
- 4504 posts
- Online
It depends on whether you want to modify the ramp parameter, which would require Python instead of VEX.
You can also use the curve directly using the primuv VEX function to sample P accordingly.
In either case your curve has to be ideally 2d and you have to decide on a convention i.e. which plane you have to use, etc like XY, YZ, XZ, or even best fit plane.
You can also use the curve directly using the primuv VEX function to sample P accordingly.
In either case your curve has to be ideally 2d and you have to decide on a convention i.e. which plane you have to use, etc like XY, YZ, XZ, or even best fit plane.
Technical Discussion » Advecting "gradient" Field of Heightfield?
- animatrix_
- 4504 posts
- Online
You can also use an animated heightfield for the gradient to create more interesting variations like this:
Houdini Indie and Apprentice » watching "stop being afraid of houdini" sweep node issue
- animatrix_
- 4504 posts
- Online
Hi,
Unless the tutorial is updated, you have to figure it out for each case. You can also ask about it here for each issue you can't resolve.
Unless the tutorial is updated, you have to figure it out for each case. You can also ask about it here for each issue you can't resolve.
Technical Discussion » Advecting "gradient" Field of Heightfield?
- animatrix_
- 4504 posts
- Online
Hi,
Here is one way:
1. Compute grad using VEX in a Volume Wrangle:
2. Advect using Volume VOP SOP inside Solver SOP:
3. Run the simulation
You can also get different results by playing with the advection vector:
Here is one way:
1. Compute grad using VEX in a Volume Wrangle:
v@grad = volumegradient ( 0, "height", @P );
2. Advect using Volume VOP SOP inside Solver SOP:
3. Run the simulation
You can also get different results by playing with the advection vector:
v@grad = volumegradient ( 0, "height", @P ); vector up = { 0, 1, 0 }; vector tangent = cross ( v@grad, up ); v@grad = tangent + v@grad;
v@grad = volumegradient ( 0, "height", @P ); vector up = { 0, 1, 0 }; vector tangent = cross ( v@grad, up ); v@grad = tangent;
Edited by animatrix_ - March 29, 2024 09:50:18
Houdini Indie and Apprentice » Finding the source code or how the minpos function works
- animatrix_
- 4504 posts
- Online
Alt_stageanimatrix_
I asked SESI many times to add this functionality, and they said they didn't have any plans to do so.
Thanks for your reply!
Over the past few days, I managed to reproduce the minpos functionality on VEX working for polygonal meshes (the task turned out to be quite extensive since edges with points also need to be taken into account). My code at least gives the same result, but it takes much longer than regular minpos with a large number of polygons (I would estimate the complexity as H*J Where H is the number of cells to move, and J is the number of polygons in the target geo). I tried not to use high-level functions and only used cross, dot, normolize, so that the code could be transferred to OpenCl with minimal changes. It's already obvious to me a few places where I can optimize this code in VEX, but I'm not sure how these optimizations will behave in OpenCl. Alas, I don’t know where to find execution time ratings for operations/functions for VEX and OpenCl (You can, of course, create your own rating using the performance tab, but it seems like that’s too much). I also wanted to have some kind of understandable guideline (something like SOLID), so that I could understand what exactly should not be done so as not to critically lose productivity specifically in VEX and OpenCl. If you can suggest something useful, I would be grateful!
I imagine SESI is using acceleration structures like Kd-tree to speed up the queries, otherwise the performance would tank while doing multiple queries or using a high res geometry.
Porting these to OpenCL you would have to use the appropriate data structures like hash grids.
If you can limit the types of geometry, you could reduce the amount of code you have to write. Otherwise xyzdist supports all kinds of geometry like NURBS albeit orders of magnitude slower than polygonal meshes (bug pending).
In any case closest point look ups, point cloud look ups, ray triangle intersections on arbitrary geometry are sorely missing in OpenCL.
As always SESI knows best.
Technical Discussion » Problem accessing attribute from a different point
- animatrix_
- 4504 posts
- Online
If you are creating new attributes, you can't access these in the same wrangle node for other elements as they are not created yet.
So like tamte said, you have to use 2 wrangle nodes.
If you compile them, you would get the same performance as if they were one node.
So like tamte said, you have to use 2 wrangle nodes.
If you compile them, you would get the same performance as if they were one node.
Houdini Indie and Apprentice » Finding the source code or how the minpos function works
- animatrix_
- 4504 posts
- Online
You have to find the source code for xyzdist as minpos is just an alias for xyzdist. But even if you find the source code, it would be extremely hard to implement it using OpenCL in a manner that's optimized for GPU. Performing closest point calculations on arbitrary geometry in OpenCL is not a trivial task.
I asked SESI many times to add this functionality, and they said they didn't have any plans to do so.
I asked SESI many times to add this functionality, and they said they didn't have any plans to do so.
Technical Discussion » What is the difference between =set() and ={}
- animatrix_
- 4504 posts
- Online
Hi,
{} only works when you use literal values inside. The {} syntax is designed for static, compile-time assignments rather than dynamic, runtime evaluations.
Use set() when you need to initialize vectors with dynamic values, computations, or function calls.
{} only works when you use literal values inside. The {} syntax is designed for static, compile-time assignments rather than dynamic, runtime evaluations.
Use set() when you need to initialize vectors with dynamic values, computations, or function calls.
-
- Quick Links