アンリアルエディタ上で、ユーザーが手動にて行う操作を自動化する方法を模索しています。
例をあげますと
- 『BSPブラシ』や『各種ボリューム』のビューポートへのドラッグ&ドロップ(レベルへの配置)
- 配置した『BSPブラシ』や『各種ボリューム』の配置情報の変更(Location、Rotation、Scaleなど)
- 配置した『BSPブラシ』や『各種ボリューム』の頂点操作による変形(ジオメトリの編集)
- 配置した『BSPブラシ』や『各種ボリューム』のパラメータの変更(“private” な独自クラスメンバへのアクセス)
などの操作をマクロ実行のようなもの、もしくはプラグインを作成することで自動化する方法はありますか?
アンリアルエディタのオフィシャルなバージョンアップとの互換性を維持するため、
アンリアルエディタ自体のカスタマイズ(変更、改良)は行わない方法でと考えています。
alwei
(alwei)
2
UE4ではあらゆる情報をクリップボードへテキスト情報として保持しており、その情報を解析する事が出来ればある程度に自動化が可能だと思われます。
参考
http://unrealengine.hatenablog.com/entry/2015/05/17/210000
このように配置情報もテキストとして保持してクリップボードに格納出来ればそれをそのままペーストする事により、マクロ化などが可能です。ただこの情報についてはオフィシャルなドキュメントがありませんので、自力で解析する必要があります。
それさえ出来てしまえば、プラグインでも作成可能ですし、外部ツールから配置情報やプロパティ情報の生成まで可能だと思われます。
ご返答、ありがとうございます。
クリップボードへのペースト用テキスト情報を生成する方法は色々と応用が利きそうですので
実装の候補として解析、検証してみようと思います。
こちらの方法で実装するとしたとき、配置情報のエディタ(アウトライナ)へのペーストは
手動で行うという認識で間違いないでしょうか?
その場合、そのペースト動作のような入力系イベントもプラグインなどで自動化することは可能でしょうか?
(自動化が可能ならば配置情報の生成とエディタへのペーストがプラグインで一括して処理できるので)
といいますのも、当初『BSPブラシ(Boxブラシ)』を配置するのに、エディタの挙動に則り
ABrush
+ UModel
+ UBrushComponent
+ UBrushBuilder(UCubeBuilder)
を SpawnActor() や NewObject<>() などを駆使してインスタンスを生成し、
パラメータの変更を行えないかというところから検証を始めたところ
いくつかのメンバが “private” になっていて直接変更できなかったり、
ならば、エディタが『BSPブラシ』を配置するときに使用している
ABrush* UWorld::SpawnBrush()
などのアクタを生成する関数などを直接使用できないかと検証したところ、
FBspModeModule
SBspPalette
のようなエディタの保持しているパラメータが設定されていることが前提になっているうえに、
こちらも外部から設定、変更できない状況がほとんどでしたので、先の質問にて
ユーザーが手動にて行う操作を自動化する方法
例えば
『配置』モードをクリック(選択)
『BSP』をクリック(選択)
『ボックス』をクリック(選択)
といったアンリアルエディタを操作する『入力系イベントを自動化する方法はありますか』
という意味も含めて書かせてもらいました。
やや言葉足らずな質問ですみませんでした。
エディタが使用しているデリゲート関数を使えばアクセスすること自体は可能なようですが
これらを解析するのはなかなかに骨が折れそうなので、なにかしらの有効な方法があるようでしたら
お知恵を借りられればと思います。
よろしくおねがいします。
alwei
(alwei)
4
そうですね、そこまで突っ込んだ事をやろうとすると相当骨が折れると思います。
そこまでの自動化をご希望であればエピックゲームズさんの力を借りるか(つまりライセンシーになるということ)、英語で質問を投げてみるかだと思います。
AnswerHub日本語コミュニティ内ではそこまで詳しく知っている人はおられないと思います。
ご返答、ありがとうございます。
自動化の方法の検証を進めていると、エンジンのかなり深い部分まで解析する必要があり
手間とリターンを考えるとあまり有効な方法ではないなとうすうす感じていたので
教えていただいた方法を参考に、別方向からのアプローチを検証してみたいと思います。
この度は色々とご教授、ありがとうございました。
クリップボードに保存される配置情報などの記述フォーマットについてですが、
UE3 の UnrealScript で、DefaultProperties でコンポーネントのインスタンスの生成、
および編集を行うときの記述に近いような気がします。
http://udn.epicgames.com/Three/ActorComponentsJP.html#コンポーネントを追加する
とはいえ、これはUE3でのことなので、UE4では違うかもしれませんが、
解析の参考にはなるのではと思います。