Maya 2023 Python2 スクリプトの Python3 変換
以前よりたまに利用させていただいていた、良くできた揺れものスクリプト「YURAYURA」ですが、またも利用させていただこうとすると、、Maya 2023では動かない!
Mayaは2022からPython3がデフォルトで起動しているのだ。
「YURAYURA」はPython2で記述されているので、MayaをPython2モードで起動しようかと思っていると、なんと、出来ない。
Mayaは2023ではPython3への切り替えができないのだ!
Autodeskの記述にこんなものを発見した。
『Maya は Python2 をサポートしなくなり、Python 2 モードで起動できなくなります。』とあったのだ。
仕方ないので、Python2 スクリプトを Python3 へ変換してみた。
※尚、環境は私の環境(私のPC)を基本に説明させていただいています。
HOW TO
まず、変換のスクリプトの場所。
C:\Program Files\Autodesk\Maya2023\bin\mayapy.exe
ライブラリィはこちら。
C:\Program Files\Autodesk\Maya2023\Python\Lib\lib2to3
存在を確認してい、分かりやすく、デスクトップに任意のフォルダ(私の場合は’myScript‘)を作成し、その中に「YURAYURA.py」を入れて変換してみる。
変換実行
スクリプトの実行はコマンドプロンプトで行います。
コマンドプロンプトを管理者権限で起動して、ディレクトリを「YURAYURA.py」のある場所に移動させてます。
C:\>cd Users\itami\Desktop\myScript
C:\Users\itami\Desktop\myScript>
以下のコマンドを入力します。
C:\Users\itami\Desktop\myScript>"C:\Program Files\Autodesk\Maya2022\bin\mayapy.exe" -m lib2to3 --nofix=long -w YURAYURA.py
何か変換している感じであれば多分動いているでしょう。
「YURAYURA.py」の実際の出力は以下の内容でした。
RefactoringTool: Skipping optional fixer: buffer
RefactoringTool: Skipping optional fixer: idioms
RefactoringTool: Skipping optional fixer: set_literal
RefactoringTool: Skipping optional fixer: ws_comma
RefactoringTool: Refactored YURAYURA.py
--- YURAYURA.py (original)
+++ YURAYURA.py (refactored)
@@ -8,7 +8,7 @@
プラグインとして使用する場合は、mayaのscriptsフォルダに
このファイルを入れます。
-C:\Users\[user]\Documents\maya\scripts
+C:\\Users\[user]\Documents\maya\scripts
もしくは、PYTHON_PATHが設定してある場所でもOKです。
実行コマンド
@@ -43,7 +43,7 @@
class YURAYURA:
def __init__(self):
- print "================== YURAYURA =================="
+ print("================== YURAYURA ==================")
self.root = self.getNode("YURAYURA") # root
self.nc = self.getNode("YURAYURA_nucleus") # nucleus
self.hs = self.getNode("YURAYURA_hairSystem") # hairSystem
@@ -108,10 +108,10 @@
def generate(self):
# 選択無しは終了
if not len(pm.selected()):
- print "nothing selected"
+ print("nothing selected")
return
- print "generate YURAYURA"
+ print("generate YURAYURA")
# Play Every Frame, Max Real-timeにする
pm.playbackOptions(e=1,ps=0,mps=1)
@@ -169,7 +169,7 @@
# 選択階層と同階層のJoint階層を作成
for ih,h in enumerate(self.getHie(sel[i],[])):
- print h
+ print(h)
# bake用セットに入れる
self.bakeSet.add(h)
# オフセットトランスフォーム作成
@@ -251,7 +251,7 @@
# 数値の変更を更新
def modify(self):
- print "MODIFY SETTING"
+ print("MODIFY SETTING")
# nucleus設定
self.setNc()
# hairSystem設定
@@ -271,7 +271,7 @@
# コリジョンを追加する
def addCollide(self):
- print "ADD COLLIDE"
+ print("ADD COLLIDE")
# nucleus設定
self.setNc()
# hairSystem設定
@@ -283,7 +283,7 @@
# bake処理 シミュレーション階層とUIを削除
def bake(self):
- print "BAKE"
+ print("BAKE")
pm.bakeResults(
self.bakeSet.members(),
sm=1,
RefactoringTool: Files that were modified:
RefactoringTool: YURAYURA.py
C:\Users\itami\Desktop\myScript>
変換前スクリプトは、「.py.bak」としてバックアップされます。
日本語エンコードcp932の削除
Python2 スクリプトを Python3 へ変換は、2to3にお任せのノーチェックですが、cp932エンコードエラーが発生していたので、こちらはコメントをすべて手作業で削除しました。
ちなみにこちらの作業はVSCodeで行っていますのでUTF-8で保存となります。
Pymelのインストール
「YURAYURA」はPymel記述なのでPymelも必要。PymelはMayaオフィシャルライブラリィではないので、インストールが必要。
コマンドプロンプトで、C:\Program Files\Autodesk\Maya2023\bin に移動して、mayapy -m pip install “pymel>=1.3.,<1.4.“ を実行。
PymelのインストールはAutodeskにも記述があります
以下が実行結果です。
C:\Program Files\Autodesk\Maya2023\bin>mayapy -m pip install "pymel>=1.3.*,<1.4.*"
Collecting pymel<1.4.*,>=1.3.*
Downloading pymel-1.3.0a2-py2.py3-none-any.whl (12.4 MB)
|████████████████████████████████| 12.4 MB 6.8 MB/s
Requirement already satisfied: future>=0.18 in c:\program files\autodesk\maya2023\python\lib\site-packages (from pymel<1.4.*,>=1.3.*) (0.18.2)
Installing collected packages: pymel
WARNING: The script ipymel.exe is installed in 'C:\Program Files\Autodesk\Maya2023\Python\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 pymel-1.3.0a2
WARNING: You are using pip version 21.2.4; however, version 22.3.1 is available.
You should consider upgrading via the 'C:\Program Files\Autodesk\Maya2023\bin\mayapy.exe -m pip install --upgrade pip' command.
C:\Program Files\Autodesk\Maya2023\bin>
何とか変換とPymelのインストールが終わり、起動と動作の確認ができました。
「YURAYURA」に関しての説明は割愛しますが、「YURAYURA」の作者、情報源の方々に感謝します。
参考URL
- https://www.comtec.daikin.co.jp/DC/UsersNotes/Ritaro/tutorial/maya_14/
- https://matiascodesal.com/blog/how-to-convert-maya-python-2-code-to-python-3/