The egTools Library is a set of General Purpose Tools for SideFx Houdini. This includes Nodes like a Project Manager, custom FileCache Nodes, Volume Optimizations, VolumeDisplacement Nodes, a HexGrid, AtomArrays and Basic MoGraph Tools. See a few of this Nodes in Action Below or feel free to grab the Library directly from Github. Some of this is considered to be common Houdini Knowledge, but I like to package this stuff up so I can share it anyways.
The egLib consists of Assets and ShelfTools. To have a look at the ShelfTools scroll below. In the first part i will focus on the most important assets (for me in a daily workflow) of the Library. This might differ from your view :)
One of the Core Features of egTools is a set of Pipeline Nodes. The eg_project Node which exists on Object Level is the Main Node, which will set a series of Enviroment Variables for further usage by the eg_filecache Node, which exists on SOP-Level. The eg_project Node reads the current filename and sets the variables accordingly. On the other Hand this Variables also can be changed by the user and in turn will be written to disk, if selected. So there is no OS-Level saving of Files/worrying about filenames or else. Users also can choose to save incrementally and set a global Cache Version.
With this variables set the eg_filecache SOP comes into handy usage. This is a wrapper around the Houdini-Default filecache SOP, with a set of Variables and Dropdowns, included Versioning and the ability to move files on disk (which of course should be handled with care). The eg_filecace SOP builds the filestring by user-choiced Parameters from the Dropdowns on the properties Tab. This is useful since multiple presets, directories and especially versions can be handled easily. There Environment Variables are sourced from the eg_project Node.
Volume Compress (eg_volumecompress, eg_compressvdb)
Another Filemanagement Node, but more indirect. It compresses Volumes and VDBs to use less DiskSpace. In case of VDBs this is possible due to reduction of floating point accuracy from 32bit to 16bit, which in most cases is more than enough. Volumes can be masked by other volumes to reduce their size. This Methods allow reduction of file sizes up to 50%.
Volume Displacement (eg_volumedisplacement)
Since I sometimes need to look up this things I just packaged this up in a node. It mostly is a reminder for myself, but i this is also handy sometimes since it has a built in frequency map. Boundaries are not handled that well, this could be further improvement.
A Grid of Hexagonal Tiles, which I always wanted to make this for all kinds of fancy Sci-Fi Panels and stuff. Scaleable, mappable against pscale as well.
Atom Array (eg_AtomArray)
This is a feature known from other Softwares, but i needed this to build for another project in Houdini. So here you go. With Wires and Spheres and also detachable. I also can use custom meshes for the points via the second Input. There are also some quick MoGraph Node in the library aswell but for this i generally go for MOPS Tools.
Auto Unwrap and Transfer UVs from Low to HighPoly Mesh (eg_AutoUV_LowToHigh)
The SideFX Labs Team does really great work. Big Up to them and check out their tools! Sometimes the AutoUV can be quite slow and unstable (it´s still Beta, i know) on Ultra-High Res Meshes, like 3D-Scans. So i built a wrapper around some other nodes and the Labs-AutoUV for UVing a Low-Res Mesh and later Transferring the UVs over to the High-Res Mesh. This also takes it´s time but is quite a bit faster and with better feedback on the initial Unwrap. Also with writing to disk features again.
As mentioned above egLib also provides ShelfTools which are handy from time to time. You can find the most important features below.
The Script Saves the current File with a prefix for date and a suffix for the Version in it's current directory. If a Date is already present it will be replaced with the current date. If there is a Version found already, it will be increased by 1 and saved as such. An Example Filename with default configuration would be: YYMMDD_Filename_001.hip - This only can be changed from within the Python Script itself via an exposed variable at the very top, but feel free to do so.
This allows the user to import any supported GeometryFiles and lay the out per Object. If you have to import a bunch of Objects at the same time and want to keep separate Objects this can be a huge timesaver. There is also the additional Option to set the File-SOPs within the Geometry Nodes to Load the Geometry as Packed Primitves. Display will be set to Full Display however.
The Stringreplacer searches the entire Houdini Scene for Strings (eg. Textures, Materials, Geometry Files,...) and allows the user to filter the results against Contexts. Further a Search and Replace Function is provided to allow replacing of parts of the found strings. The Strings will display immediate feedback in the List. Changes to the Scene will only happen to the user-marked Orange Rows when hitting OK.
Match Transforms / Reset Transform
Sometimes it is handy to align (multiple) Objects quickly. So users can do this with this Script. There also is a second Version to reset Transform to Default Values.
To Pull and Push References of Nodes it is common to use Nulls in Houdini. So there is also a Script to created Named and Colored Nodes. OUT creates Black Ones. IN Greens. The script also prompts for a name.
Support & Download
At the moment only Windows is supported and tested, but this should work fine with Linux/MacOS as well as there are no OS-Level dependencies. The tools are open source and available on Github an can be downloaded for free. I do use them in Production however, so they should be safe. Bugs will be fixed asap on request. So feel free to contact me if you find any. Enjoy!