Houdiniプラグイン開発備忘録2 ~ CMakeでのビルド編

最近、どうしても自作したいSOPがあり、Windows環境でのHoudiniのプラグイン開発を少しずつ学び始めたので、忘れないようにメモしていこうと思います。

HDKリファレンスには、「Visual Studio IDEからビルドする場合は、代わりにCMakeを使用することをお勧めします。」との記載があります。

また、「hcustomによるビルドでは単一のソースファイルしか扱えない」旨の記述もあり、hcustomは手軽ではあるけど不便だろうなぁと想像しています。

というわけで、今後使い続けることになりそうなCMakeでのビルドを知るため、前回のhcustomによるビルドに引き続き、CMakeを使うビルドを試してみようと思います。

今回もサンプルの「SOP_Star」を使います。


■CMakeとは?

CMakeは、プログラムのビルド処理を自動化してくれる便利ツールです。
今回CMakeで行う処理は、大きく分けて以下の2つです。

・Visual Studioのソリューションとプロジェクトの自動生成
・自動生成されたそれらのファイルを使ってビルドを行う


■環境の準備

まず、手元の環境ですが、以下のようなツールがインストールされています。

Houdini 18.0.532 Indie
Visual Studio 2019 / 2017 / 2015 Community
CMake 3.18.1


■ビルド手順

・ソースコードをコピーする

以下のフォルダを、任意の場所にコピーします。
今回は、以下のようにコピーしました。

コピー元:$HFS\toolkit\samples\SOP\SOP_Star
コピー先:D:\temp\HDK\build_cmake\SOP_Star

※$HFSは、Houdiniのインストールフォルダで、デフォルトでは以下のようなパス

C:\Program Files\Side Effects Software\Houdini 18.0.532

・Command Line Toolsを起動する

スタートメニューで「Command Line Tools」と検索し、起動します。
「Command Line Tools 18.0.532」というタイトルの、Houdini関連の環境変数が一通り自動的にセットされたコマンドプロンプトが立ち上がります。

※どんな環境変数がセットされているかは「set」と打ち込んでEnterを押すことで一覧表示、確認できます。


・ソリューションとプロジェクトを生成する

CMakeでソリューションの生成を実行すると、カレントのフォルダに、Visual Studioのソリューションファイル以外にも、いろいろなファイルが大量に生成されます。

これらの生成されたファイルがソースコードと混ざってしまうと、生成前の状態に戻すことが難しくなります。

そのため、予めビルド生成物をまとめるbuildフォルダをつくり、もとのソースコードとCMakeの生成ファイルを切り分けて管理できるようにします。

まずソースコードと同じフォルダにbuildという名前のフォルダを作ります。

D:\temp\HDK\build_cmake\SOP_Star\build

Command Line Toolsで以下を実行し、カレントのフォルダをbuildフォルダに移動します

cd /d D:\temp\HDK\build_cmake\SOP_Star\build

次に、以下を実行し、ソリューションとプロジェクトを生成します。

cmake ..

カレントのbuildフォルダに、各種ファイルが生成されます。

ここで生成されるソリューションとプロジェクトは、SOP_Starフォルダの直下にあるCMakeLists.txtファイルに記述された設定に基づいて作成されます。

カスタムプラグインを作成するためのCMakeLists.txtを書く際は、このCMakeLists.txtを参考にすれば良さそうです。


・プラグインをビルドする

続いて、以下を実行します。

cmake --build . --clean-first

これで、カレントのフォルダにあるソリューションとプロジェクトファイルを使い、プラグインが以下のフォルダにビルドされます。

%USERPROFILE%\Documents\houdini18.0\dso
SOP_Star.dll
SOP_Star.exp
SOP_Star.ilk
SOP_Star.lib
SOP_Star.pdb

・Houdiniでプラグインの動作を確認する

・Houdiniを起動
・Geometryを内でTABメニューから[star]と検索し[Star]ノードを作成
・無事ビューポート内に星型のジオメトリが現れればOKです。


ここまでで、hcustomとCMakeのそれぞれを使って、手軽にプラグインがビルドできることを確認してみました。

同じ要領で、サンプルにある各種プラグインをビルドすることができそうです。

Houdiniプラグイン開発備忘録1 ~ hcustomでのビルド編

最近どうしても自作したいSOPがあり、Windows環境でのHoudiniのプラグイン開発を少しずつ学び始めたので、忘れないようにメモしていこうと思います。

HDKリファレンスによるとHoudiniプラグインは、hcustomを使うことで簡単にビルドできるらしかったので、まずは初歩中の初歩として、最も簡単そうなこの方法から試してみました。

今回使用するコードは、サンプルにある「SOP_Star」です。


■環境の準備

まず、手元の環境ですが、以下のような状態です

  • Houdini 18.0.532 Indie
  • Visual Studio 2019 / 2017 / 2015 Community

■ビルド手順

・ソースコードをコピーする

以下のフォルダを、任意の場所にコピーします
今回は、以下のようにコピーしました

コピー元:$HFS\toolkit\samples\SOP\SOP_Star
コピー先:D:\temp\SOP_Star

※$HFSは、Houdiniのインストールフォルダで、デフォルトでは以下のようなパス

C:\Program Files\Side Effects Software\Houdini 18.0.532

・Command Line Toolsを起動する

スタートメニューで「Command Line Tools」と検索し、起動します。
「Command Line Tools 18.0.532」というタイトルの、Houdini関連の環境変数が一通り自動的にセットされたコマンドプロンプトが立ち上がります。

※どんな環境変数がセットされているかは「set」と打ち込んでEnterを押すことで一覧表示、確認できます。


・ソースコードのあるフォルダをカレントにします

cd /d D:\temp\SOP_Star

・protoヘッダファイルを作成します

generate_proto.pyを利用し、SOPプラグインのコード内で、ノードのパラメータを定義している文字列(theDsFile)の記述をもとに、パラメータへのアクセスを簡単にしてくれるprotoヘッダファイルを自動生成しておきます。

hython %HH%/python2.7libs/generate_proto.py SOP_Star.C SOP_Star.proto.h

・hcustomでビルドを実行します

hcustom SOP_Star.C

・ビルドの成功を確認

成功していたら、以下のフォルダにビルドで生成されたファイルができているはずです

%USERPROFILE%\Documents\houdini18.0\dso

SOP_Star.dll
SOP_Star.exp
SOP_Star.lib
SOP_Star.pdb

・Houdiniでプラグインの動作を確認する

・Houdiniを起動
・Geometryを内でTABメニューから[star]と検索し[Star]ノードを作成
・無事ビューポート内に星型のジオメトリが現れればOKです。


注意点


・protoヘッダファイルに関して

古い文献を探すと、protoヘッダファイル不使用の解説が見つかったります。
また、18.0.532 では、protoヘッダファイルを作らずにいきなり

hcustom SOP_Star.C

を実行すると、protoヘッダファイルが見つからずにビルドが失敗するようでした。

現時点では、protoヘッダファイルを使うことでプラグインのパラメータアクセスが簡単になるので、必ず用意するものと考えて良さそうだと考えています。

※2020/08/30 追記
サンプルのソースコードを覗くと、もともとprotoヘッダファイルをincludeするように指定されていました。
protoヘッダファイルを作らないとビルドがコケるよね、というオチ。

恐らくprotoヘッダファイルを使うやり方は新しいやり方なのだと想像できるし、何より便利な方法なので、積極的に利用するのが良さそうという見方は変わらず。

protoヘッダファイルの作成と、ソースコードでincludeする、ということをお作法としておけば間違いないのではないかと思いました。