※記事が長くなってしまったので、2ページに分けて投稿します。@ページ1後編はこちら※この記事のサンプルプロジェクトは以下URLにアップされています。2019で、「PythonとHoudiniは勉強しよう!」と思い立ち、まずは手軽にPythonから勉強を始めました。(が、公私ともにバタついており、あまり思うようにはできていません......)そもそも文字でコードを書いたことが皆無なので、こちらの記事にあるコードはプログラマさんからすれば割とトンチンカンなものに見えるかと思いますが、備忘と戒め用のものですので、あらかじめご了承ください。環境整備系は、↓の公式ドキュメントから抜き出しているようなものなので、詳しくは以下ドキュメントを参照してください。公式ドキュメントPythonを使用したエディタのスクリプト作成また、UnrealPythonで使えるUnrealのAPIは以下を参考にしてください。レベル【★★】まずは、Pythonを使えるように、プラグインを追加します。UnrealEditorを開き、「Edit」→「Plugin」を選択します。Plugin」にチェックを入れます。入れたらエディターを再起動しましょう。エディタ左上の「File」内に「Python」という項目ができていれば、問題なくプラグインが入っております。基本的にはこれでPythonを実行する環境は整いました。選択すると、Pythonファイルを選択するウィンドウが開き、選択することで、そのPythonファイルを実行してくれます。Script」に一覧で登録されているので、そこから選択することでも実行可能です。Script」という項目の配列に、Pythonファイルのパスを登録しておくことで、エディターが起動したときに自動でこのPythonを実行してくれます。入力することでも、実行できます。Log内の「Cmd」という部分をクリックすると、「Python」という項目があります。これを選択することで、ファイルを指定して実行するのではなく、Pythonコマンドを入力して実行することができます。Paths」に、呼び出したい関数などが記載されているPythonファイルのフォルダパスを追加し、一度エディタを再起動することで、Pythonコマンドの「import」から、Pythonファイルをimportすることができる。一度importしたら、エディタを閉じるまではimportしなくても、関数などを呼び出すことが可能のようです。[コマンド]」で「[コマンド]」にPythonコマンドを入力することでも実行可能です。※一度インポートした後に、Pythonファイルを書き換えても、その変更は適応されません。(~~~)」というコマンドを打つことで、編集が適応されます。~~~」というログが出る場合には、コメントなどで使われている「全角文字」を消してください。utf-82018/06/13追記:」と記載しておくことで、コメント・文字列への日本語入力が可能なようでした。ここからは、Pythonを使った処理の例を紹介していきます。【★★★】まずは、適当にマテリアルを作成します。マテリアルを開いて、パラメーターノードを追加していきます。※今回はScalarParameterをいじるので、適当にパラメーターをいくつか作りました。出来ましたらいったん閉じて、これを親にしたMaterialInstanceを作ります。Instanceを選択)作成できましたら、Unreal側の準備は完了です。Pythonを書いていきます。その前に、先ほど冒頭の「その4」で説明した、Pythonファイル内の関数を実行するための準備をしましょう。プロジェクトフォルダ以下の適当な位置に、Pythonファイルを保存する場所を作ります。そのパスを登録しておきましょう。(その後エディタ再起動)できたら、フォルダの中に.pyという拡張子のファイルを作成しましょう。編集はメモ帳などでもできますが、「Idle」などのソフトを使うと見やすいですでは、コードを書いていきます。※見ずらいコードかと思いますが、何卒温かい目で見てください。コメント付きファイルはサンプルプロジェクトの「/Content/Python/Commented」内にあります。ご自由にご覧ください。has.")※内部的な仕様になりますが、ScalarParameterなどのパラメーターは、構造体の配列で管理されているようなので、UnrealAPIから構造体の型を拝借して、そこに値を入れていっています。Utility」クラスの機能を使って、コンテンツブラウザで選択しているアセットを取得しています。帰ってくる値は、Materialが持っているすべてのParameterではなく、Overrideフラグにチェックが入っているParameteたちが返ってくるようです。Library」というクラスに、「set_material_instance_scalar_parameter_value」という関数があって、返り値がboolなので、「これ使えばいいじゃん!」と思ったのですが、どうやらこのboolは何をしてもFalseが返ってくるようでした。...orzですが、こちらの機能を使った方が、スクリプトが簡素になったので、その機能を使った場合のコードも上げます。ちなみに、任意のパラメーターのOverrideのフラグを外すには、「get_editor_property」から「scalar_parameter_values」で返ってきたScalarParameter配列から任意のものをRemoveし、「set_editor_property」の「scalar_parameter_values」でそれを入れてやると、チェックが外れます。Library」の「clear_all_material_instance_parameters」を使えば、パラメーターのOverrideフラグを一括でリセットすることもできます。このコードを書いたPythonファイルを、先ほど作成したフォルダに入れておきます。Unrealエディターに戻ります。Logから直接Pythonコマンドを実行する方法で、コマンドを入力します。パラメーター変更の関数を実行します。実行後ひとまずここまでで前半を終わります。後編では、Blutilityを使ってエディター内でより使いやすくしてみたいと思います。後編はこちら※この記事のサンプルプロジェクトは以下URLにアップされています。コメントをキャンセルメールアドレスが公開されることはありません。*サイト次回のコメントで使用するためブラウザーに自分の名前、メールアドレス、サイトを保存する。【UE4】【C++】独自の簡単なスクリプトシステムを作る-後編。