liquidjumper MAYA,Python MAYA2022 リリース!スプリクト言語がPython3に対応|これで日本語ファイルの扱いに困らない

MAYA2022 リリース!スプリクト言語がPython3に対応|これで日本語ファイルの扱いに困らない

maya2022_python3_topimage

2021年3月24日に Autodesk M&E2022がリリースされました。

そしてAutodesk M&E製品に含まれるMAYA2022もリーリス

正直MAYA2020以降のアップデートに目ぼしい機能がないままMAYA2021を迎えるのかと想いきや、そのMAYA2021をスキップしてのMAYA2022。

そして、Autodesk Media & Entertainment Collection(Autodesk M&E)からは他に3ds MAX 2022MotionBuilder 2022もリリースされました。Autodesk M&E製品の1つMudbox2022については、まだ公式のリンクがありません。Autodesk製品の販売を行う各認定販売パートナーが発表する中にはMudbox 2022の文字もあるので、リリース自体は予定されているとは思うのですが、少なくとも現時点ではまだのようです。


注意:
■Autodeskのアクティベーションサポートは過去5バージョンまでです。
2021がスキップされたMaya・Motion Builder・Mudboxも3ds Maxと同様、2020、2019、2018、2017までで、2016は外れます。

■Autodeskのサブスクリプションサポートについては過去3バージョンまでです。
Maya・MotionBuilder・Mudbox(2022 + 2020,2019,2018)
3dsMax(2022 + 2021,2020,2019)


Maya 2022 の新機能および更新されたワークフローでアーティストの作業を効率化し、さらに、テクニカルアーティスト・エンジニアとの良好なコラボレーション環境が期待されます。

ピクサーが開発した3Dシーングラフ形式及びライブラリの、Universal Scene Description (USD )がサポートされ、USD と Maya ワークフローの組み合わせをシームレスに使用できます。それに伴い、アニメーション ツール、リギング ツール、モデリング ツールも大幅に更新。

又、Bifrost、Arnold for Mayaの新しいプラグインの更新、面白いものとしては、Oculus RiftHTC VIVEなどのVRヘッドマウントディスプレイを使用してモデリングするCreate VR for Maya 。3D空間でアイデアを直感的に形にできる、コンセプトデザインツールも追加されました。

その他にも様々な新機能やプラグインが追加されています。中でも、特定のコマンドやプラグインの場所を Maya がロードすることを防ぐ「セキュリティプリファレンス」。それと、起動時間と終了時間の短縮・起動中のフォーカス喪失を防止など起動の最適化が成された「起動時の操作性の改善」は地味ではありますが気になる改善点。

・カメラ シーケンサ
・独自のクラッシュ エラー レポートを取得する
・.hikc v1 の書き出しのサポート
・OCIO およびカラー管理
・リモート デスクトップ でビューポート 2.0 を OpenGL モードで実行する 

上記の動作をコントロールする新しい環境変数も追加されました。


Autodesk(オートデスク)



Maya 2022では多くの新機能やプラグイン、更新が実装されましたが、中でも筆者が注目するのは「Python 3」のサポートです。

これまでMAYAがサポートしていたPythonのバージョンは「Python 2.x」でした。基本的にMAYAのスクリプトを作成するのにPython2系で困ることは無いのですが、日本語ファイルの取扱には、面倒くささを感じていたので、今回の「Python 3」のサポートは歓迎。

この記事では、MAYA2022でサポートされた「Python3」でスクリプトを実行、日本語ファイルを文字化け無く読み込みこみます。又、Windows版とLinux版ではPython2系とPython3系を切り替えが可能なので、実際にPythonのバージョンを切り替える方法を紹介します。

・Maya 2022 の新機能:
https://help.autodesk.com/view/MAYAUL/2022/JPN/?guid=GUID-90A9A2C7-C8E3-4B4E-8C94-63553069F51E




MAYAで使えるPythonのバージョンを確認

早速MAYA2022でサポートされたPythonのバージョンを確認してみましょう。

MAYAでPythonのバージョンを確認するには、スクリプトエディターの[Python]タブで次のコードを実行します。

import sys


print(sys.version)


実行:

MAYA2022に実装されているPythonのバージョンは 3.7.7 である事が確認できました。

Pythonのバージョンは 3.7.7

MAYAのPython3でprint()出力

Python2系とPython3系の、最も分かりやすい違いとして挙げられるのが print の記述方法

Python3系でprint出力する場合は

print(“Hello python3”)

と出力要素を「( )」で囲む必要があります。

Python2系でも「( )」で囲んで記述する事は出来ましたが、

print “Hello python3”

と記述しても出力できました。しかしPython3系の場合この方法ではエラーになります。

MAYA2022のスクリプトエディターに次のコードを記述して実行。

print("Hello python3")


実行:

問題なく「( )」で囲んだ要素”Hello python3″が出力されました。

"Hello python3"が出力


試しに、「( )」をはずしたコードを実行してましょう。

pritnt "Hello python3"


実行:

やはりPython3でprintの「( )」を外すとエラーが返されました。

printの「( )」を外すとエラー

MAYAのPython3で日本語テキストファイルを読み込む

Pythonでファイルを読み込むにはopen()関数を使いますが、Python2.x系とPython3.x系ではエンコーディング引数の有無に違いがあります。

次のような日本語で書かれたテキストファイルをPythonで読み込む場合、open()関数を使用しますが、Python2.x系のopen()関数は、読み込む際に文字コードの指定が出来ないので、日本語などの2バイトで書かれたテキストファイルをopen()で開き読み込むと文字化けしてしまいます。

文字コードをutf8で保存したテキストファイル:textfile_utf8.txt

textfile_utf8.txt


なのでPython2系で日本語ファイルを読み込む場合は、codecsモジュールを使用する方法

import codecs


textfile = "D:/liquidJumper2/textfile_utf8.txt"
open_utf8 = codecs.open(textfile, 'r', 'utf-8')
textfile_read = open_utf8.read()
print(textfile_read)
open_utf8.close()


若しくは、読み込んだテキストをdecode()で”utf-8″に文字コード変換する必要があります。

textfile = "D:/liquidJumper2/textfile_utf8.txt" 
open_textfile = open(textfile)
textfile_read = open_textfile.read()
print(textfile_read.decode(encoding="utf-8"))
open_textfile.close()



しかし今回MAYA2022でサポートされたPython3.x系なら、open()関数に文字コードの指定ができるので、その手間が減ります。

openの引数[encoding]に”utf-8″を指定。

textfile = "D:/liquidJumper2/textfile_utf8.txt" 
open_textfile = open(textfile,"r",encoding="utf-8")
textfile_read = open_textfile.read()
print(textfile_read)
open_textfile.close()


実行:

文字化け無く日本語とアルファベットが混在する文字列が出力されました。日本語・英語どちらかを気にして右往左往する必要がありません。

日本語とアルファベットが混在する文字列が出力されました

MAYAのPython3で日本語jsonファイルを読み込む

Python2系で日本語を含むjsonファイルを読み込むとエスケープ文字で出力されてしまう等扱いが面倒でした。
でも今回のアップデートでPython3系に対応したことにより、その悩みから解消されます。

Python3.x系で日本語を含むjsonファイルを読み込む場合も、テキストファイルの時と同様に、open()関数の引数[encoding]に文字コード”utf-8″を指定します。


文字コードUTF-8で保存したjsonファイル:json_file.json

json_file.json


jsonモジュールを使用してjsonファイルを読み込みます。
open()関数の引数[encoding]に文字コード”utf-8″を指定。

import json 


jsonfile = "D:/liquidJumper2/json_file.json" 
jsonfile_open = open(jsonfile,"r",encoding="utf-8") 
jsonfile_load =json.load(jsonfile_open) 
print(jsonfile_load) 
jsonfile_open.close()


実行:

辞書に変換されて読み込まれ、日本語も正しく出力されました。

辞書に変換されて読み込まれ、日本語も正しく出力されました。

MAYAのPython3で日本語csvファイルを読み込む

日本語を含むcsvファイルを、Python2系で読み込む場合、リスト化されて読み込んだUnicodeの要素を取り出し、デコードして日本語文字列に変換する必要があります。

でもPython3.x系の場合はopen()関数に文字コードを指定できるので、あまり気にする必要がありません。


文字コードUTF-8で保存したcsvファイル:csv_test_j.csv

csv_test_j.csv


csvモジュールを使用してcsvファイルを読み込みます。
open()関数の引数[encoding]に文字コード”utf-8″を指定。

import csv 


csvfile = "D:/liquidJumper2/csv_test_j.csv" 
csvfile_open = open(csvfile,"r",encoding="utf-8") 
csvfile_csvread =csv.reader(csvfile_open) 

for i_csvfile_csvread in csvfile_csvread: 
    print(i_csvfile_csvread) 

csvfile_open.close()


実行:

一行毎にリスト化され日本語も正しく出力されました。

一行毎にリスト化され日本語も正しく出力されました

Python2とPython3を切り替える

Python2系で書かれたスクリプトを、MAYA2022で使いたい場合は、PythonのバージョンをPython3系からPython2系に変更する必要があるかもしれません。

MAYA2022は既定で Python 3 モードで起動しますが、Windows版Linux版は、Python2系とPython3系の切り替えが可能です。

■Python3系からPython2系に切り替える場合

・コマンド ラインから Maya を起動するときに -pythonver 2 オプションを使用

又は

・Maya_PYTHON_VERSION 環境変数を 2 に設定してから、コマンド ラインで Maya を起動


コマンド ラインからオプション -pythonver 2 を付けてMaya を起動します。

pythonver 2  を付けてMaya を起動


起動したMAYA2022のスクリプトエディターでPythonのバージョンを確認します。
2.7.11 と出力されPython2系に変更された事が確認できました。

2.7.11 と出力されPython2系に変更された事が確認できました








 最新のゲーミングPCが安く手に入れられる「 FRONTIER 」

 豊富なカスタマイズメニューで、あなた好みの1台が購入できます。

 人気の秘密は何と言ってもコスパの高さ。
 最新のCPU・GPUパーツを搭載したモデルを驚きの価格で提供。

 山口県の自社工場で組み立てられ徹底した試験・検査後に出荷。
 無償修理サービスもありサポート体制も安心。

 コスパに徹底的にこだわる方は公式サイトへ >> 【FRONTIER】





𝕏 ( 旧Twitter ) Facebook Pocket LINE はてブ

おすすめの関連記事



あわせてよく読まれている記事