見出し画像

HoudiniでMATLABをつかってみた

概要

CGソフトのHoudini上で数値解析ソフトであるMATLABで使われる関数を使える環境を構築します。

対象者
・windows ユーザー(Macでもできると思いますが、windowsとMacとではhoudiniとpythonの関係性が異なるので未検証)
・Houdini18をダウンロードしている(評価版は無料)
・pythonをダウンロード(私はAnaconda環境のpython3.7を利用、もちろん無料)
・MATLABをダウンロード(有償)

HoudiniからMATLABの関数を呼び出すためにはpythonというプログラミン言語を媒介にする必要があります。その理由はpythonからMATLABの関数を呼び出すためのAPIを利用するためです。

画像7

いわば、numpyやpandasのようなライブラリーにMATLABで利用できる関数を追加することができるのです。

MATLABには実装するには難しい一般固有値問題を解く高級関数も用意されているため、そのための環境構築には以下の2段階があります。

①Houdiniからpythonを操作するための環境構築

②pythonからMATLABの関数をimportするための環境構築

①Houdini →python

HoudiniのTOP Networkを用いて外部にあるpythonを操作します。

1.まず、TOP Networkを作成してダブルクリックし中に入ります。

画像1

2.「Environment Edit」nodeを作成し、クリックしValue値に動かしたいpythonが格納されている一つ上のフォルダのpathを入力する。
私の場合は、C:\Users\H.Yusuke\Anaconda3

画像2

3.「python script」nodeを作成し、先ほどつくったnodeにつなげます。

画像3

「python script」nodeをクリックし、Python Binを「Custom」に設定し、Custom Python Binにpythonのpathを入力します。

画像4

このpython scriptでコードを書くとpath先のpythonがバックグランドで動いてくれます。これにより、現在houdiniで使用できないpython3バージョンも使うことができます。次節からは、ここにmatlabの関数をimportするための環境構築について説明をします。

②python→MATLAB

python内でMATLABエンジンを開始するにはPython パッケージとしてエンジン API をインストールしなければなりません。MATLAB では distutils モジュールを使用してエンジンをビルドおよびインストールする標準の Python setup.py ファイルを提供しています。

エンジンAPIをインストールする前に、Python の構成と MATLAB の構成を確認してください。

使用しているシステムに Python のサポートされているバージョンと MATLAB R2014b 以降がインストールされていることを確認します。

1.MATLAB フォルダーへのパスを見つけます。MATLAB を起動し、コマンド ウィンドウで matlabroot と入力します。matlabroot によって返されたパスをコピーします。

2.エンジン API をインストールするには、管理者権限でコマンドプロンプト を起動し以下のコマンドでディレクトリに移動します。

cd "matlabroot によって返されたパス"\extern\engines\python

3.そして、以下のコマンドでsetup.pyをインストールします。

python setup.py install


これによりpythonのライブラリーに「matlab」が追加され、pythonのコードでMATLABの関数がつかえるようになります。

③実際にhoudini内のpythonからMATLABの関数を呼んでみましょう

具体的例として素数であるかどうかの判定をする関数を呼び出してみます。
以下の例では23が素数か否かを判定しています。MATLABの関数:isprimeを使っています。

import matlab.engine
eng=matlab.engine.start_matlab()
t=eng.isprime(23)
print(t)

①上記のコードをhoudini内の「python script」nodeのpython codeに入力し、②実行し、③Task Graph Tableをクリック

画像5

上図の③をクリックするとTask Graph Table ウィンドウが現れ以下のような流れで23が素数か否かを出力しています。23は素数であるため、「True」を返しています。

画像6

以上のようにして、MATLABの関数を自由に使うことができます。

*個人的に豊富なMATLABの関数をhoudiniで利用できるようになったので、これからCGソフトと連動したFEMプログラムやボクセルベースの構造解析プログラムの開発が爆速で進むのではないかと、期待に胸を膨らませております。

同じようなことを考えている人がいれば、知見を共有してさらに開発速度を上げていきましょう!

興味ある方はお気軽にご連絡ください!

twitterアカウント↓

https://twitter.com/8U_H8

この記事が気に入ったらサポートをしてみませんか?