久しぶりの記事更新となります。
Softimageが完成したことによる余波で、Mayaへ移籍しました。
やっと一年くらい。主にMotionをやっておりますが、未だにMayaが
やりにくいです(笑)
SIと比べると基本的に出来ることがかなり少なく、ツールを作らないと
使えないソフトという印象があります。
Mayaでも、pymelを使ってツールを作っていってますが、こちらも
環境構造がかなり複雑で、配布ですらとてつもなく敷居が高いものに
なってます。
よくこんなソフト使えるなーと思いつつ、みんな使っているから
仕方なく使うという現実に耐えながら、今回はMayaでpymelに
日本語を入れて書く上で気をつけたほうがいいことを書きます。
pymelを日本語で書いた人なら一度は経験すると思いますが
コーデックの壁にぶち当たるかと思います。
import pymel.core as pm
def t():
print u"あいうえお"
こんなファイルを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で保存されるなら、そう指示すればいいのです。
次の一行を変更しました。
# -*- coding: cp932 -*-
import pymel.core as pm
def t():
print u"あいうえお"
こうすることで、気軽にmayaでpymel日本語を使うことが出来ます。
melだったらこんなこと考えなくてもいいのに…。
ここまで来るのに、一年かかたよorz
これから、mayaのいろんなワナを解除して行こうかと思います。
基本pymelになるかと思いますけど。
Softimageが完成したことによる余波で、Mayaへ移籍しました。
やっと一年くらい。主にMotionをやっておりますが、未だにMayaが
やりにくいです(笑)
SIと比べると基本的に出来ることがかなり少なく、ツールを作らないと
使えないソフトという印象があります。
Mayaでも、pymelを使ってツールを作っていってますが、こちらも
環境構造がかなり複雑で、配布ですらとてつもなく敷居が高いものに
なってます。
よくこんなソフト使えるなーと思いつつ、みんな使っているから
仕方なく使うという現実に耐えながら、今回はMayaでpymelに
日本語を入れて書く上で気をつけたほうがいいことを書きます。
pymelを日本語で書いた人なら一度は経験すると思いますが
コーデックの壁にぶち当たるかと思います。
import pymel.core as pm
def t():
print u"あいうえお"
こんなファイルをttttt.pyとして、scriptフォルダへ入れてmayaを起動させます。
import ttttt
# Error: SyntaxError: file
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で保存されるなら、そう指示すればいいのです。
次の一行を変更しました。
# -*- coding: cp932 -*-
import pymel.core as pm
def t():
print u"あいうえお"
こうすることで、気軽にmayaでpymel日本語を使うことが出来ます。
melだったらこんなこと考えなくてもいいのに…。
ここまで来るのに、一年かかたよorz
これから、mayaのいろんなワナを解除して行こうかと思います。
基本pymelになるかと思いますけど。
コメント