Houdini's built-in Resample COP only does Stretch. If you want a letterboxed fit, a fill that crops to the canvas edge, or a tiled repeat with mirroring, you're chaining nodes and computing UV offsets by hand — and redoing that math every time a resolution changes. If you want to resize by a reference image's resolution you need to add another node to the mix.
Scale COP is a free HDA that wraps the whole thing in one node. Pick a target resolution, choose a fit mode, optionally tile, pick a filter. Done. No manual offset math.
Fit modes: Distort, Fit (letterbox), Fill (crop to fill), Width, Height, None (1:1 pixel)
Tile modes: None, Repeat, Mirror X, Mirror Y, Mirror Both (with UV offset)
Filters: Point, Bilinear, Box, Bartlett, Catmull-Rom, Mitchell, B-Spline, Auto
Size reference input: connect any upstream node to drive the output resolution automatically — no manual width/height entry when your canvas size changes
Free download: https://github.com/kleer001/funkworks/releases/tag/scale_cop-v0.1.99 [github.com]
Houdini 20+, any edition. FX users: a build script is included so you can compile the HDA under your own license and avoid the Indie/Apprentice flag.
First Houdini release from Funkworks — a small open-source collection of free DCC tools built from real workflow problems. Feedback and bug reports welcome.
🐜 More free tools at https://github.com/kleer001/funkworks [github.com]
Scale COP — letterbox, fill, crop, tiling, and size-ref
139 1 1-
- kleer001
- Member
- 56 posts
- Joined: Jan. 2006
- Offline
-
- jlait
- Staff
- 6956 posts
- Joined: July 2005
- Offline
Cool! A note from the github:
Note that the cop wrangle is the same as the SOP Volume Wrangle. Thus it uses @resx/@resy for the resolution of the volume.
I haven't looked at the HDA, but using parameters to read the input size will run into issues when the network gets compiled so is not advised normally.
Note using COPs does mean you are bouncing back to the CPU so lose the advantage of the GPU. It maybe the same math could be done in an OpenCL COP....?
Very cool to see solutions being built!
@xres / @yres are always 0 inside COP wrangle context — Scale COP uses hidden spare parameters to pass resolution to VEX.
Note that the cop wrangle is the same as the SOP Volume Wrangle. Thus it uses @resx/@resy for the resolution of the volume.
I haven't looked at the HDA, but using parameters to read the input size will run into issues when the network gets compiled so is not advised normally.
Note using COPs does mean you are bouncing back to the CPU so lose the advantage of the GPU. It maybe the same math could be done in an OpenCL COP....?
Very cool to see solutions being built!
-
- Quick Links

