tk-cinema
MAXON Cinema4DとSGとの連携について書いていきたいと思います。
結果だけ先に書くと正攻法では動かず、無理やり頑張りました(๑´ڡ`๑)
この記事は、こちらのBook▼の一部として書かれました。
これができると?
この記事の内容を達成すると、SGのパイプラインツールキットを用いてCinema 4Dをパイプラインに組み込むことができます。
それができると、SG DesktopからC4Dを起動し、SGと連携するための各種ツール群を利用できるようになります。
それによって下記のようなワークフローが実現できるそうです。
Github
mikedatsik さんが開発・Githubに公開しておられます。Clarisse用に開発されたものをベースにしておられるとのこと。ツールキット名は「tk-cinema4d」とか「tk-c4d」ではなく、 「tk-cinema」 です。
本稿執筆時点で最新リリースは v1.0.0(2019/11/04)。
ただし、Github右カラムのReleases欄にリリースしていなくても 更新はされている (ことがある)という点に注意が必要です。
備考 - 対応C4Dバージョンについて
READMEによると開発時のテストはR20でやったとのこと。ただし現在ではR20はインストールできなくなっているため、R24で作業を進めることにします。
なおR23がpy37、R24がpy39。VESのVFX Reference Platform では2022DRAFT時点でpy39と書かれているので、2021年時点ですでに39というのは攻めてますね。
R23
R24
作業の内容
以下、大きくは Blenderでの連携作業記事 に沿い、Blender記事と重複する内容は言及にとどめます。
SG上でtk-cinemaを登録
↓
ローカルのconfigファイルを改変
↓
tankコマンド実行
SG上でtk-cinemaを登録
ADMINメニューの「Software」にて登録します。
configを改変
engine_locationやenv以下など各種ymlに、githubの内容を追記していきます。
templates.ymlのShotセクションにはレンダリング関連のパスがありませんので、必要ならtk-mayaやtk-nukeを参考に足すことを検討しましょう。
settings以下にtk-cinema.ymlを設置するのも忘れずに。
engine location
tankコマンド実行時にファイルを取得してくるための「tk-cinemaの場所」をengine_location.ymlに記述しますが、すでに触れた通り最新版はgithub上でreleaseされていない(バージョンがついていない)ため、readmeで紹介されている書き方では取得できません。
# Cinema 4D
engines.tk-cinema.location:
type: github_release
organization: mikedatsik
repository: tk-cinema
version: v1.0.0
▲ この書き方だと、v1.0.0 = R20当時のtk-cinemaがダウンロードされます。
R24対応をコミットしているのはまた別の開発者(danbradhamさん)で、
ここが一番新しいようです。
bns-master
のBNSがなんなのかはよくわかりません[1]。バンダイ・ナムコ・スタジオ?
ともあれ、こういう感じで記述してみました。
type: git_branch
branch: bns-master
path: https://github.com/danbradham/tk-cinema
version: d99ccfb
書き方は公式ドキュメント▼を参照しました。
余談ですが、type
にgit_branchを指定するとき、branch
でmasterを指定するとtankに正しくないと言われます。type
がgitの時には自動的にmasterを見るため、git_branchの時ならmaster以外を指定せよ、ということのようです。
また、version
は v1.0.0 のようなセマンティックバージョンな書き方以外にコミットのハッシュを指定できます。上記の書き方だと
の時のtk-cinemaを見に行くということになります。
tankコマンド実行
tankコマンドを実行し、githubのファイルをローカルにダウンロードしてきます。
tank cache_apps
constant_apps.py を編集
constant_apps.py は、tankでダウンロードしてきた後に tk-cinema以下のpython\tk_cinema
に置かれるpyファイルで、C4Dに追加されることになるSGメニューの内容を編集するためのものです。自作appを追加するときなどに更新します。
メニューラベル、コマンドID、ペース、の3要素をリストにして記入するとのこと。ペース(pace, 歩調・速度・足並み)というのはどういう用語かよくわかりませんが、「separater」「main」「submenu」が確認でき、なんとなくわかります。
また、IDを確認するための関数が併記されています。
def get_plugins():
out = []
for item in engine.commands.items():
tmp = [item]
m = hashlib.md5()
m.update(item[0])
plug_id = str(int(m.hexdigest(), 16))[0:7]
tmp.append(plug_id)
out.append(tmp)
return out
…もしかしたら、編集したものをtk-cinema直下に保存して使うのかもしれませんが、本稿では未詳です。
SG DesktopからCinema4Dを起動
一応C4Dのアイコンをクリックすれば起動しますが、試行時は上記で触れたようにv1.0.0をダウンロードしていました。
するとまずsgtkが見つからないというエラーが発生し、ここでreleaseされているバージョンよりも開発が進んでいること、mikedatsikさん以外にdanbradhamさんも開発していること、などの事態が発覚します。
▼sgtkがみつからないときの図。
▼SG Communityの、C4DがPython 37へ移行した際のトラブルについてのDanさんの投稿
その後、R24をアンインストールしてR23で試してみたり、SG DesktopをPy3 Modeにしたり、mikedatsikさん、danbradhamさんのいろんなコミットバージョンを遡ってみたりと試しましたが、エラーは解消できず。具体的には以下の二点です。
PySide2/__init__.py: Unable to import shiboken2 from C:\Program Files\Maxon Cinema 4D R24\resource\modules\python\libs\python39, C:(後略)
...
AttributeError: 'NoneType' object has no attribute 'qVersion'
...
AttributeError: 'NoneType' object has no attribute 'QTextCodec'
...
raise RuntimeError(
RuntimeError:Failed to load tk-cinema! Can not start or find engine.
importしたQtCore、QtGuiがなかみがNoneになっているようで、sys.path.insert的なのを頑張ればいけるのかなと思いますが、コミュニティのやり取りを見ていると解決していたはずでは?という感もあり。
苦肉の策
SG Desktopと一緒にインストールされるPySide2、shiboken2を、Roaming以下のC4DのPython lib置き場に 手動コピー しました。(SG由来のものでなくても、37用のPySide2/shiboken2であれば大丈夫だと思います。未確認ですがR24なら39用を。)
C:\Program Files\Shotgun\Python3\Lib\site-packages
C:\Users\{user}\AppData\Roaming\Maxon\Maxon Cinema 4D R23_DBA5903C\python37
すると▼SGメニューが起動時に現れました!(SG Desktopはpy2、py3モードどちらでも)
Shotgun Panelが表示されなかったりAsset工程(asset_step)なのにSync Frame Range があったりと、実用するなら調整が必要そうです。
バージョンは以下です。
Cinema4D : v 23.110 (R23_DBA5903C ?)
tk-cinema : https://github.com/mikedatsik/tk-cinemaの6caa901(https://github.com/danbradham/tk-cinemaのdb27e8dも確認した)
SG Desktop : v1.7.0 (py2,py3 mode)
※本稿投降後、 6caa901 と db27e8d がマージされ 44f5f3b になりました。
備考
mikedatsikさんはほかにC4D用appとして、「tk-cinema-setuprender」「tk-cinema-playblast」も開発しておられるようです。
またdanbradhamさんは環境設定/モジュール管理システム「cpenv」を開発していて、それとSGを連携させる「tk-cpenv」を公開されてます。
備考2 - SG Desktop py3 mode
環境変数SHOTGUN_PYTHON_VERSION
を3にすると、SG Desktopがpy3モードで起動します。
…ざっと探した感じ、readme的な場所じゃなくてこの「リリースノートv1.6.1」くらいしかこれについて言及してないんですが、それってどうなんですかね。。。
SET SHOTGUN_PYTHON_VERSION=3
"C:\Program Files\Shotgun\Shotgun.exe"
おしらせ
ShotGrid のTipsを技術同人誌としてまとめました。
製本版をBOOTHにて、電子版を技術書典オンラインマーケットにて頒布中です。
BOOTH :
技術書典 :-
Brand New Schoolという制作会社のようです。 https://www.linkedin.com/company/brand-new-school
Githubではいくつかのsg関連の開発をおこなっているようです。
https://github.com/nybrandnewschool ↩︎
Discussion