(Terragen 4) Terragen RPCを試す その1(準備・サンプル実行)
本記事の対象Terragen 4バージョン:Professional (Educational含む)
注意:本記事はTerragen RPCのベータ版(0.9.2)を基にしています。アップデートにより、コードに変更が加わる場合があります。
また、Windows 10/11前提で進めます。
Pythonをインストール
サンプルを実行するために、Pythonをインストールします。
つい最近3.11が出たばかりですが、バージョン違いで面倒なトラップを踏みたくないので、チュートリアルと同じ3.10.5とします。
Python Release Python 3.10.5 | Python.orgページ下部の「Windows installer」をクリックしてダウンロードします。
ダウンロードしたインストーラを起動して、インストールします。
インストーラ下部の
Add Python 3.10 to PATH
にチェックを入れておきます。
インストールが終わったら、コマンドプロンプトを起動して、
python --version
と打ちます。 ↓のように、3.10.5と出ればOKです。Terragen RPCをダウンロード
以前はGitHubからダウンロードする必要がありましたが、2023/7/6からpipからインストールできるようになっていました。 pipとは、Pythonで使える様々な拡張機能がダウンロードできるサービスのことです。(非常にざっくりな説明だから詳しい人怒らないで)
下記のコマンドを実行だけで使えるようになります。
pip install terragen-rpc
さて、ここからは、https://planetside.co.uk/docs/terragen-rpc/high-py-api.htmlに記載されているサンプルコードを使って試していきましょう。
メモ帳などのエディタを開き、下記のコードを書き(コピペでよいです)、「rpc-sample.py」という名前で保存してください。
import terragen_rpc as tg # Print the nodes at the top level of the project project = tg.root() children = project.children() for c in children: print(c.path()) # Print the parameters of a node whose path is "/Render Camera" camera = tg.node_by_path('/Render Camera') if camera: print(camera.param_names()) else: print("Node not found") # Note: Exception handling was omitted from this example for brevity. # See other examples for exception handling.
上記のスクリプトを実行しましょう。
先に、Terragen 4.6を起動しておいてください。
まず、
rpc-sample.py
が保存されているフォルダで、エクスプローラの右クリックメニューから「ターミナルを開く」をクリックします。(ここでは英語版表示ですみません。Windows Terminalが開きます)
または、エクスプローラのアドレスバーに
cmd
と打ち込み、Enterキーを押します。(コマンドプロンプトが開きます)開いたターミナルまたはコマンドプロンプトに、
python rpc-sample.py
と打ってみましょう。こんな表示となるはずです。(Windows Terminalでの表示例です)
お疲れさまでした。
では、今実行したスクリプトの流れをざっくりと書きます(あんまりPythonの知識が無くてもいいように)。
メインの処理は6行目からですね。
まずノードネットワークの一番上の階層にアクセスし、
children()
でそこにあるノードたちを取得します。children
にはルートにぶら下がってる各ノードが格納されています。root = tg.root() children = root.children()
それぞれのノードの、ルートからのパスを順番に表示していきます。パスはスラッシュから始まります。
for c in children: print(c.path())
これで一区切りです。
次の行からはまた別の処理をしています。
node_by_path()
で、パスが/Render Camera
のノードを探します。 あったら、そのノードがcamera
に格納されます。param_names()
で、ノードが持つパラメータの名前の一覧を表示しています。 もし、パスが/Render Camera
のノードがなければ、エラーメッセージを表示します。# Print the parameters of a node whose path is "/Render Camera" camera = tg.node_by_path('/Render Camera') if camera: print(camera.param_names()) else: print("Node not found")
次回予告
今回は簡単な例でしたが、もう少しいろんなAPIを使って遊んでいきます。
以上。