HARK FORUM › ノードの作成方法について › Reply To: ノードの作成方法について
お問い合わせありがとうございます。
> 逆の処理も可能でしょうか。
はい。可能です。
Python内で定義された変数(または定数)を self.outputValues["端子名"]
に代入して頂ければ出力されます。ネットワークファイル側では、PyCodeExecutor3ノードを右クリックし、 Add Output
を選び、 self.outputValues["端子名"]
で指定した端子名で出力端子を追加してください。
入力は self.端子名
で取得できますが、こちらもネットワークファイルのPyCodeExecutor3ノードに Add Input
で追加した入力端子名となります。
calculate()
メソッドが毎フレーム呼び出されますのでinputに対して処理してoutputするという用途が基本になります。inputが1つも無い例として、処理を開始する最初のノード(AudioStreamFromWaveのようにファイル入力等を行う)として作成する場合は、EOFでHARKの処理を停止するためにCONDITIONというbool型の出力を追加し、通常はTrue、EOFでFalseを設定します。ネットワークファイルではCONDITION端子にCONDITIONを設定してください。
PyCodeExecutor3の仕様について:
HARKがサポートしている型であれば、入出力ともに可能です。例えばHARKの Vector
はPythonの list
と、HARKの Map
はPythonの dict
と対応します。注意点としては、2点ほどあります。出力する場合はデータを渡す相手ノードの入力と型が一致している必要があります。また、HARKの標準ノードと異なりパラメータ設定ダイアログを表示できませんので、パラメータを変更できるノードを作りたい場合にはjsonファイル等でパラメータ設定が起動時にロード出来るようにする等で対応をお願い致します。Pythonコード内でsocketなど用いて記述して頂ければネットワークから動的に値を設定するコードなども可能です。
Pythonコード上での処理は自由に行う事が出来ますが、HARK側からPythonのクラスを呼び出すためGUI処理(Plot等)の書き方はやや癖があります。下記ディレクトリにPlot系ノードのサンプルがありますので参考にしていただければ幸いです。
/usr/share/hark/hark-python3/harkpython/src/
hark-python
はPython2をサポートするための旧パッケージになります。HARK2.5までサポートしていました。HARK2.5以降は hark-python3
としてPython3をサポートする新しいパッケージを提供しています。ユーザが記述するPythonコードについては基本的に互換性がある設計ですが、Forumの回答ではインストール手順などで旧バージョン向けの説明が書かれている事が御座います。
以上、よろしくお願い致します。