Found 17 posts.
Search results Show results as topic list.
H20 Tech Art Challenge » Congratulations
- aaronsmithtv
- 17 posts
- Online
Good luck to all of the awesome entrants, and congratulations to everyone who submitted their work. I am really excited to try out some of these tools!!
H20 Tech Art Challenge » Best Houdini Utility Entries
- aaronsmithtv
- 17 posts
- Online
Hello everyone! I am really excited to share a utility that adds some useful, fun and interactive texturing functionality to Houdini, Texture Stamp. The idea of this HDA is to allow texturing to be a procedural workflow within Houdini.
When an artist at a studio is assigned many assets to add embellishment to (using Mari for example), this is a lengthy labor intensive task. With Texture Stamp, projecting any number of textures becomes an automated part of your toolset, with the same level of interactivity and high performance found elsewhere.
The tool includes a well documented, complex Python viewer state with intuitive keyboard shortcuts and key-binds, as well as extended functionality that handles automated UDIM processing, OCIO and custom viewport drawing. In the spirit of Houdini, the core image processing of the tool is kept open as an editable subnet, and the code has been designed around modular simplicity, where a studio may want to extend functionality with custom tools and pipeline integration.
An example scene, demo gifs, all open-source commit history and 6 example sticker images can be found on the GitHub repository for the Texture Stamp HDA. [github.com]
Thanks for taking the time to look at my HDA, feel free to ask any questions! I hope you all enjoy it as much as I enjoyed creating it.
When an artist at a studio is assigned many assets to add embellishment to (using Mari for example), this is a lengthy labor intensive task. With Texture Stamp, projecting any number of textures becomes an automated part of your toolset, with the same level of interactivity and high performance found elsewhere.
The tool includes a well documented, complex Python viewer state with intuitive keyboard shortcuts and key-binds, as well as extended functionality that handles automated UDIM processing, OCIO and custom viewport drawing. In the spirit of Houdini, the core image processing of the tool is kept open as an editable subnet, and the code has been designed around modular simplicity, where a studio may want to extend functionality with custom tools and pipeline integration.
An example scene, demo gifs, all open-source commit history and 6 example sticker images can be found on the GitHub repository for the Texture Stamp HDA. [github.com]
Thanks for taking the time to look at my HDA, feel free to ask any questions! I hope you all enjoy it as much as I enjoyed creating it.
3rd Party » Houdini Docker - Containerize & automate Houdini installs
- aaronsmithtv
- 17 posts
- Online
Datagen
Hi Aaron!
Thank you for your development!
I faced some requirement/idea: Houdini HQueue server as application for "Truenas scale". That will be great to move the server form one of clients machines.
Thanks again
Andrey
Hey Andrey, Houdini Docker creates a ready-to-use, base Houdini installation process using Debian. Provided that you're able to support containerization through Docker then in theory the process should be compatible with any version of Linux, including TrueNAS SCALE.
You could begin by changing around some install instructions in the core Dockerfile to install only HQueue, creating your ideal image that way. What is your intended approach for using HQueue and Docker? I am happy to lend assistance if I can know a little more about what you're trying to use Houdini Docker for
Houdini Lounge » Are the Annecy, Paris HIVE or SolarisWorkshop videos posted?
- aaronsmithtv
- 17 posts
- Online
3rd Party » Houdini Docker - Containerize & automate Houdini installs
- aaronsmithtv
- 17 posts
- Online
graham
Hey Aaron, thanks for doing all this!
I've been building my own image for spinning up automated testing of my projects and thought I'd give your stuff a shot to reduce stuff I need to manage!
Overall I didn't really have any issues at all getting my stuff set up that weren't really my own. My only comment I suppose would be the lack of python in the image as I needed Python for a bunch of stuff. Given the amount of stuff necessary for it, it's probably not the most friendly for image size so it can make sense leaving it out by default. Install it easy so it's not a huge issue.
Another thing I ran across was trying to use your sesiweb package inside the container to help set up licensing (as opposed to my own to reduce stuff I'd need to vendor). Despite the project listing python-3.7+ it looks like you're using some of the type hint unioning that was added in 3.10 so it won't run under 3.9. It seems that 3.9 is also the latest release supported in Debian 10's repo so you're left with compiling from src to get newer versions. Not a big deal but just wanted to highlight it.
Thanks again for all the work!
Hey Graham, it's great to see that you're happy using sesiweb and Houdini-Docker, even with all of the bugs haha! I managed to get a free moment today and fixed the compatibility issues you were having in 0.1.1 so if you'd like to use the latest pypi wheel on Debian 10 you are free to do so
drew
Hi Aaron,
Really interested in this work, and timely as I'm currently trying to automate building a hqueue farm. In the past I've done it with cobbled together scripts and files shared via NFS mounts, but now that hqueue has python3 support it's time to modernise.
At the moment I get this error if I try and run houdini with your container. Hython and hscript work fine. I'm running on Ubuntu 22.04. (For my purposes I'll mostly be running headless tasks.)
root@539d5b0c2631:/opt/hfs19.5# houdini
/opt/hfs19.5/bin/houdini-bin: error while loading shared libraries: libsmime3.so: cannot open shared object file: No such file or directory
Cheers,
Drew
This has now been fixed in 0.1.1! You should be able to use the GUI version of Houdini from the latest hbuild image, or Houdini-Docker installation now.
3rd Party » Houdini Docker - Containerize & automate Houdini installs
- aaronsmithtv
- 17 posts
- Online
drew
Hi Aaron,
Really interested in this work, and timely as I'm currently trying to automate building a hqueue farm. In the past I've done it with cobbled together scripts and files shared via NFS mounts, but now that hqueue has python3 support it's time to modernise.
At the moment I get this error if I try and run houdini with your container. Hython and hscript work fine. I'm running on Ubuntu 22.04. (For my purposes I'll mostly be running headless tasks.)
root@539d5b0c2631:/opt/hfs19.5# houdini
/opt/hfs19.5/bin/houdini-bin: error while loading shared libraries: libsmime3.so: cannot open shared object file: No such file or directory
Cheers,
Drew
Hey Drew, thanks for checking out my project, I hope it will help you automate your hqueue farm
I suppose I hadn't thought too much about the GUI libs, I designed the image itself around saving space to run Hython and the other headless Houdini processes. Now I'm looking at the libs though, it seems that they don't take up much space at all (around 6mb) and not installing them prevents you from launching houdini (clearly a bad idea on my part!)
Run this command in your container for now to get it running, and I'll create an issue on GitHub:
apt-get update && apt-get install -y libglu1 libsm6 bc wget libnss3 libxcomposite1 libxrender1 libxrandr2 libfontconfig1 libxcursor1 libxi6 libxtst6 libxkbcommon0 libxss1 libpci3 libasound2
3rd Party » Houdini Docker - Containerize & automate Houdini installs
- aaronsmithtv
- 17 posts
- Online
For anyone interested, I have also open sourced and added the Python driver I use for accessing the SideFX Web API, sesiweb 0.1.0 [github.com], to pypi.
Import it into your scene by doing the following:
And then import the session class as follows:
You can find more information in the sesiweb GitHub README [github.com], but if anyone wants to start quickly, here is a similar script to what I use in Houdini-Docker, using sesiweb
sesiweb has full typehint support, input validation using Pydantic, custom exceptions and class test coverage. Enjoy!
Import it into your scene by doing the following:
pip install --upgrade sesiweb
And then import the session class as follows:
from sesiweb import SesiWeb
You can find more information in the sesiweb GitHub README [github.com], but if anyone wants to start quickly, here is a similar script to what I use in Houdini-Docker, using sesiweb
from sesiweb import SesiWeb from sesiweb.model.service import ProductBuild sesi_secret = "your_secret_key" sesi_id = "your_client_id" sw = SesiWeb(sesi_secret, sesi_id) # Get the most recent Houdini product builds build = {"product": "houdini", "platform": "linux"} # Get the latest Houdini build build = sw.get_latest_build(prodinfo=build, only_production=False) # Get the download URL, filename and hash of the build build_dl = sw.get_build_download( prodinfo=ProductBuild(**build.dict()) print(build_dl)
sesiweb has full typehint support, input validation using Pydantic, custom exceptions and class test coverage. Enjoy!
Houdini Lounge » Houdini docker image?
- aaronsmithtv
- 17 posts
- Online
I may be too late in this topic, but if anyone is still interested you can get pre-built Houdini Docker images here [hub.docker.com] or customize your own Houdini-to-Docker workflow with my automation tool here [github.com]
3rd Party » Houdini Docker - Containerize & automate Houdini installs
- aaronsmithtv
- 17 posts
- Online
Hey everyone!
I'm super excited to share with you a project I've been working on called Houdini-Docker [github.com]; An open-source automation utility designed to make containerizing Houdini simple & easy.
Here's why you might want to check out Houdini-Docker:
All standard base images come with a full Houdini installation built on Debian 11 slim. The PATH environment variable is set for easy access to processes such as hython and hserver.
Quick-Start:
To get started with the most recent production build, just execute the following: (requires a Docker installation)
1. Pull the latest production build image (19.5.569-base as of 30/03/2023)
2. Run a temporary container from the pulled image
3. Start a sesinetd instance (The command line Houdini license server), and verify that you have license entitlements with sesictrl (The command line equivalent of HKey)
You should receive a prompt to enter your SideFX account credentials, and upon logging in, a list of license entitlements. Type q to quit the license utility and exit to close the container.
If you have specific requirements, such as another Linux distro, or you have more granular requirements for packages, builds, etc, simply forking the repository will enable the auto-build GitHub actions workflow to work with whatever additions you make.
I want to use Houdini-Docker, but I don't know what for!
Many studios will likely have their own CICD [about.gitlab.com] workflows that implement similar processes - but for those who are undergoing the task of deploying Houdini in some way, for example to a cloud platform, or as a license sever, it can be difficult to maintain a tool such as this (especially when many products are being juggled). Houdini-Docker aims to alleviate the difficulties in automating a highly customizable Houdini build process using Docker, while Hbuild is a repository for pre-built Houdini installation images based on Debian.
Here are some ideas for projects you can try out using a Houdini-Docker image:
I'd love to hear your thoughts, feedback, and any ideas you might have. If you need any specific builds just let me know, and I'll add them to the Docker Hub repository. PRs and issues on GitHub are totally welcome!
You can find Houdini-Docker on GitHub here: https://github.com/aaronsmithtv/houdini-docker [github.com]
You can find the image repository Hbuild here: https://hub.docker.com/r/aaronsmithtv/hbuild [hub.docker.com]
I'm super excited to share with you a project I've been working on called Houdini-Docker [github.com]; An open-source automation utility designed to make containerizing Houdini simple & easy.
Here's why you might want to check out Houdini-Docker:
- It provides an alternative to the current standard workflow, which involves manual installation and Dockerfile configuration.
- It offers a trustworthy source of Houdini installation images for those who need security, on Docker Hub [hub.docker.com]; As all workflow runs are publicly visible for transparency.
- Images generated by Houdini-Docker are approximately 65% smaller than the most popular Houdini installation images, saving storage space and improving deployment speed.
- Keep up-to-date with the latest production builds within future Dockerfiles, without the need for executing pipeline scripts.
- Daily checks for the latest production builds, so new builds will always be available on Docker Hub within 24 hours.
All standard base images come with a full Houdini installation built on Debian 11 slim. The PATH environment variable is set for easy access to processes such as hython and hserver.
Quick-Start:
To get started with the most recent production build, just execute the following: (requires a Docker installation)
1. Pull the latest production build image (19.5.569-base as of 30/03/2023)
docker pull aaronsmithtv/hbuild:latest
2. Run a temporary container from the pulled image
docker run -it --rm --name houdini-container aaronsmithtv/hbuild:latest
3. Start a sesinetd instance (The command line Houdini license server), and verify that you have license entitlements with sesictrl (The command line equivalent of HKey)
sesinetd sesictrl redeem
You should receive a prompt to enter your SideFX account credentials, and upon logging in, a list of license entitlements. Type q to quit the license utility and exit to close the container.
If you have specific requirements, such as another Linux distro, or you have more granular requirements for packages, builds, etc, simply forking the repository will enable the auto-build GitHub actions workflow to work with whatever additions you make.
I want to use Houdini-Docker, but I don't know what for!
Many studios will likely have their own CICD [about.gitlab.com] workflows that implement similar processes - but for those who are undergoing the task of deploying Houdini in some way, for example to a cloud platform, or as a license sever, it can be difficult to maintain a tool such as this (especially when many products are being juggled). Houdini-Docker aims to alleviate the difficulties in automating a highly customizable Houdini build process using Docker, while Hbuild is a repository for pre-built Houdini installation images based on Debian.
Here are some ideas for projects you can try out using a Houdini-Docker image:
- A non-graphical Houdini instance as a web server using hwebserver [www.sidefx.com]
- A containerized license utility
- A containerized hqueue client
I'd love to hear your thoughts, feedback, and any ideas you might have. If you need any specific builds just let me know, and I'll add them to the Docker Hub repository. PRs and issues on GitHub are totally welcome!
You can find Houdini-Docker on GitHub here: https://github.com/aaronsmithtv/houdini-docker [github.com]
You can find the image repository Hbuild here: https://hub.docker.com/r/aaronsmithtv/hbuild [hub.docker.com]
Edited by aaronsmithtv - March 31, 2023 12:20:16
SideFX Labs Tech Art Challenge 2022 » Congrats to the winners
- aaronsmithtv
- 17 posts
- Online
3rd Party » Dune Solver
- aaronsmithtv
- 17 posts
- Online
SideFX Labs Tech Art Challenge 2021 » Congratulations to the Winners!
- aaronsmithtv
- 17 posts
- Online
SideFX Labs Tech Art Challenge 2021 » Best Houdini Utility Entries
- aaronsmithtv
- 17 posts
- Online
Hello everyone! I am pleased to share a utility that combines my love for digital painting, 2D animation and Houdini. Hpaint allows the user to draw paint strokes as quad; The idea is to have a similar experience to that of something like photoshop/toon-boom, with all of the added benefits of being able to use your strokes like you would any other geometry in Houdini. There is also functionality to use or ghost hpaint strokes that are time-dependent, allowing for multiframe animation.
Since this tool is so Python-heavy, I've also attempted to comment as much code as possible to help this tool become a little more educational in helping others understand viewer states and how SideFX' stroke functionality makes prototyping/implementing these kinds of tools really fun. I've also kept a changelog and some gifs for use-cases on github. [github.com]
Thanks for taking the time to have a look!
Since this tool is so Python-heavy, I've also attempted to comment as much code as possible to help this tool become a little more educational in helping others understand viewer states and how SideFX' stroke functionality makes prototyping/implementing these kinds of tools really fun. I've also kept a changelog and some gifs for use-cases on github. [github.com]
Thanks for taking the time to have a look!
Houdini Learning Materials » 1 Minute VEX
- aaronsmithtv
- 17 posts
- Online
It is that time once again!
Three new snippets - exploring the various creative usages of arrays in VEX. I hope you all enjoy!
1 Minute VEX X - weighted integer sampling - https://aaronsmith.tv/1-Minute-VEX-X [aaronsmith.tv]
Using sample_discrete() to make a weighted selection from an array.
1 Minute VEX XI - iterating over attributes (finding prim patch area) - https://aaronsmith.tv/1-Minute-VEX-XI [aaronsmith.tv]
Using uniquevals() and findattribval() to find the area of a prim patch (by attrib id)
1 Minute VEX XII - gradient estimation from neighbours - https://aaronsmith.tv/1-Minute-VEX-XII [aaronsmith.tv]
Using neighbours() to find all adjacent points and calculate a gradient vector with custom weights.
Three new snippets - exploring the various creative usages of arrays in VEX. I hope you all enjoy!
1 Minute VEX X - weighted integer sampling - https://aaronsmith.tv/1-Minute-VEX-X [aaronsmith.tv]
Using sample_discrete() to make a weighted selection from an array.
1 Minute VEX XI - iterating over attributes (finding prim patch area) - https://aaronsmith.tv/1-Minute-VEX-XI [aaronsmith.tv]
Using uniquevals() and findattribval() to find the area of a prim patch (by attrib id)
1 Minute VEX XII - gradient estimation from neighbours - https://aaronsmith.tv/1-Minute-VEX-XII [aaronsmith.tv]
Using neighbours() to find all adjacent points and calculate a gradient vector with custom weights.
Houdini Learning Materials » 1 Minute VEX
- aaronsmithtv
- 17 posts
- Online
Hello once again!
Since the last time I posted here I've added three new tutorials, all of which briefly cover textures, mapping and colour in VEX. Thanks to everyone once again for all of the support and useful suggestions!
1 Minute VEX VII - OCIO transformed attribute from image - https://aaronsmith.tv/1-Minute-VEX-VII [aaronsmith.tv]
Using colormap() and ocio_transform() to read an sRGB image and convert it to an ACES-compliant attribute.
1 Minute VEX VIII - sampling nearest texture with UDIM filename expansion - https://aaronsmith.tv/1-Minute-VEX-VIII [aaronsmith.tv]
Using xyzdist(), primuv() and colormap() to sample the nearest UDIM-friendly texture on a surface.
1 Minute VEX IX - triplanar mapping & projection - https://aaronsmith.tv/1-Minute-VEX-IX [aaronsmith.tv]
Using simple vector math, for loops and colormap() to create a triplanar projection.
Please feel free to PM me with any questions or suggestions.
Since the last time I posted here I've added three new tutorials, all of which briefly cover textures, mapping and colour in VEX. Thanks to everyone once again for all of the support and useful suggestions!
1 Minute VEX VII - OCIO transformed attribute from image - https://aaronsmith.tv/1-Minute-VEX-VII [aaronsmith.tv]
Using colormap() and ocio_transform() to read an sRGB image and convert it to an ACES-compliant attribute.
1 Minute VEX VIII - sampling nearest texture with UDIM filename expansion - https://aaronsmith.tv/1-Minute-VEX-VIII [aaronsmith.tv]
Using xyzdist(), primuv() and colormap() to sample the nearest UDIM-friendly texture on a surface.
1 Minute VEX IX - triplanar mapping & projection - https://aaronsmith.tv/1-Minute-VEX-IX [aaronsmith.tv]
Using simple vector math, for loops and colormap() to create a triplanar projection.
Please feel free to PM me with any questions or suggestions.
Houdini Learning Materials » 1 Minute VEX
- aaronsmithtv
- 17 posts
- Online
Hello everyone!
I'd like to thank you all for the interest the last time around, so I thought i'd celebrate by releasing the next 3 minutes of VEX; Exploring all things camera.
If you missed it the first time, every Monday at 12pm for the last month-ish I have been posting VEX mini-tutorial snippets on my website, the most recent of which can be found below. Enjoy!
1 Minute VEX IV - https://aaronsmith.tv/1-Minute-VEX-IV-V [aaronsmith.tv]
An introduction to NDC space, and using to/fromNDC() to scale objects without changing position relative to camera.
1 Minute VEX V - https://aaronsmith.tv/1-Minute-VEX-IV-V#1mv_v [aaronsmith.tv]
Using toNDC() and removepoint() to delete points that are not displayed on camera.
1 Minute VEX VI - https://aaronsmith.tv/1-Minute-VEX-VI [aaronsmith.tv]
Using intersect() and optransform() to delete points hidden by camera occluding geometry.
I'd like to thank you all for the interest the last time around, so I thought i'd celebrate by releasing the next 3 minutes of VEX; Exploring all things camera.
If you missed it the first time, every Monday at 12pm for the last month-ish I have been posting VEX mini-tutorial snippets on my website, the most recent of which can be found below. Enjoy!
1 Minute VEX IV - https://aaronsmith.tv/1-Minute-VEX-IV-V [aaronsmith.tv]
An introduction to NDC space, and using to/fromNDC() to scale objects without changing position relative to camera.
1 Minute VEX V - https://aaronsmith.tv/1-Minute-VEX-IV-V#1mv_v [aaronsmith.tv]
Using toNDC() and removepoint() to delete points that are not displayed on camera.
1 Minute VEX VI - https://aaronsmith.tv/1-Minute-VEX-VI [aaronsmith.tv]
Using intersect() and optransform() to delete points hidden by camera occluding geometry.
Houdini Learning Materials » 1 Minute VEX
- aaronsmithtv
- 17 posts
- Online
Hello everyone!
Every Monday at 12am for the last 3 weeks I have been uploading VEX snippets as mini-tutorials on my website: https://aaronsmith.tv/1-Minute-VEX [aaronsmith.tv]
Here, through ‘1 Minute VEX’, I'll try to walk you through some of the more obscure and advanced functions that exist, and add as much explanation as possible to accompany the images in text based form. Be warned, these are not for Houdini beginners!
Below is 1 Minute VEX III as an example; Let me know if anyone has any suggestions for improvement.
-
Every Monday at 12am for the last 3 weeks I have been uploading VEX snippets as mini-tutorials on my website: https://aaronsmith.tv/1-Minute-VEX [aaronsmith.tv]
Here, through ‘1 Minute VEX’, I'll try to walk you through some of the more obscure and advanced functions that exist, and add as much explanation as possible to accompany the images in text based form. Be warned, these are not for Houdini beginners!
Below is 1 Minute VEX III as an example; Let me know if anyone has any suggestions for improvement.
-
1 Minute VEX - Ray-Cast Ambient Occlusion
In this example, we begin by creating a variable for position - offsetting it from the surface very slightly to avoid unintended ray intersections.
Once we have assigned how many samples we want, and the hemispherical radius of our ambient occlusion (which determines how close geometry has to be to occlude), we use a for loop to iterate over each sample.
We then generate a random hemispherical direction using our point normal, and use that directional vector as the ray. If our ray hits geometry, its distance from initial position is fit within a 1-0 range - 1 being the closest a ray could possibly be, and 0 being the furthest.
This value is added and accumulated through the ‘ao’ variable, and then divided by the total number of samples added to the variable. We finally return the complement, in order to make close intersections dark, and distant rays / non intersections bright.
Edited by aaronsmithtv - Sept. 11, 2020 19:49:40
-
- Quick Links