みなさんこんにちは。先日、ちょっと遅れて『アバター:ウェイ・オブ・ウォーター』を観てきました。いやー、すごかったです。最初の『アバター』(2009)が公開されたときにも驚きましたが、今回はそれ以上のボリュームとクオリティで終始圧巻されました。そして『THE FIRST SLAM DUNK』も観たのですが、こちらも負けず劣らず(むしろ勝っているのでは!?)すごかったです。関係者の皆様、素晴らしい作品をありがとうございました。
ツールを使う流れをつくる
前回までで、gitリポジトリにコードをpushしてからリリース用パッケージを作成するまでのながれを自動化し、さらにコミットと成果物を厳密に一対一で対応することができるようになりました。ここまでくると、人力で各種管理を行なってきたのとはまったく異次元の管理体制をつくることができます。今回から、実際にツールランチャーをつくりながらツールの管理を行うためのしくみを構築していきます。
ランチャーに関しては、連載の第22回で当社ツールを使って概要を説明しました。このときには内部の詳細については簡単に触れただけでした。しかし、われわれは既にランチャーの機能を実現するための背景技術に関して十分な知識をもっているので、自分でイチからつくることができるはずです。とは言ってもいきなり全部をやろうとすると大変なので、まずはシンプルな方法から始めて、徐々に成長させていきましょう。
ルール決め
ランチャーをつくるにときの基礎になるルールを決めます。さしあたってシンプル、かつよく見かけるスタイルをとるようにします。
-実行ファイルやパッケージはファイルサーバ上に置く
-venvもサーバ上に置き、作業者全員で共有する
-ツール類の置き場は T: にマウントする
-T:\Toolsに実行ファイル類を置く
-T:\PJ\(プロジェクト名)以下にプロジェクト関連の設定やvenvを置く
-T:\wheelhouseにパッケージ類を置く
-プロジェクトデータは P: にマウントする
-使用するMayaのバージョンは2023
さしあたってこんな感じでしょうか。実はこの方法には多くの問題があり、あまり良い方法とは言えません。問題点の洗い出しと改善は今後徐々に行なっていきます。
サーバー上の環境構築
ルールに沿って環境構築をしていきます。Maya 2023はPython3.9.7を使用しているので、サーバにも同バージョンを置いておきます。PythonのリリースからインストーラをダウンロードしてT:\Tools\python-3.9.7にインストールします。
インストールができたら、pip upgradeをしておきます。
T:\Tools\python-3.9.7>python -m pip install --upgrade pip
Requirement already satisfied: pip in \\g14\users\chiyama\documents\projects\projects_jcgs\cgworldweb_tech\50_launcher\t\tools\python-3.9.7\lib\site-packages (21.2.3)
Collecting pip
Using cached pip-22.3.1-py3-none-any.whl (2.1 MB)
Installing collected packages: pip
Attempting uninstall: pip
Found existing installation: pip 21.2.3
Uninstalling pip-21.2.3:
Successfully uninstalled pip-21.2.3
WARNING: The scripts pip.exe, pip3.10.exe, pip3.9.exe and pip3.exe are installed in 'T:\Tools\python-3.9.7\Scripts' which is not on PATH.
Consider adding this directory to PATH or, if you prefer to suppress this warning, use --no-warn-script-location.
Successfully installed pip-22.3.1
T:\Tools\python-3.9.7>
T:\wheelhouseに、前回作成したalgorithm-1.7.21-py3-none-any.whlを置いておきます。ほかにも使用したいパッケージがあればここに置きます。次にプロジェクト用フォルダを作成します。今回は、プロジェクト名をlauncherTestとします。
T:\Tools\python-3.9.7>mkdir P:\PJ\launcherTest
T:\Tools\python-3.9.7>mkdir T:\PJ\launcherTest
続いて、Maya 2023用のvenvを作成します。
T:\Tools\python-3.9.7>python -m venv T:\PJ\launcherTest\venvMaya2023
T:\Tools\python-3.9.7>cd T:\PJ\launcherTest
T:\PJ\launcherTest>venvMaya2023\Scripts\activate.bat
(venvMaya2023) T:\PJ\launcherTest>python -m pip install --upgrade pip
Requirement already satisfied: pip in \\g14\users\chiyama\documents\projects\projects_jcgs\cgworldweb_tech\50_launcher\t\pj\launchertest\venvmaya2023\lib\site-packages (21.2.3)
Collecting pip
Using cached pip-22.3.1-py3-none-any.whl (2.1 MB)
Installing collected packages: pip
Attempting uninstall: pip
Found existing installation: pip 21.2.3
Uninstalling pip-21.2.3:
Successfully uninstalled pip-21.2.3
Successfully installed pip-22.3.1
venvにインストールするパッケージをリストアップしたrequirements.txtを作成します。venvごとに使用するパッケージが異なるため、(venv名).txtという名前にします。
T:\Tools\python-3.9.7>more T:\PJ\launcherTest\venvMaya2023.txt
algorithm
venvに入ってパッケージをインストールします。--find-linksでフォルダを指定することで、ローカル環境にあるリポジトリを参照することができます。
(venvMaya2023) T:\PJ\launcherTest>pip install -r venvMaya2023.txt --find-links T:\wheelhouse
Looking in links: t:\wheelhouse
Collecting algorithm (from -r venvMaya2023.txt (line 1))
Installing collected packages: algorithm
Successfully installed algorithm-1.7.21
(venvMaya2023) T:\PJ\launcherTest>
Maya起動用BATを作成する
venvを有効にした状態でMayaを起動するためのBATを用意します。ここで使用するテクニックはJenkinsで用いたものと同じですね。
(venvMaya2023) T:\PJ\launcherTest>more T:\PJ\launcherTest\Maya2023.bat
@echo off
set PJNAME=launcherTest
set ENVNAME=venvMaya2023
call %~dp0%ENVNAME%\Scripts\activate.bat
set MAYA_UI_LANGUAGE=en_US
set PYTHONPATH=%~dp0%ENVNAME%\Lib\site-packages
"C:\Program Files\Autodesk\Maya2023\bin\maya.exe"
(venvMaya2023) T:\PJ\launcherTest>
Mayaを起動する
作成したMaya2023.batでMayaを起動します。起動したら、venv内にインストールされているパッケージが問題なく実行できることを確認します(Jenkinsで既に同じことをやっているので、大丈夫なはずですが)。
import algorithm
print(algorithm.__file__)
from algorithm import search
list_data = [0, 1, 2, 3, 4, 5]
print(search.binary_search(list_data, 3))
T:\PJ\launcherTest\venvMaya2023\Lib\site-packages\algorithm\__init__.py
3
作業環境でも無事に実行されることを確認できました。algorithmパッケージはpipとvenvで管理できているので、パッケージを更新した際には新しい.whlをT:\wheelhouseに置いてpip installをするだけで良いですし、バージョンを戻す際にも同様です。また万が一、venv環境が壊れてしまった場合でも一度フォルダごと削除してつくり直せば、いつでも綺麗な状態に戻すことができます。これだけでも小さいチームで作業を進めるなら十分便利に使うことができるでしょう。
まとめ
今回は複数のアーティストがチームでMayaの作業をするための環境構築を行いました。内容的には今までやってきたことの応用なのであまり目新しいことはないです。なにせ、BATファイルを書くくらいで一行もコードを書いていないですしね。むしろ標準的な機能の組み合わせによって新しいことができるというのが強味と言えます。
第51回の公開は、2023年2月を予定しております。
痴山紘史
日本CGサービス(JCGS) 代表
大学卒業後、株式会社IMAGICA入社。放送局向けリアルタイムCGシステムの構築・運用に携わる。その後、株式会社リンクス・デジワークスにて映画・ゲームなどの映像制作に携わる。2010年独立、現職。映像制作プロダクション向けのパイプラインの開発と提供を行なっている。新人パパ。娘かわいい。
TEXT_痴山紘史 / Hiroshi Chiyama(日本CGサービス)
EDIT_尾形美幸 / Miyuki Ogata(CGWORLD)