4.5 KiB
4.5 KiB
Hermes-Houdini Bridge — Offizielle Houdini-Package-Integration
Recherche-Ergebnis
Houdini hat seit Version 18 ein offizielles Package-System (JSON-basiert), das das alte houdini.env ablöst. Das ist der korrekte Weg, Plugins, Python Panels und Shelf-Tools zu installieren — ohne scripts/python/ oder toolbar/ manuell zu befüllen.
Wie Houdini Packages funktionieren
~/houdini21.0/
├── packages/ ← Houdini scannt dieses Verzeichnis beim Start
│ └── hermes_houdini_bridge.json ← Package-Descriptor (zeigt auf unser Plugin)
│
└── (keine manuellen scripts/python/, toolbar/, python_panels/ mehr nötig!)
Package-Descriptor (hermes_houdini_bridge.json):
{
"hpath": "/pfad/zum/plugin",
"env": [
{"HHB_PATH": "/pfad/zum/plugin"}
],
"load_package_once": true
}
hpath prepended das Plugin-Verzeichnis in $HOUDINI_PATH. Houdini findet dann automatisch:
scripts/python/→ Python-Modulepython_panels/→.pypanelInterface-Dateientoolbar/→ Shelf-Toolshelp/→ Hilfedateienconfig/→ Konfiguration
Keine manuelle Installation in ~/houdini21.0/ nötig — das Plugin lebt in einem eigenen Verzeichnis (z.B. Git-Repo).
Python Panel Integration
Statt exec(open(...).read()); show() registriert man ein .pypanel-File:
python_panels/hermes_bridge.pypanel:
{
"interface": "hermes_bridge_panel",
"label": "Hermes Bridge",
"icon": "MISC_python",
"help_url": "https://git.niklashmotion.art/Hermes/hermes-houdini-bridge"
}
Dann via Houdini-Menü: Windows → Hermes Bridge — kein Python-Shell-Pasten mehr nötig.
Vorteile gegenüber aktuellem Ansatz
| Aktuell | Package-System |
|---|---|
exec(open().read()) im Python Shell |
Menü-Eintrag oder Shelf-Button |
Manuelles Kopieren nach scripts/python/ |
git clone + 1 JSON-Datei |
| Kein Update-Mechanismus | git pull = Update |
| Python-Panel nur per Code aufrufbar | Registriert im Windows-Menü |
| Keine Versionierung im Houdini-Kontext | Package-Browser zeigt installierte Version |
Ziel-Struktur
hermes-houdini-bridge/ ← Git-Repo, überall clonbar
├── hermes_houdini_bridge.json ← [NEU] Package-Descriptor (wird nach ~/houdini21.0/packages/ symlinked)
├── python_panels/ ← [NEU] Houdini findet Panels automatisch
│ └── hermes_bridge.pypanel
├── scripts/
│ └── python/
│ ├── hermes_bridge_panel.py ← UI-Klasse (unverändert, aber mit PanelInterface)
│ └── hermes_bridge_core.py ← [NEU] Bridge-Logik als Modul (wiederverwendbar)
├── toolbar/
│ └── hermes_bridge.shelf ← Shelf-Button (optional)
├── help/ ← [NEU] Doku-Integration
│ └── index.html
├── hermes/ ← hhb Client (unverändert)
│ └── bin/hhb
├── examples/
├── docs/
└── README.md
Implementierungs-Schritte
Schritt 1: Package-Descriptor erstellen
hermes_houdini_bridge.jsonmithpath,env,load_package_once- Optional:
enable-Expression für Houdini-Version-Check
Schritt 2: Python Panel als Interface registrieren
hermes_bridge.pypanelerstellen- Panel-Klasse von
hou.PanelInterfaceableiten (stattQWidget) show()läuft dann überhou.PanelInterface.showPanel()
Schritt 3: Bridge-Logik extrahieren
hermes_bridge_core.py: Port-Open/Close, Status-Check als sauberes Modul- Panel nutzt das Modul → testbar, wiederverwendbar
Schritt 4: Installation vereinfachen
install.sh: Symlink des.json-Descriptors nach~/houdini21.0/packages/git clone= Installation,git pull= Update- Optional:
install.pyfür Cross-Plattform (Windows/Mac)
Schritt 5: Auto-Start (optional)
scripts/456.py: Wird beim Houdini-Start ausgeführt- Kann automatisch den Port öffnen oder das Panel anzeigen
Schritt 6: Package-Browser-Support
show: trueim JSON → erscheint im Houdini Package Browserrecommends/requiresfür Abhängigkeiten
Offene Fragen
- Repository-Pfad: Soll das Git-Repo direkt als Package-Verzeichnis dienen, oder ein separates
package/-Subdir? - Auto-Start: Soll der Port automatisch beim Houdini-Start geöffnet werden?
- Updates:
git pullreicht — oder brauchen wir einen expliziten Update-Button im Panel? - Multi-Session: Mehrere Houdini-Instanzen auf verschiedenen Ports — relevant?