# 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`): ```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-Module - `python_panels/` → `.pypanel` Interface-Dateien - `toolbar/` → Shelf-Tools - `help/` → Hilfedateien - `config/` → 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`**: ```json { "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.json` mit `hpath`, `env`, `load_package_once` - Optional: `enable`-Expression für Houdini-Version-Check ### Schritt 2: Python Panel als Interface registrieren - `hermes_bridge.pypanel` erstellen - Panel-Klasse von `hou.PanelInterface` ableiten (statt `QWidget`) - `show()` läuft dann über `hou.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.py` fü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: true` im JSON → erscheint im Houdini Package Browser - `recommends`/`requires` für Abhängigkeiten --- ## Offene Fragen 1. **Repository-Pfad**: Soll das Git-Repo direkt als Package-Verzeichnis dienen, oder ein separates `package/`-Subdir? 2. **Auto-Start**: Soll der Port automatisch beim Houdini-Start geöffnet werden? 3. **Updates**: `git pull` reicht — oder brauchen wir einen expliziten Update-Button im Panel? 4. **Multi-Session**: Mehrere Houdini-Instanzen auf verschiedenen Ports — relevant?