docs: Package-System Migrationsplan (offizieller Houdini-Standard)
This commit is contained in:
@@ -0,0 +1,124 @@
|
||||
# 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?
|
||||
Reference in New Issue
Block a user