2015/08/27

maya : 揺れ物モーションを作るツール YUREMONO.py

※2024/3/28 Python3に対応しました!

髪の毛や服、マントなどの揺れ物モーションを作るツールです。
数珠繋ぎの階層であればほぼ使えます。

現在は、transformとjointノードのみ対応です。



使い方は
1.)
C:\Users\[User]\Documents\maya\scripts
C:\Users\[User]\Documents\maya\[version]\scripts
もしくは
PYTHON_PATHが通っている場所に、YUREMONO.pyを置く

2.)
以下を実行
import YUREMONO;YUREMONO.Execute()

で、UIが立ち上がります。
ヘルプもつけてあるので、見ながらいじってみてください。

Frequencyの値の1/8を目処にElasticityの値をいれれば
なんとなく揺れているような感じになります。

こちらからダウンロードしてください。


2015/08/24

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

久しぶりの記事更新となります。
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になるかと思いますけど。

Perforce: 複数のワークスペースを更新するバッチ

batを叩けば全部更新。 @echo off set P4PORT=x.x.x.x:xxxx set P4USER=user set P4PASSWD=password echo %P4PORT% echo %P4USER% echo %P4PASSWD% echo %P4PAS...