Skip to content
Imre Tuske edited this page Jul 17, 2014 · 19 revisions

The main goal of qLib is to provide a collection of reusable assets that makes the everyday work of the Houdini artist easier. While there are other initiatives towards this same basic goal, we felt that our approach is different, and there is need for an actively maintained and coherently designed library.

We also hope that our library might become a valuable learning material about reusable tool building and problem solving in general.

Contents

Sections

Summary

Some highlights of what to expect in qLib:

  • Generation, manipulation and visualization of geometry attributes and groups
  • Scalars and direction vectors
  • Build attributes using rules (Attrib Builder) or volumetric shapes (Attrib Shape)
  • Get topology details to attributes (connected edges, etc.)
  • Modify attributes with various methods (remapping, direction reorientation, etc.)
  • Visualize attributes (scalars and vectors) and groups (point- and primitive-groups)
  • (...)
  • Boundary geometry generation and manipulation
  • Determine boundaries of animated geometry
  • Camera-related geometry: camera frustrum, camera plane (with from/to persp projection)
  • Clip geometry outside frustrum; keep all geometry within specified bounds; etc.
  • (...)
  • A complete deformer suite, implemented through a common deformer framework
  • The most common deformer types are available: Bend, Taper, Twist, Bias, etc.
  • Common framework provides standardized parameters, sophisticated placement controls, etc.
  • Even some default Houdini deformers are reimplemented using the framework
  • Additional "non-standard" deformers (deform by NURBS surface, point cloud, motion path, etc.)
  • (...)
  • Re-implemented versions of certain original Houdini operators
  • Multithreaded, very fast variants (Ray qL SOP, Scatter qL SOP)
  • Improved ("convenience") variants of original OPs (TimeBlend, Peak, PointJitter, etc.)
  • (...)
  • Other ways of generate and manipulate geometry
  • (...)
  • Workflow-related tools
  • Waypoint SOP: a FileCache SOP variant with important additions
    • Quick setup with many presets for various filename components (folder, name, extension, etc.)
    • When the node is deleted, it can clean up after itself by deleting the files on disk (optional)
    • Easy-to-setup saving of sub-frames
    • Options for building ROP networks to run multiple Waypoints in proper order!
  • Shot qL (OBJ): a single operator for storing all shot-related information (frame ranges, etc.)
  • Shot Builder (OBJ): for automatically importing many Alembic files into the scene
  • Environment qL (OBJ): automatic and manual setup of variables, etc.
  • (...)
  • A large collection of gallery items (node and subnet presets)
  • Lots of various stuff that is very useful but would be too inflexible to use as assets
  • Shelf tools
  • A small but very useful set of shelf tool items

Reliability and backward-compatibility

  • base:
  • General-purpose tools, similar to native Houdini OPs (smaller building block-style)
  • Tested extensively in productions, interoperate well with other OPs, has good usability, bugs ironed out
  • Considered final in terms of both function and parameters. Neither will change (except for bug fixes) to provide 100% backward compatibility, which considered to be a key factor.
  • future:
  • Tools that are in the progress of being developed and tested until they reach their mature form
  • Functionality and UI might slightly change (but with a good chance of being backward-compatible already)
  • Once a future asset is tested enough and found ready, it goes to base (or spec).
  • experimental:
  • Testing ground, the place for prototypes and ideas
  • No rules, no guarantees, no constraints: assets, functionality, parameter UIs change, come and go
  • Assets that users like or find useful will be moved to future
  • graveyard:
  • Obsoleted tools which will be completely removed on next release.

Detailed description

The library consists of two main sections. The base section provides general tools with similar purpose that of Houdini's native operators. These eliminate the need of recreating common setups time after time. These tools are designed to work together with each other and with Houdini's native toolset seamlessly. In the base section we are trying to create small and simple, interoperable tools, instead of complicated and/or monolithic assets.

Prototypes and idea sketches are placed into the experimental section. If it is agreed that an asset is indeed useful, it's moved into the future section. Once the implementation feels mature and the interface is stable enough, we move the asset into one of the main sections.

If it turns out that there is no need for a tool anymore it gets buried in the graveyard section. We keep them there until next release.

This whole sections thing might sound a bit awkward at first but it's there for the best interest of the users. The sections allow you to fine tune the way you use the library. If you only interested in the most useful and stable set of tools you can only include base. If it doesn't bother you to have some rarely used tools in your menus, you can install spec. If you like to live on the bleeding edge and don't mind to adapt your scenes to occasional changes you can include future. If you want to help us and test our new ideas you can even install the experimental section. And if we so decide to remove an asset the graveyard section is there for give you some time to adapt your scenes for the change.

Examples and documentation

Every asset in the main section has proper -- if sometimes minimalist -- documentation, in the same manner as Houdini's standard toolset. We also provide some example scenes that can make the understanding of the intended usage of the tools easier and more fun.

Availability

qLib is an open source project covered with the BSD licence. This -- besides other things -- means there's no company whose existence would jeopardize the availability of the library: qLib is here to stay. We hope it will also pick up some traction and will evolve with a fast pace, but even if it won't the distribution archives and the repository will be downloadable in the foreseeable future.