2015/08/24

maya : pymelをScriptEditorで日本語を入れて書く方法

リアクション: 
久しぶりの記事更新となります。
Softimageが完成したことによる余波で、Mayaへ移籍しました。
やっと一年くらい。主にMotionをやっておりますが、未だにMayaが
やりにくいです(笑)

SIと比べると基本的に出来ることがかなり少なく、ツールを作らないと
使えないソフトという印象があります。
Mayaでも、pymelを使ってツールを作っていってますが、こちらも
環境構造がかなり複雑で、配布ですらとてつもなく敷居が高いものに
なってます。

よくこんなソフト使えるなーと思いつつ、みんな使っているから
仕方なく使うという現実に耐えながら、今回はMayaでpymelに
日本語を入れて書く上で気をつけたほうがいいことを書きます。

pymelを日本語で書いた人なら一度は経験すると思いますが
コーデックの壁にぶち当たるかと思います。



こんなファイルをttttt.pyとして、scriptフォルダへ入れてmayaを起動させます。

import ttttt
# Error: SyntaxError: file line 1: Non-ASCII character '\x82' 
in file C:/Users/****/Documents/maya/2014-x64/scripts\ttttt.py on line 4,
but no encoding declared; see http://www.python.org/peps/pep-0263.html
for details #

ふぁっきんエラー。

webを見てまわると大体コードの1,2行目に

# -*- coding: utf-8 -*-

の文を書いて、このコードはutf-8で書かれていますとすれば解決します。
なんちゃらなんちゃら。
ということが書いてありますが、MayaのScriptEditorで
保存したものは、コーデックが選べず、恐らくWindows7日本語版なら
cp932というコーデックで保存されます。
ですので、cp932のコーデックなのにも関わらず、このコードは
utf-8で書かれています。と書いてもおかしな結果になるだけです。

なら、コーデックの文章を追加してテキストエディタで
utf-8で保存してやればいけるやろ。



ってことで、この一行を追加して、utf-8で保存します。


mayaを再起動。
もう一度インポートを試みます。

import ttttt
ttttt.t()

これは成功の様子。

しかし、このutf-8コーデックのファイルをScriptEditorで読み込むと

ふぁっきん文字化け。

今の時代なかなか出会えない文字化けですが、mayaでは出会えます。

実は、ここでしばらく諦めていたのですが、なんでもないことで
この問題を解決しました。

コーデックがcp932で保存されるなら、そう指示すればいいのです。
次の一行を追加しました。



こうすることで、気軽にmayaでpymel日本語を使うことが出来ます。

melだったらこんなこと考えなくてもいいのに…。
ここまで来るのに、一年かかたよorz

これから、mayaのいろんなワナを解除して行こうかと思います。
基本pymelになるかと思いますけど。

0 件のコメント: