Metadata-Version: 2.4
Name: houdini-node-library
Version: 0.1.0
Summary: Houdini Node Library: save Houdini nodes as Hscript (cmd) and recall them from a standalone browser app
Author: hamu-dev
License-Expression: MIT
Keywords: houdini,sidefx,node,library,hscript
Classifier: Development Status :: 3 - Alpha
Classifier: Intended Audience :: Developers
Classifier: Environment :: Win32 (MS Windows)
Classifier: Environment :: X11 Applications :: Qt
Classifier: Operating System :: Microsoft :: Windows
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Classifier: Topic :: Multimedia :: Graphics :: 3D Modeling
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: PySide6
Requires-Dist: Pillow
Requires-Dist: markdown-it-py
Requires-Dist: mdit-py-plugins
Provides-Extra: dev
Requires-Dist: pytest; extra == "dev"
Requires-Dist: pytest-qt; extra == "dev"
Dynamic: license-file

# Houdini Node Library (HNL)

Houdini のノードを Hscript (`nodes.cmd`) として保存し、独立したブラウザアプリから呼び出すツールです。
選択ノード、ネットワーク全体、シーン全体を登録できます。登録した内容は、現在のネットワークへの追加、新規シーンへのインポート、シーンを開く、のいずれかで復元します。

## 必要環境

- Windows
- Houdini 20.5 / 21.0 / 22.0（動作確認は 22.0.429。20.5 と 21.0 は Python 3.11 用の起動フックを同梱しています）
- Python 3.11 以降（アプリ本体用。Houdini 内蔵の Python とは別です）
- TortoiseSVN（任意。SVN でバージョン管理するときだけ。コミット・履歴・差分の画面に使います）

## インストール

1. pip で導入します（仮想環境の利用をおすすめします）。PySide6 などの依存も一緒に入ります。

   ```
   python -m venv hnl-env
   hnl-env\Scripts\pip install houdini-node-library
   ```

2. Houdini のユーザー設定に package を導入します。

   ```
   hnl-env\Scripts\hnl-houdini install
   ```

   `Documents\houdini22.0\packages\hnl.json` が作られます。別の版は `--houdini-version 21.0`、設定フォルダが標準の場所に無いときは `--prefs-dir <フォルダ>` で指定します。`hnl-houdini status` で導入状態を、`hnl-houdini uninstall` で撤去（`hnl.json` の削除）ができます。

3. Houdini を再起動します。通常どおり起動した Houdini（GUI）では、起動時にブリッジが自動で立ち上がります。ブリッジは `127.0.0.1` だけで待ち受けます。

4. アプリを起動します。

   ```
   hnl-env\Scripts\hnl
   ```

   コンソールは出ません。`python -m hnl` でも起動できます。起動済みのときは、新しいウィンドウを作らず既存のウィンドウが前面に出ます。Houdini のシェルフ「HNL」の `Open Library` からも起動できます。

`hnl.json` には、いま使っている Python の場所が書かれます。Python の環境を作り直したり移動したりしたときは、`hnl-houdini install` をやり直してください。

## 5 分で試す

1. `hnl` で起動します。「ルートフォルダを追加してください」と出るので「設定を開く」を押します。
2. 「追加...」で空のフォルダを選び、OK を押します。これがライブラリのルートです。
3. Houdini（package 導入済み）でノードを作って選択し、シェルフ「HNL」の `Register to Library` を押します。ノードを右クリックして `HNL: Register to Library` でも開けます。
4. 登録画面が開くので、名前（必要ならプロジェクト・部署・タグ）を確認して「登録」を押します。
5. ブラウザでアイテムを選び、「現在のネットワークへ追加」を押します。確認ダイアログで「インポート」を押すと、Houdini にノードが復元されます。

詳しい使い方は [docs/user-guide.md](docs/user-guide.md)、保存形式は [docs/format.md](docs/format.md)、セキュリティと信頼モデルは [docs/security.md](docs/security.md) を見てください。

## 開発者向け

ソースから動かすときの手順です。

```
python -m venv .venv
.venv\Scripts\pip install -e .[dev]
.venv\Scripts\hnl-houdini install      # ソースの Houdini 側ファイルを読む hnl.json を作る
HNL.bat                                  # または .venv\Scripts\python -m hnl
```

フォルダ構成:

```
src/hnl/              アプリ本体 (core / vcs / houdini / ui)
src/hnl/_houdini/     Houdini 側ファイル一式（python/hnl_bridge, python3.11libs, python3.13libs, toolbar, OPmenu.xml）。wheel にも同梱される
tests/                pytest（tests/houdini は Houdini を使う検証スクリプト）
tools/                デモライブラリ生成などの補助スクリプト
docs/                 利用者向け文書、設計メモ、検証結果
HNL.bat               開発用の起動バッチ（リポジトリの .venv を使う）
```

テストの実行:

```
.venv\Scripts\python -m pytest -q --ignore=tests/houdini
"%HFS%\bin\hython.exe" tests\houdini\run_tests.py
```

`tests/houdini/` のスクリプトは Houdini が必要です。`run_tests.py` は `hython.exe` で、`run_e2e.py` などは `.venv\Scripts\python` で実行します（実行すると Houdini が起動するものがあります）。

配布物（wheel と sdist）は `python -m build` で作ります（`pip install build` が必要）。

## 既知の制限

- 保存形式は cmd のみです。`.hip` ファイルは扱いません。
- ハードロックしたノードのジオメトリは保存されません（フラグだけ残り、復元後は空になります）。
- ノードグループは保存されません。
- 選択外のノードからの入力接続は、復元後に失われます。選択外へのチャンネル参照は参照切れになります。
- 絶対パスで書いたエクスプレッションは、復元後も元のパスを指します。
- ビューポート撮影の画像に Houdini のロゴ透かしが入ることがあります（Apprentice など、ライセンスの種類によります）。
- バージョン管理は SVN のみです。
- Windows 専用です。
- cmd は実行されるコードです。信頼できる人のアイテムだけをインポートしてください。検査・承認・限界の詳細は [docs/security.md](docs/security.md) を見てください。

## ライセンス

MIT License です。全文は `LICENSE` を参照してください。
