webServer は、Houdini 18.5 に搭載された Python モジュール。これにより、Houdini を Web Server と見立て、Python 経由でクライアント・サーバ処理が可能。 ここでは、この簡単な例を紹介する。
- Houdini 18.5.569/583 (Python 3)
1. 単純なクライアント・サーバモデル
形状ファイル (bunny.obj) と パラメータ値 (%) をクライアント側からサーバに渡し、サーバ上で Houdini を実行、PolyReduce ノードを使って指定パラメータでポリゴンを削減して、その結果を別ファイルで返す、ということを例として行う。
必要なファイル
- polyreduce_server.py (サーバ用 Python スクリプト)
- polyreduce_client.py (クライアント用 Python スクリプト)
- bunny.obj (入力ジオメトリ)
2. サーバの設定
- サーバとなるコンピュータには Houdini のインストールが必要。
- サーバとなるコンピュータでは http: による接続が許可されていることが必要。
- Command Line Tools を起動し、Hython で以下のコマンドを実行。
hython polyreduce_server.py
3. クライアントの設定
- クライアント側では Houdini のインストールは必須ではないが、ここでは Houdini をインストールしたとみなし Hython を使う。
- この例ではサーバとクライアントは同じコンピュータ上で別のターミナルシェルから起動している。
- hython polyreduce_client.py の中は以下のようになっている。
import webapiclient service = webapiclient.Service("http://localhost:8008/api") to_reduce = webapiclient.File('bunny.obj') result = service.polyreduce(data=to_reduce, percentage=10) with open('model.bgeo.sc', 'wb') as fp: fp.write(result.response.content)
- サーバ名が異なる場合は 2行目の URL を変更する。
- 別の形状ファイルを用いる場合は、3行目
webapiclient.File('bunny.obj')
内の 'bunny.obj' 部分を変更する。 - ポリゴン削減の度合いを変えたい場合は、percentage の値を変更。上記の例のように '10' の場合、10% をキープとなる。10% 削減したい場合は percentage を 90 とする。
- 出力ファイル名やフォーマットを変えるには、5行目の 'model.bgeo.sc' を別名にする。拡張子を変えれば、そのフォーマットで出力される。
- Command Line Tools を起動し、Hython で以下のコマンドを実行。
hython polyreduce_client.py
- 同じディレクトリに出力ファイルが model.bgeo.sc として出力される。
- 出力したファイルは
gplay model.bgeo.sc
で確認可能。
GPlay のビューポート操作は Houdini と同じ。
4. ライセンスについて
- 上記のようにサーバとクライアントの両方で Hython を実行すれば、サーバとクライアントの両方で Houdini のライセンスが必要。よって、最低でも最も安価な Houdini Engine のライセンスが2本必要となる。
- サーバでは Houdini を実行するため、どうあっても Houdini (Engine) のライセンスが必須。
- クライアント側では、Python の環境を正しく設定すれば、標準の Python だけで polyreduce_client.py を実行でき、Houdini (Engine) ライセンスの節約が可能。
5. Hython を使わないためのクライアント側の設定
- polyreduce_client.py で使われている
webapiclient
(一行目) は、厳密には Hou モジュールではないので Houdini ライセンスを使用しないが、Houdini インストールディレクトリ ($HFS) 以下にあるので、hython 以外の Python で実行する場合、その場所を考慮する必要がある。 - なお、Windows 版の Houdini には python.exe も含まれているので、ここではそれを使って説明する。
- Hython を使った場合には自動的に設定されるが、通常の Python (3) を使う際には、以下の3つのディレクトリが認識されるようにする必要がある。
$HFS\python37\lib
$HFS\houdini\python3.7libs
$HFS\python37\lib\site-packages
$HFS\houdini\python3.7libs
内にある。 - しかし、Windows のシステム設定の環境変数で
PYTHONPATH
に上記3つのディレクトリを追加すると、M@ya が起動できなくなる。 - そこで便宜的に HOUDINI_PYTHONPATH という環境変数を作成、これに上記3つのディレクトリを設定、これを Cygwin で必要に応じて PYTHONPATH に追加することで、PYTHONPATH のコンフリクトを防ぐ。
Windows のシステム環境で環境変数を追加する際には、HFS を実際のディレクトリへの展開が必要 - Cygwin で使う際には、
export HFS="/Program Files/Side Effects Software/Houdini 18.5.583" export PATH=${HFS}/python37:$PATH export PYTHONPATH=$HOUDINI_PYTHONPATH:$PYTHONPATH
を事前に実行することが必要。 - python -i とインタラクティブモードで起動し、
import webapiclient
としてエラーが出なければ、パスが正しく認識されているわかる。もしくは、import sys sys.path
でパスをすべて表示できる。 - これで、
python polyreduce_client.py
と実行すれば、出力ファイルが得られる(はず)
リンク
- h185_webserver.zip (64KB)
- bunny.obj
- polyreduce_client.py
- polyreduce_server.py
- webServer モジュール
- SideFX フォーラムの同トピック
- Python ファイルの配置位置
このコメントはブログの管理者によって削除されました。
返信削除