 
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 ファイルの配置位置

 
このコメントはブログの管理者によって削除されました。
返信削除