Houdini 19.5

hapi package

HAPI APIのPythonラッパー。

On this page

hapiパッケージには、Houdini Engine C APIをPythonでラップしたクラスと関数が含まれています。

Houdini Engineとは、Houdiniデジタルアセットをホストアプリケーションの内部で直接使用できるようにするAPIです。 これによって、アーティストは自分が最も快適に作業できる環境下でHoudiniのパワーを直接活用することができます。

技術的な観点では、Houdini Engineはバイナリ互換のために設計されたC APIです。 コンパイラの選択やバージョンが違っても、Houdini Engineをホストアプリケーションに統合することができます。 例えば、Houdini EngineはネイティブのC++アプリケーションだけでなくC#やPythonなど両方で管理された環境に統合することができます。

最後にC++ HDKを比較すると、Houdini Engineは学習が簡単になるように平坦で小さなAPIになっています。

Tip

エンジンのインテグレーションを作成する場合、HARSの代わりにインタラクティブHoudiniのライブセッションに接続する方が非常に便利です。 これはHoudini Engine SessionSyncを使用して行なうことができます。

Tip

Houdini Engine C APIドキュメントは、Python APIを使用する時でも、同じ概念と関数が当てはまるので役に立ちます。

はじめよう

To...Do this

セッションを作成する

セッションはHARS実行可能ファイル(完全にヘッドレスのHoudini)のインスタンスです。 HARSを自動的に起動してそれに接続することができます。

import hapi
options = hapi.ThriftServerOptions()
process_id = hapi.startThriftSocketServer(options, 9090)
session = hapi.createThriftSocketSession('localhost', 9090)

セッションに接続する

セッションはHARS実行可能ファイル(完全にヘッドレスのHoudini)のインスタンスです。 SessionSyncをアクティブにして実行中されているHoudiniインスタンスをセッションにすることも可能です。 名前付きパイプ(Named Pipe:例えば、/tmp/hapi)またはTCPソケット接続(例えば、localhost:9090)を使用してセッションに接続することができます。

import hapi
session = hapi.createThriftSocketSession('localhost', 9090)
cook_options = hapi.CookOptions()
hapi.initialize(session, cook_options)

HDAを読み込む

HDAファイルがサーバーにアクセス可能であれば、hapi.loadAssetLibraryFromFileを使ってそのHDAを読み込むことができます。 HDAファイルがクライアントにしかアクセスできないのであれば、hapi.loadAssetLibraryFromMemoryを使ってそのHDAをバイトとして送信することができます。

# myhda.hdaを送信できるようにするために、そのHDAをメモリに読み込みます。
hda_bytes = open('/tmp/myhda.hda', 'rb').read()
lib_id = hapi.loadAssetLibraryFromMemory(session, hda_bytes,
    len(hda_bytes), True)

ノードを作成する

# `MyType`というSOPタイプを定義したアセットが読み込まれていると仮定します。
node_id = hapi.createNode(session, -1, 'Sop/MyType')

# その新しいノードのhapi.NodeInfoを取得します。
node_info = hapi.getNodeInfo(session, node_id)

# 文字列を取得するために2つの手順を踏みます。
str_len = hapi.getStringBufLength(session, node_info.nameSH)
node_name = hapi.getString(session, node_info.nameSH, str_len)

print('Created {}'.format(node_name))

シーンデータをファイルに保存する。

シーンの問題をデバッグする時にそのシーンのhipファイルをユーザが保存できれば非常に便利です。

hapi.saveHIPFile(session, '/tmp/debug.hip')
hapi.saveGeoToFile(session, node_id, '/tmp/debugGeo.bgeo.sc')

次のステップ

APIリファレンス

Animation

  • hapi.setAnimCurve

    露出されたノードのパラメータにアニメーションカーブを設定します。

  • hapi.setTransformAnimCurve

    露出されたノードにT,R,S値を設定するための特別な便利関数。

Assets

Attributes

  • hapi.getAttributeInfo

    名前で指定されたアトリビュートからアトリビュート情報の構造体を取得します。

  • hapi.getAttributeNames

    アトリビュートオーナーを指定してアトリビュート名のリストを取得します。

Caching

  • hapi.getActiveCacheCount

    現在アクティブなキャッシュの数を取得します。

  • hapi.getActiveCacheNames

    現在アクティブなキャッシュの名前を取得します。

  • hapi.getCacheProperty

    現行Houdiniコンテキスト内のメモリキャッシュ別に特定のプロパティを検査することができます。

  • hapi.getGeoSize

    指定した書式でジオメトリの現行状態をメモリにキャッシュ化し、そのサイズを返します。

  • hapi.loadGeoFromFile

    ファイルからジオメトリを読み込んで、その内容をSOPノードに格納します。

  • hapi.loadGeoFromMemory

    メモリからジオメトリを読み込んで、その内容をSOPノードに格納します。

  • hapi.loadNodeFromFile

    指定したファイルを読み込んで、以前に保存されたノードとそのすべての内容を生成します。

  • hapi.saveGeoToFile

    ジオメトリをファイルに保存します。

  • hapi.saveGeoToMemory

    キャッシュ化されたジオメトリをメモリのバッファに保存します。

  • hapi.saveNodeToFile

    ノードとそのすべての内容をファイルに保存します。

  • hapi.setCacheProperty

    現行Houdiniコンテキスト内の別々のメモリキャッシュの特定のプロパティを変更することができます。

classes

  • hapi.AssetInfo

    hapi.getAssetInfoが返すHDAに関するメタデータ。

  • hapi.AttributeInfo

    アトリビュートを表現したメタデータ。

  • hapi.BoxInfo

    ボックスパートのデータ。

  • hapi.CookOptions

    ノードがクックされる方法に影響を与えるオプション。

  • hapi.CurveInfo

    カーブメッシュに関連付けられているメタデータ(同じタイプのカーブの数)を示します。

  • hapi.GeoInfo

    SOPノードのメタデータ。

  • hapi.HandleBindingInfo

    ハンドルパラメータとアセットパラメータをマッピングしたバインド情報が含まれています。

  • hapi.HandleInfo

    ハンドルのタイプ(translate, rotate, scale, softxformなど)や現行ハンドルがバインドされているパラメータの数などのハンドル情報が含まれています。

  • hapi.ImageFileFormat

    hapi.getSupportedImageFileFormatsで使用される画像フォーマットを示します。

  • hapi.ImageInfo

    hapi.getImageInfoやhapi.setImageInfoで使用される画像のデータ。

  • hapi.Keyframe

    単一キーフレームのデータ。

  • hapi.MaterialInfo

    hapi.MaterialInfoクラス。

  • hapi.NodeInfo

    Houdiniノードのメタデータ。

  • hapi.ObjectInfo

    OBJノードのメタデータ。

  • hapi.PDG_EventInfo

    PDGイベント関連のデータ。

  • hapi.PDG_WorkitemInfo

    PDGワークアイテムの情報。

  • hapi.PDG_WorkitemResultInfo

    PDG File Resultのデータ。

  • hapi.ParmChoiceInfo

    コンボボックス/選択パラメータのメタデータ。

  • hapi.ParmInfo

    名前、ラベル、タイプ、サイズなどのパラメータ情報が含まれています。

  • hapi.PartInfo

    ジオメトリパートを表現したメタデータ。

  • hapi.Session

    セッションを調べます。

  • hapi.SessionSyncInfo

    Houdiniと他のアプリケーション間の一般的なSessionSync状態を同期化するための情報が含まれています。

  • hapi.SphereInfo

    球パートのデータ。

  • hapi.ThriftServerOptions

    HARCから起動されるThriftサーバーを設定するオプション。

  • hapi.TimelineOptions

    hapi.setTimelineOptionsで使用されるグローバルタイムラインのデータ。

  • hapi.Transform

    クォータニオン回転によるトランスフォーム。

  • hapi.TransformEuler

    オイラー回転によるトランスフォーム。

  • hapi.Viewport

    Houdiniと他のアプリケーション間でビューポートを同期化するための情報が含まれています。

  • hapi.VolumeInfo

    これは、ボリュームプリミティブを表現していますが、実際のボクセル値は含まれていません。ボクセル値はタイル基準で取得することができます。

  • hapi.VolumeTileInfo

    hapi.VolumeTileInfoはボリュームの3次サブ配列を表現します。

  • hapi.VolumeVisualInfo

    ボリュームの視覚的設定を示します。

Curves

  • hapi.getCurveCounts

    パート内の各カーブの頂点数を取得します。

  • hapi.getCurveInfo

    カーブに関するメタデータ(カーブのタイプ、階数、周期性を含む)を取得します。

  • hapi.getCurveKnots

    このパート内のカーブのノットを取得します。

  • hapi.getCurveOrders

    カーブの階数が可変する場合にパート内の各カーブの階数を取得します。

  • hapi.setCurveCounts

    パート内の各カーブの頂点数を設定します。

  • hapi.setCurveInfo

    カーブメッシュにメタデータ(カーブのタイプ、階数、周期性を含む)を設定します。

  • hapi.setCurveKnots

    このパート内のカーブのノットを設定します。

  • hapi.setCurveOrders

    カーブの階数を可変させる場合、パート内の各カーブの階数を設定します。

Environment

  • hapi.getEnvInt

    バージョン番号など特定の環境整数を取得します。

  • hapi.getServerEnvInt

    サーバープロセスから環境変数を整数として取得します。

  • hapi.getServerEnvString

    サーバープロセスから環境変数を文字列として取得します。

  • hapi.getServerEnvVarCount

    サーバー環境のプロセス内に存在する環境変数の数を取得します。

  • hapi.getServerEnvVarList

    サーバーのプロセス内のすべての環境変数のリストを取得します。

  • hapi.getSessionEnvInt

    使用中の現行ライセンスタイプなど特定のセッション特有の環境整数を取得します。

  • hapi.setServerEnvInt

    サーバープロセス用の整数型の環境変数を設定します。

  • hapi.setServerEnvString

    サーバープロセス用の文字列型の環境変数を設定します。

Geometry

  • hapi.getBoxInfo

    ジオメトリパート(これがボックスなら)のボックス情報を取得します。

  • hapi.getSphereInfo

    (ジオメトリパートが球の場合に)ジオメトリパート上の球情報を取得します。

GeometryGetters

GeometrySetters

HeightFields

HipFiles

  • hapi.getHIPFileNodeCount

    .hipファイルを読み込んだ結果として作成されたノードの数を取得します。

  • hapi.getHIPFileNodeIds

    HAPI_HIPFileIdで指定されたHIPファイルを読み込んだ結果として作成されたノードのHAPI_NodeIdの配列を取得します。

  • hapi.loadHIPFile

    メインのHoudiniシーンに.hipファイルを読み込みます。

  • hapi.mergeHIPFile

    メインのHoudiniシーンに.hipファイルを読み込みます。

  • hapi.saveHIPFile

    現行Houdiniシーンの.hipファイルを保存します。

Materials

Nodes

Objects

Parms

  • hapi.getHandleBindingInfo

    指定したノード上の特定のハンドルのバインドに関する情報でhapi.HandleBindingInfo構造体の配列を埋めます。

  • hapi.getHandleInfo

    ノード上に露出されたすべてのユーザ操作ハンドルに関する情報でhapi.HandleInfo構造体の配列を埋めます。

  • hapi.getParameters

    アセットインスタンスノードからのパラメータ情報でhapi.ParmInfo構造体の配列を埋めます。

  • hapi.getParmChoiceLists

    アセットインスタンスノードからパラメータ選択リスト情報でhapi.ParmChoiceInfo構造体の配列を埋めます。

  • hapi.getParmExpression

    パラメータ名で整数または浮動小数点の単一パラメータエクスプレッションを取得します。

  • hapi.getParmFile

    パラメータ上のパスで指定されたファイルを抽出します。

  • hapi.getParmFloatValue

    パラメータ名で浮動小数点の単一パラメータ値を取得します。

  • hapi.getParmFloatValues

    浮動小数点パラメータ値の配列を埋めます。

  • hapi.getParmIdFromName

    どのパラメータAPIもHAPI_ParmIdが必要ですが、操作したいパラメータの名前が分かっているなら、この関数を使用することで、指定した名前からHAPI_ParmIdを取得することができます。

  • hapi.getParmInfo

    パラメータIDで指定されたパラメータのパラメータ情報を取得します。

  • hapi.getParmInfoFromName

    パラメータ名で指定されたパラメータのパラメータ情報を取得します。

  • hapi.getParmIntValue

    パラメータ名で指定された単一整数パラメータ値を取得します。

  • hapi.getParmIntValues

    整数パラメータ値の配列を埋めます。

  • hapi.getParmNodeValue

    Op Pathパラメータから単一パラメータのノードID値を取得します。

  • hapi.getParmStringValue

    パラメータ名で指定された単一文字列パラメータ値を取得します。

  • hapi.getParmStringValues

    文字列パラメータハンドルの配列を埋めます。

  • hapi.getParmTagName

    パラメータ上の指定したインデックスのタグ名を取得します。

  • hapi.getParmTagValue

    パラメータ上の指定したタグ名のタグ値を取得します。

  • hapi.getParmWithTag

    指定したタグ名(固有な名前が理想)を持つ最初のパラメータを取得します。

  • hapi.insertMultiparmInstance

    マルチパラメータのインスタンスをinstance_positionの前に挿入します。

  • hapi.parmHasExpression

    パラメータがエクスプレッションを持っているかどうかを確認します。

  • hapi.parmHasTag

    パラメータが特定のタグを持っているかどうかを確認します。

  • hapi.removeMultiparmInstance

    instance_positionで指定されたマルチパラメータのインスタンスを削除します。

  • hapi.removeParmExpression

    エクスプレッション文字列を削除し、そのパラメータの値をそのエクスプレッションの現行値で残します。

  • hapi.revertParmToDefault

    パラメータ名で指定された単一パラメータをデフォルトに戻します。

  • hapi.revertParmToDefaults

    パラメータ名で指定されたパラメータのすべてのインスタンスをデフォルトに戻します。

  • hapi.setParmExpression

    エクスプレッション文字列を設定(プッシュ)します。

  • hapi.setParmFloatValue

    パラメータ名で指定された単一浮動小数点パラメータの値を設定します。

  • hapi.setParmFloatValues

    浮動小数点パラメータ値の配列を設定(プッシュ)します。

  • hapi.setParmIntValue

    パラメータ名で指定された単一整数パラメータの値を設定します。

  • hapi.setParmIntValues

    整数パラメータ値の配列を設定(プッシュ)します。

  • hapi.setParmNodeValue

    Op PathパラメータのノードIDパラメータ値を設定します。

  • hapi.setParmStringValue

    文字列値を設定(プッシュ)します。

PDG

Presets

  • hapi.getPreset

    指定したアセット用のプリセットを生成します。

  • hapi.getPresetBufLength

    すべてのパラメータ値の現行状態からプリセットの塊を生成し、それをキャッシュ化して、そのサイズ(単位はバイト)を返します。

  • hapi.setPreset

    指定したプリセットを特定のアセットに設定します。

Sessions

  • hapi.bindCustomImplementation

    新しく実装したDLLをカスタムセッションスロットのどれかにバインドします。

  • hapi.cleanup

    メモリをクリーンアップします。

  • hapi.closeSession

    セッションを閉じます。

  • hapi.createInProcessSession

    インプロセスで新しいセッションを作成します。

  • hapi.createThriftNamedPipeSession

    Windowsの名前付きパイプ(Named Pipe)またはUNIXのドメインソケットをトランスポートとして使用してThrift RPCセッションを作成します。

  • hapi.createThriftSocketSession

    TCPソケットをトランスポートとして使用してThrift RPCセッションを作成します。

  • hapi.initialize

    アセットマネージャを作成し、環境変数をセットアップして、メインのHoudiniシーンを初期化します。

  • hapi.isInitialized

    ランタイムが既にhapi.initializeを使用して初期化されているかどうかを確認します。

  • hapi.isSessionValid

    hapi.Session.idで指定されたセッションがhapi.Session.typeで指定された実装で開かれた有効なセッションなのかどうかを確認します。

  • hapi.startThriftNamedPipeServer

    Windowsの名前付きパイプ(Named Pipe)またはUnixのドメインソケットでクライアントにサービスを提供するThrift RPCサーバープロセスをローカルホスト上で起動し、そのサービスを開始するのを待機します。

  • hapi.startThriftSocketServer

    TCPソケットでクライアントにサービスを提供するThrift RPCサーバープロセスをローカルホスト上で起動し、そのサービスを開始するのを待機します。

SessionSync

  • hapi.getSessionSyncInfo

    HoudiniとHoudini Engineインテグレーション間でSessionSync状態を同期化するためのを取得します。

  • hapi.getViewport

    SessionSyncでビューポートを同期化するための情報を取得します。

  • hapi.setSessionSync

    SessionSyncモードを有効または無効にします。

  • hapi.setSessionSyncInfo

    HoudiniとHoudini Engineインテグレーション間でSessionSync状態を同期化するためのhapi.SessionSyncInfoを設定します。

  • hapi.setViewport

    SessionSyncでビューポートを同期化するためのhapi.Viewport情報を設定します。

Status

Strings

  • hapi.getString

    指定した文字列ハンドルの値を取得します。

  • hapi.getStringBatch

    指定した文字列ハンドルの値を取得します。

  • hapi.getStringBatchSize

    指定した文字列ハンドルをNull区切りしたすべての値を格納するのに必要なバッファの長さを取得します。

  • hapi.getStringBufLength

    指定したハンドルの文字列長を取得します。

  • hapi.removeCustomString

    指定した文字列をサーバーから削除し、そのハンドルを無効化します。

  • hapi.setCustomString

    指定した文字列を文字列テーブルに追加して、そのハンドルを返します。

Time

  • hapi.getTime

    シーンのグローバル時間を取得します。

  • hapi.getTimelineOptions

    現行グローバルタイムラインオプションを取得します。

  • hapi.getUseHoudiniTime

    Houdiniセッションがデータをクックして取得する際にHoudiniの現行時間を使用するかどうかを返します。

  • hapi.resetSimulation

    アセットのシミュレーションキャッシュをリセットします。

  • hapi.setTime

    シーンのグローバル時間を設定します。

  • hapi.setTimelineOptions

    グローバルタイムラインオプションを設定します。

  • hapi.setUseHoudiniTime

    Houdiniセッションがデータをクックして取得する際にHoudiniの現行時間を使用するかどうかを設定します。

types

Utility

Volumes

Houdini 19.5

はじめよう

Houdiniの使い方

  • ジオメトリ

    Houdiniがどのようにジオメトリを表現し、どのように作成・編集するのか説明します。

  • コピーとインスタンス

    コピー(実形状)とインスタンス(読み込みのみ、もしくはレンダリング時に作成される形状)の使い方。

  • アニメーション

    Houdiniでのアニメーションの作成とキーフレームの方法。

  • デジタルアセット

    デジタルアセットは既存ネットワークから再利用可能なノードとツールを作成することができます。

  • インポートとエクスポート

    Houdiniでのシーン、オブジェクト、他のデータのインポートとエクスポートの方法。

  • PDG/TOPsを使ってタスクを実行する方法

    TOPネットワークを使用して、ディペンデンシーとスケジューラタスクを定義する方法。

  • MPlayビューア

    Houdiniのスタンドアローン画像ビューアの使い方。

Character FX

  • キャラクタ

    Houdiniでのキャラクタのリギングとアニメーションの方法。

  • 群衆シミュレーション

    Houdiniでのキャラクタの群衆の作成とシミュレーションの方法。

  • Muscles & Tissue

    筋肉、皮下組織、スキンをHoudiniで作成およびシミュレーションする方法。

  • HairとFur

    ヘアーとファーを作成、スタイリング、ダイナミクスを追加する方法。

ダイナミクス

  • ダイナミクス

    Houdiniのダイナミクスネットワークを使用したシミュレーションの作成方法。

  • Vellum

    Vellumは、布、ヘアー、Gain(粒)、流体、ソフトボディオブジェクトに対してPosition Based Dynamicsの手法を使用します。

  • Pyro

    煙、炎、爆発のシミュレーションの方法。

  • 流体

    流体とオーシャンのシミュレーションをセットアップする方法。

  • オーシャンと水面

    オーシャンと水面のシミュレーションをセットアップする方法。

  • 破壊

    色々なタイプの材質を破壊する方法。

  • Grains(粒)

    (砂のような)粒状の材質をシミュレーションする方法。

  • パーティクル

    パーティクルシミュレーションの作成方法。

  • Finite Elements(有限要素)

    変形可能なオブジェクトを作成してシミュレーションする方法。

ノード

  • OBJ - オブジェクトノード

    オブジェクトノードはシーン内で、キャラクタ、ジオメトリオブジェクト、ライト、カメラなどのオブジェクトを表示します。

  • SOP - ジオメトリノード

    ジオメトリノードはGeoオブジェクト内で存在し、ジオメトリを生成します。

  • DOP - ダイナミクスノード

    ダイナミクスノードは物理シミュレーション用に条件とルールを設定します。

  • VOP - シェーダノード

    VOPノードは、ノード同士を接続することで(シェーダなどの)プログラムを定義することができます。そしてHoudiniは、そのノードネットワークを、実行可能なVEXコードにコンパイルします。

  • LOP - USDノード

    LOPノードは、キャラクタ、プロップ、ライティング、レンダリングを記述したUSDを生成します。

  • ROP - レンダーノード

    レンダーノードは、シーンをレンダリングしたり、レンダーディペンデンシーネットワークをセットアップします。

  • CHOP - チャンネルノード

    チャンネルノードは、チャンネルデータの作成、フィルタリング、制御をします。

  • COP2 - コンポジットノード

    コンポジットノードはフィルターを作成し、画像データを操作します。

  • TOP - タスクノード

    TOPノードは、データをネットワークに送り込んでワークアイテムに変換し、色々なノードでそれを制御するワークフローを定義します。たいていのノードは、ローカルマシンまたはサーバーファーム上で実行可能な外部プロセスを表現しています。

ライティング, レンダリング, コンポジット

  • Solaris

    Solarisとは、Universal Scene Description(USD)フレームワークに準拠して、Houdiniのシーン構築、レイアウト、レンダリングをするツール群の総称のことです。

  • レンダリング

    3Dシーンから画像とアニメーションをレンダリングする方法。

  • HQueue

    HQueueは、Houdiniの無料の分散ジョブスケジューリングシステムです。

  • マテリアル

    マテリアルの割り当てとシェーディング用のカスタムマテリアルを作成する方法。

  • コンポジット

    Houdiniのコンポジットネットワークはレンダーなどの画像を作成し処理することができます。

リファレンス

  • メニュー

    メインメニュー内のそれぞれの項目について説明します。

  • ビューア

    ビューアペインタイプ。

  • ペイン

    色々なペインのオプションを説明します。

  • ウィンドウ

    色々なユーザインターフェースウィンドウのオプションを説明します。

  • スタンドアローンのユーティリティ

    Houdiniには便利なコマンドラインユーティリティプログラムがたくさんあります。

  • APIs

    Houdiniのプログラミング関連のリファレンスドキュメントすべてを一覧にしています。

  • Pythonスクリプト

    PythonとHoudini Object Modelを使用してHoudiniのスクリプトを記述する方法。

  • エクスプレッション関数

    エクスプレッション関数は、パラメータの値を計算することができます。

  • HScriptコマンド

    HScriptはHoudiniのレガシースクリプト言語です。

  • VEX

    VEXはシェーダの記述などのHoudiniのほとんどの場所で使われているハイパフォーマンスなエクスプレッション言語です。

  • プロパティ

    プロパティはレンダリング、シェーディング、ライティング、カメラといったパラメータを柔軟で強力な階層構造でセットアップすることができます。

  • ギャラリー

    Houdiniに含まれている既製マテリアル。

  • Houdiniパッケージ

    プラグイン、ツール、アドオンが異なる環境変数定義ファイルを複数作成して、それらを組み合わせる方法。

  • Houdini Engine

    Houdini EngineのC、PythonのAPIsとHoudini Engineプラグインについて説明しています。

  • hwebserver

    グラフィカルまたは非グラフィカルなHoudiniセッション内でウェブサーバーを起動するための関数とクラス。

  • SideFX Labs

    SideFX Labsは新しいツールをテストする場です。SideFX GitHubリポジトリから直接これらのツールをアップロードすることができます。

  • 環境変数一覧