Files

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-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:

{
    "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?