Transforms an image using polar inversion.
Custom multisample anti-aliasing (MSAA) as well as bilinear and full filtering options.
Can mirror or repeat outside bounds.
Can also be adapted to 2d or even 3d volumes. Though you would have to decide what to do with the 3rd dimension.
https://www.dropbox.com/s/b8mih5mj1heum24/PolarInversion_COP_Animatrix.otl?d...
2020-09-26 16:29:01 +0000 UTC
View Post
VEX Select Edges By Primitive Attribute SOP
Selects edges using a primitive attribute that have different values for each primitive of the edge.
This is a VEX-based operator, and it's much faster than the built-in Group from Attribute Boundary SOP, which is single-threaded. Multi-threaded operators are always preferred for scaleable performance. If you don't include unshared edges, it's even faster.
Half edges provide a lot of functionality when it comes to ...
2020-09-14 09:59:14 +0000 UTC
View Post
Subdivision surfaces are piecewise parametric surfaces defined over meshes of arbitrary topology.
It's an algorithm that maps from a surface to another more refined surface, where the surface is described as a set of points and a set of polygons with vertices at those points. The resulting surface will always consist of a mesh of quadrilaterals.
2020-09-13 05:53:22 +0000 UTC
View Post
We have already seen how to apply gradient ascent, descent and contour lines to heightfield like planar geometry. The same concept can be applied to heightfields.
Because heightfields are volumes, getting the gradient is very easy by using the volumegradient function. The normal of a heightfield is (0, 1, 0) if the heightfield is an XZ volume, meaning facing up. Getting the cross product of both of these vectors will give you the contour lines.
2020-09-07 11:11:28 +0000 UTC
View Post
Hey guys, I will be presenting for Singapore HUG on September 15 [9PM Singapore Time, 9AM Montreal/Toronto Time] about:
Retiming Ocean Spectra and the Pragmatic Approach to Solving Technical Problems in VFX
When you have complex ocean spectra layered together using masks with varying speeds, and even animated timescales, retiming them while keeping the same approved look becomes a technical challenge. In this lesson you will see how to achieve this as a procedural...
2020-09-04 08:39:33 +0000 UTC
View Post
When computing oriented bounding box (OBB), it's very desirable for the bounding box to be robust, i.e. not flip arbitrarily when the input geometry is animated.
Bound SOP doesn't support temporal data. To compute a robust oriented bounding box that takes temporal data into account, we first need to establish a static reference frame, create the oriented bounding box using this geometry and then transform the static oriented bounding box by the difference between the reference and...
2020-09-01 16:53:31 +0000 UTC
View Post
Now that we know about gradients, there is another concept that's related to them that can be acquired quite easily, and that concept is contour lines.
A contour line (also isoline) of a function of two variables is a curve along which the function has a constant value, so that the curve joins points of equal value. There are very interesting relationships between the gradients and the contour lines.
2020-09-01 06:50:37 +0000 UTC
View Post
Subdivide SOP previously implemented an improved OpenSubdiv Catmull-Clark and OpenSubdiv Bilinear algorithms using VEX, which handles a lot more topological cases and produces better results than the default OpenSubdiv algorithms for certain geometry, i.e. open polygonal curves, non-manifold geometry, mixed topology, etc.
Subdivide SOP now also provides the default OpenSubdiv Catmull-Clark and OpenSubdiv Bilinear algorithms, where the former is the new default algorithm. What I added on...
2020-08-24 05:04:42 +0000 UTC
View Post
We have implemented gradient ascent and descent on planar geometry, much like a terrain where we used the gradient of the height.
For an arbitrary geometry, what can we use as the cost attribute? One thing we can use is depth.
2020-08-23 13:49:21 +0000 UTC
View Post
Gradient descent is an optimization algorithm used to minimize some function by iteratively moving in the direction of steepest descent as defined by the negative of the gradient.
www.pragmatic-vfx.com
2020-08-16 08:15:20 +0000 UTC
View Post
After more than 5 months of unimaginable amount of work, I am proud to release my first in-depth Houdini course on VEX. More details in the video description and the website: www.pragmatic-vfx.com
Active Patreon members will receive additional discounts proportional to their lifetime support (25% of their lifetime support). Message me on Patreon for your discount coupon.
Enjoy!
2020-08-13 06:23:39 +0000 UTC
View Post
These are two of my favourite utility SOPs. They can make the handling of multiple attributes of all types and classes much easier, thus avoiding to write convoluted VEX code to do the same.
As you know VEX doesn't have generics like C++ or C#. Therefore handling multiple attributes of different types cause unnecessarily long and complex code. When we have to handle multiple classes, typically this results in multiple Attribute Wrangles or Attribute VOP SOPs.
Particularly Transfor...
2020-08-10 07:25:42 +0000 UTC
View Post
Rigid Transform SOP will now transform all appropriate attributes based on their type info using the computed transformation matrix.
https://www.dropbox.com/s/5bd7uftfqr33vhx/RigidTransform_SOP_Animatrix.otl?dl=1
2020-08-05 15:30:57 +0000 UTC
View Post
Good news: The course is ready to launch :)
Another good news: Due to a potential partnership with a major hardware manufacturer, I have to delay the launch by about a week or two max. We will discuss the specifics and how to proceed next week.
This will create a lot of value for both parties so it will prove to be useful for everyone. If a major hardware manufacturer believes that my product can add value to their brand, you can imagine how much value people working in our field ...
2020-08-05 15:30:22 +0000 UTC
View Post
Nearing the release, I wanted to post the table of contents of my upcoming VEX course for my patrons. I still have to do a few things left to do like the promo video, rendering everything, distribution, reviewing the scene files, etc. But the hardest part is finished at least after unimaginable amount of work.
Enjoy :P
2020-07-24 07:28:57 +0000 UTC
View Post
I have been working on an advanced VEX course for the last 5 months, that's 11+ hours, spanning more than 130 videos.
There will be more details in the upcoming weeks, as I am nearing the release, but I wanted to give patrons some sneak peek.
It will be a commercial course, but existing patrons will receive discounts proportional to their lifetime support.
It's a structured course where every single topic, concept and idea is planned in advance with no idle moments, dead spa...
2020-07-16 18:36:19 +0000 UTC
View Post
Subdivision surfaces are piecewise parametric surfaces defined over meshes of arbitrary topology.
It's an algorithm that maps from a surface to another more refined surface, where the surface is described as a set of points and a set of polygons with vertices at those points. The resulting surface will always consist of a mesh of quadrilaterals.
The most iconic example is to start with a cube and converge to a spherical surface, but not a sphere. The limit Catmull-Clark surface of...
2020-07-03 08:34:29 +0000 UTC
View Post
Computes the gradient of a scalar attribute using connectivity or proximity.
Gradient of a scalar value is an extremely useful concept, and even though we have this as volumegradient in Houdini in the form of a volume operation, it's still very beneficial to know how to compute this manually, particularly without using volumes.
PolyFrame SOP and Measure SOP also have methods to compute the gradient, but neither SOP can compute it for point clouds.
I used this exact tec...
2020-06-28 02:01:00 +0000 UTC
View Post
Instead of writing custom Python code like above to generate the tokens and labels for a parameter menu, listing the geometry’s attributes, you can use the hou.Geometry.generateAttribMenu function that's added and improved very recently:
https://www.sidefx.com/docs/houdini/hom/hou/Geometry.html
It has all kinds of options to filter by attribute size, type and clas...
2020-06-09 16:02:38 +0000 UTC
View Post
The natural progression from VEX Edge Divide to bilinear subdivision is quite linear. That's also why I started with Edge Divide first as a stepping stone, both in terms of relevancy to the previous topics that led up to that moment, as well as logically dividing up the tasks to fully implement Catmull-Clark subdivision in VEX.
The biggest challenges are not the algorithms per se, but setting up the code framework to first split up polygon edges, rebuild polygons, interpolate point, pri...
2020-06-03 10:35:57 +0000 UTC
View Post
Splits edges of polygons by a number of divisions.
Splitting edges of a polygon is pre-cursor to subdividing a polygon. So doing this will move you closer to implementing subdivision surfaces using VEX, if you choose to do it.
There are many ways to implement this. You can perform everything using a single detail wrangle, but that would be so slow and would not scale well.
You want to break down each step so that you can parallelize anything that can be parallelized.
T...
2020-05-22 19:34:42 +0000 UTC
View Post
Adaptively subdivides geometry using proximity look ups to another geometry.
Performance gains can range from 10 to 1000s of times over Houdini Catmull-Clark subdivision surfaces algorithm where the gains increase a lot more at higher subdivision levels. t0*2^n vs t0*5^n to t0*5.7^n where n is the number of iterations and t0 is the time it takes to cook the first iteration.
The new version is completely rewritten for performance, precision and accuracy. It's superior in every way ...
2020-05-02 05:01:00 +0000 UTC
View Post
This operator computes a transformation matrix using SVD (Singular Value Decomposition) by looking at the difference between 2 point clouds, which is projected into a rigid transform consisting of a rotation, non-uniform scale and translation. The resulting matrix is then used to transform the input geometry.
You can selectively choose to only transform, rotate, scale, or any other combination.
I will also add options to extract the transformation matrix and its components in th...
2020-04-18 13:12:25 +0000 UTC
View Post
This operator procedurally selects edge rings given an edge group.
It has the same performance characteristics of Select Edge Loop SOP, so expect same speed gains over the native methods.
I also want to extend both of these SOPs to allow intelligent edge pairing. For example if you select 2 edges in the same loop/ring, and there are gaps between them, then it will only select the edges in between, vs if there are no gaps or if the selected edge is the only edge in the entire loop/...
2020-04-01 10:52:19 +0000 UTC
View Post
I did a comparison of 3 methods of selecting edge loops from a given edge group. To my surprise my Select Edge Loop SOP I wrote back in 2014 is 35x faster than both the Group Find Path SOP which is a compiled C++ SOP node and the hou.Geometry.edgeLoop Python function which if I am not wrong, simply calls the same HDK function that's available as an interactive modeling operation. If so, that seems slow for a C++ function for selecting edge loops compared to a VEX code that does the same.
<...
2020-03-14 06:59:29 +0000 UTC
View Post
PCA SOP now uses SVD (Singular Value Decomposition) to compute the PCA, instead of EVD (Eigen Value Decomposition).
SVD is more precise, robust and numerically reliable than EVD.
The new version is completely redesigned, where the computed eigen vectors and the orient attribute will be on the points, and P will represent centroid (mean), unless disabled in the point cloud method.
Depending on the method used, it will either create a single point for the entire point cloud, f...
2020-02-17 13:00:01 +0000 UTC
View Post
In this video I will show you some of the inner workings of the context-sensitive rule-based hotkey system that I implemented and one I have been using for a while to speed up my workflow inside Houdini.
It's a very light-weight and flexible system that allows an arbitrary number of actions to be assigned to any key, with extensive modifier key and state support (Ctrl, Shift, Alt, Space, LMB, MMB, RMB, selection state). It's deeply integrated into the overlay network editor workflow.
2020-01-18 11:24:45 +0000 UTC
View Post
2019 is about to end, which will start a new decade. I hope the new year will prove to the best one there is. I wish everyone happy holidays.
Always keep learning and hustling. The best things are yet to come 😃
2019-12-27 07:30:00 +0000 UTC
View Post
In this video I will go through the GUI customizations I did for Houdini 18. There will be another video for the new hotkey system I implemented after I finish the implementation and post it on patreon. So let's get into it.
2019-12-26 15:41:23 +0000 UTC
View Post
Setup video: https://vimeo.com/390438508/0e1ba34f29 https://www.dropbox.com/s/2tc542a24tbmnqx/supercharge.zip?dl=1
I made a number of modifications to the standard Houdini GUI that focuses on increasing the productivity by maximizing the screen estate to its limits. Here are some of the changes:
...
2019-12-13 14:16:50 +0000 UTC
View Post