🛠️

UE5で ShotGrid PipelineToolkit (tk-unreal) を無理やり使う

2021/12/09に公開

概要

Autodesk ShotGrid と各種ツールを連携させるために「Pipeline Toolkit」というスクリプト群が提供されています。

そのUnreal Engine 用のがこちら▼
https://github.com/ue4plugins/tk-unreal

最新版は本稿時点で v1.1.0 、リリース日は2020年12月11日。約1年前です。
ツールキットにしては非常に珍しく「ShotGridリブランディング事変」をスルーしており、気概を感じます。

https://github.com/ue4plugins/tk-unreal/releases/tag/v1.1.0

4.26に対応したよ というリリースで止まっているわけですが、
4.27もさることながら、やっぱり動かしたいじゃないですか、
UE5で!

そういうことを試みてみたいと思います。

※こうした経緯ですので、本稿の内容を試したことにより発生したトラブル等の責任は負いません、あしからずご了承ください。

用語の確認

慣例に従い、以下 ShotGrid Pipeline Toolkit をSGTKと略します。
またSGTKに含まれているファイルブラウザなどの各種ツールも、SGTK用語に合わせてappと表記します。

tk-unrealの準備

UE5で使う以前に、UE4で使えるようにしておく必要があります。

公式ドキュメントではこちら、
https://docs.unrealengine.com/latest/ja/ProductionPipelines/UsingUnrealEnginewithAutodeskShotGrid/SettingUpShotGridProject/

または、当方で以前書いた解説記事はこちら
https://zenn.dev/it_ks/books/0dd16c796f470e/viewer/8fee4b
です。

……を済ませていただいて、

UE4でtk-unrealが動く、という状態からスタートします。

確認

上記の拙著解説の末尾で少し言及しているのですが、

実はv1.1.0時点で、なにもしなくてもUE5上でtk-unrealは動いています。
動いていますが、メニューバーのデザインが変わった影響もあってかSGメニューアイコンが表示されません。動いているもののアクセスのしようがない、という状態です。

そこで本稿では、メニューに頼らずPython経由で各appを起動することを目指します。

インスタンス取得

ほかのSGTKの作法的には、Python環境で dir() すれば、そのツールとSGとを結ぶオブジェクト(Engine)が見えるんですが、UEの場合はそうではなく、Python API(unreal モジュール)の中に組み込まれています。

https://docs.unrealengine.com/latest/en-US/PythonAPI/class/ShotgunEngine.html

SGTK側のドキュメントを読みながらどうやってEngine取得するかなーと頭を悩ませていたのですが、 unreal モジュール以下にあるとは。。。!
(これに気づくまでに一番時間がかかりました汗)

まずインスタンスを取得します。

sg = unreal.ShotgunEngine.get_instance()

あとは当該ドキュメントを読みながらそれっぽい内容を実行していくだけです。

メニューアイテムを取得

SGメニューがUI上にあればそれをプルダウンして実行するところですが、
無いので、それに相当する内容=メニューアイテムを取得します。

for item in sg.get_shotgun_menu_items():
    print(item.title)

Work Area Info...」や「Shotgun Panel...」など、SGメニューに並んでそうな項目が取れました。

メニューを実行

メニュータイトルをexecute_commandへ渡すことで、appを起動できます。

command_name = 'Work Area Info...'
sg.execute_command(command_name)

Work Area Info を開くことができました!

あとはこれを繰り返すことでこのように

UE5上でもSGの各ツールを起動することができます。
やったね!

なおこれらを使ったワークフローは試していないので何か起きる(起きない)かもしれません、ご了承ください。

発展的な内容として、これらをEditor Utility Widgetでツールパレットみたいにするといいのかもしれないと思いました。
その際の注意としては、
作業の状況(Context)によって使えるappは変動するので、そのときどきで「get_shotgun_menu_items」して利用できるappを適宜判断してください、といったところでしょうか。

おまけ

起動時はロギングがDEBUGになっているようです。
こちらで切り替えることができます。

sg.execute_command('Toggle Debug Logging')

記事をほぼ書いてから気づいたので、スクリーンショットにはDEBUGが流れまくっています。

終わりに

tk-unrealはUE5でも使えるよ!という記事でした。
はやくUE5に正式対応したリリースがあるといいですね! & UE5EA2とかEA3とかも待ち遠しいですね!


おしらせ

ShotGrid のTipsを技術同人誌としてまとめました。
製本版をBOOTHにて、電子版を技術書典オンラインマーケットにて頒布中です。

BOOTH :
https://circleqt.booth.pm/items/3472241
技術書典 :
https://techbookfest.org/product/5412773246795776?productVariantID=5465863454982144

Discussion