I decided to come back to this to get it working then keep working on the other tool
A crossplatform Houdini project management and pipeline tool for smaller teams, students, and classrooms.
Pyrsomes are actually colonies of small jellyfish creating a whole. I thought that was a fun way to think about group creative projects. In a way this tool helps multiple people be part of a whole, and because it's houdini, life, mathematics and growth are common insterests of houdini artists.
This was developed for my needs during my senior project using Houdini with a small team. I needed to ensure the project enviornment was the same accross computers and platforms. Additionally I needed a way to run the tool on it's own without needing to configure each computers python enviornment.
- Refactor main file into a library to clean up code
- Build standalone app for each platform
- add support for choosing houdini versions - currently 18.5.759 is hardcoded in for my project
- refactor to properly serialize data with yaml and only use env files for enviornments
- Implement unit testing
- Implement project scanning
- refactor print statements for an actual logging system
- impliment CLI tool that lets you specify a YAML file to use a project template
- create better documentation
- add support for game projects with unity and unreal and possibly godot
- add support for houdini engine and respective game engines
- add hou.py configuration for opening houdini projects
- new file
- default node setup
- possible branch project name pyrasoma?
- possibly rewrite in rust
- add support for houdini package management
- use yaml for configuration
- Add database for viewing assets in project and dependencies
- add tool for setting up project templates
- add integration with version control
- tightly integrate USD
- network support
- support renderfarm setups
- tool for documenting project
- project report generator
- Run it as a python script from the cloned repo.
- Integrate it into you're system on UNIX systems.
- Use the compiled versions and rus as an executable.
usage: main.py [-h] [-pn PATH_PROJECT] [-un [GUI_PROJECT]] [-cn [CURRENT_DIR_PROJECT]] [-pl [LIST_PROJECTS]] [-rs [RESCAN_DIRS]]
[-cp [CLEAR_CACHE]] [-i [INIT]] [-I [INIT_ONLY]] [-l [LOAD_LAST]] [-? [INFO]]
optional arguments:
-h, --help show this help message and exit
-pn PATH_PROJECT, --path-project PATH_PROJECT
create new project at input path
-un [GUI_PROJECT], --gui-project [GUI_PROJECT]
create new project at location with gui
-cn [CURRENT_DIR_PROJECT], --current-dir-project [CURRENT_DIR_PROJECT]
create new project at current path
-pl [LIST_PROJECTS], --list-projects [LIST_PROJECTS]
List currently cached projects
-rs [RESCAN_DIRS], --rescan-folders [RESCAN_DIRS]
rescan cached directories
-cp [CLEAR_CACHE], --clear-project-cache [CLEAR_CACHE]
clear project cache
-i [INIT], --init [INIT]
Forces initialization
-I [INIT_ONLY], --init-only [INIT_ONLY]
Forces ONLY the initialization step
-l [LOAD_LAST], --load-last [LOAD_LAST]
Load last opened file
-? [INFO], --info [INFO]
Shows another help file
If you want to use source code and not the docker image make sure you create a virtual enviornment and then use the
requirements.txt
to install the dependencies.
easiest to set up with docker/podman
creat requirements text pip3 freeze > requirements.txt
run podman build -t pysoma .
or
download the image
When running the docker image make sure you enable user input with the right flag
podman run -it pysoma
[!NOTE] I recommend creating an alias for the docker container so you can run pysoma without typing out all the docker commands.
- Checks if there are any projects in the current directory of the script/app
- If there are none it creates one after asking for a name
- Asks user to create or open a shot
- sources houdini, sets enviornment variables, opens houdini
You can customize this behavior, for example you can add directories for the tool to scan for existing projects.
It saves a list of the existing projects in a hidden temp.env file in the same directory as the script or executable.
Each project will have an env file that shouldn't be pushed to a project repo as it will hold that users paths.
Make sure and set up a python virtual env - I used venv - using the requirements.txt
I'm no python expert and would love input, and fixes, especially in development workflows, and deployment systems and such. I'm still learning, but I hope this is useful.
Hope this helps someone else, If you have questions send me a message.