myara CG blog

CG Design Blog. Thoughts, experiments and experiences.

PySide + SI 2015 + Win10

= エラー


以前公開したmSkinはWindows 10 + Softimage 2015 だと動かないという報告があった為、色々調べてみました。
因みに Windows 10 + Softimage 2013 では特に問題がありません。
2014は未確認。

カスタマイズされたPySideとPyQtForSoftimageが必要で、残念ながら外部Pythonでしか効かないワークアラウンドです。
面倒だけど、PyQtを Windows 10 + Softimage 2015 で使いたければこれをやるしか方法がないです。

必要なソフト:

・Python 2.7
https://www.python.org/downloads/
注意:メインページの一番目立つリンクは 32bit版です。
Python 2.7 の最新リリースを探って、ちゃんと 64 bit版をダウンロードしてください。
64bitのインストーラーのファイル名は「amd64.msi」で終わります。
例:python-2.7.14.amd64.msi

・PyWin32
https://github.com/mhammond/pywin32/releases
Python 2.7 amd64 用のインストーラーをダウンロードしてください。
例: pywin32-221.win-amd64-py2.7.exe

・PySide 1.2.4 yamahigashi (松本)氏のカスタマイズバージョン
PySide-1.2.4-cp27-cp27m-win_amd64.whl
https://www.dropbox.com/s/y1mfleopvx5cr2w/PySide-1.2.4-cp27-cp27m-win_amd64.whl?dl=0

・PyQtForSoftimage yamahigashi (松本)氏のカスタマイズバージョン
https://www.dropbox.com/s/9x9k3u27v2oslmr/PyQtForSoftimage_win10_returnedvalue.xsiaddon?dl=0
mSkin_Win10_SI2015_WG に同封しています。

・mSkin 2015
Download
以上のPyQtForSoftimageが同封してあります。



インストール+設定方法:

・Python 2.7, PyWin32
両方はダブルクリックして、インストールが出来ます。

・PySide
Pip を使ってインストールします。

Python27のScriptsフォルダでコマンドプロンプトを開く。(おそらく管理者として開く必要がある)
※ PowerShellでもOK。

例: C:\Python27\scripts

最新のPython27はインストールしていたらpipの更新する必要がないでしょうけど、念のためにpipをアップグレードしましょう:

pip install --upgrade pip



yamahigashi氏のPySideをインストールする:

pip install whlファイルのパス


例:

pip install PySide-1.2.4-cp27-cp27m-win_amd64.whl



・環境変数
外部のPythonはSoftimageで認識されるようにPythonの環境変数を設定する必要がある。

Windows ボタンを押して enviro、もしくは 環境 を書けば、すぐに出てきます。

新しい「PYTHONHOME」という名前で環境変数を作って、Pythonをインストールしたパスを記入すれば完了。
例:C:\Python27

Softimage で プリファレンス / Scripting の
Use Python Installed with Softimage (Windows Only) というオプションのチェックをはずして、Softimageを再起動。

xsi_scriptpreference.jpg

・PyQtForSoftimage / mSkin

mSkinを使う場合は Workgroup にこのmSkin2015バージョンを接続するだけで完了。
PyQtForSoftimageをインストールする必要がありません。

mSkinは使わない場合は、yamahigashi氏のPyQtForSoftimageをインストールしてください。
このカスタマイズされたPyQtForSoftimageのgetQtSoftimageAnchorは long 値 ではなくストリングを返す為、long(sianchor)を使っている部分は編集する必要があります。

例:

sianchor = Application.getQtSoftimageAnchor()
sianchor = Qt.wrapinstance(long(sianchor), QWidget)



sianchor = Application.getQtSoftimageAnchor()
sianchor = Qt.wrapinstance(sianchor, QWidget)


に変更


これで PySideはWindows10 の Softimage 2015 で使えるようになります。

Symlink + Dropbox でMayaなどの設定やスクリプト同期

ノートPCとデスクトップを使っているから、両方でもプロジェクトのデータが欲しくてDropboxを使っています。
しかし、プロジェクトデータだけじゃなくてMaya設定とかも同期させたいですね。

その方法を紹介します。今回は私が使っているdropboxで説明しますが、Windows の設定なので、google drive、amazon driveなどでも大丈夫です。

Dropboxは複数のフォルダは対応していなくてフォルダ名も変えられないので、Mayaの設定フォルダなど連携させられないです。

フォルダ指定が出来ない、フォルダ名変更が出来ない時にソフトリンクが便利です。
今回はWindowsの Symbolic link:シンボリックリンク、略してSymlink というのを紹介します。

シンボリックリンクってなんですか。
簡単にいうと、ショートカットのような物ですが、自分のパスのままで元のデータを中継します。

例えば 「D:\Original 」 から、「C:\Link」を作ります。
C:\Link の中身は D:\Original ですが、 パスは C:\Link のままでアクセスが出来て、どのソフトもC:\Linkとして認識します。

maya 設定フォルダはリンクにして、中身は他の場所に入れられるということです。
他の場所に入れられるということは、Dropboxの中に入れても問題がないということです。

やりかたは簡単です。

・コマンドプロンプトを管理者権限で開く
・次のコマンドを書く:

mklink /d "link Folder" "Original Folder"



mklinkの詳細:
symlink01.png


これで "link Folder" というリンクフォルダが作られ、その中身は "Original Folder" と同じです。

例:
Mayaが使っている設定フォルダはドキュメントの中のMayaフォルダです。
"C:\Users\myara\Documents\maya"

このフォルダをDropboxにコピー。
今回は"MayaSettings"という名前を付けます。(名前はなんでも良いですけど)

元のフォルダ("C:\Users\myara\Documents\maya" )を削除します。

C:\Users\myara\Documents 直下に maya というリンクを作りたいので、以下のコマンドを使います。

mklink /d "C:\Users\myara\Documents\maya" "D:\Dropbox\MayaSettings"



するとショートカットの矢印が付いている「maya」というフォルダが作られます。

symlink02.png


右クリックのプロパティでショートカットのタブでリンク先のフォルダの確認が出来ますが、変更が出来ません。

※ シンボリックリンクではなく、ジャンクションを使うとこのショートカットタブが出ません。
古いOSを使わない限りジャンクションを使うメリットがあまりないので、シンボリックにしましょう。

これでホットキー変えても、シェルフを増やしても、何をしてもデスクトップとノートPCは全く同じ設定になります。

消し方
もう、シンボリックリンクをやめたい!という時にリンクフォルダを消せば良いだけです。
リンクフォルダを消しても、元のフォルダに影響がありません。

プロジェクトフォルダだけをSSDにしたいけど、パスは変えたくない。
逆に、どうでも良いデータはHDDにしたいけど違うドライブの文字を使いたくないという時にも使えます。

よかったら試してみてください。 Read more

SI | mSnap2ClosestPoint

以前Mayaバージョンを作ったツールを今日はSoftimageバージョンも欲しくなったので今日書いてみました。

選択された頂点を次に選択されるオブジェクトの一番近い頂点にスナップされ、ウェイトコピーされます。

ターゲットは元の位置を取得しているので、デフォーマーやポーズされたメッシュにも対応。

デフォーマー(骨)の名前はショートネームで取得しているので、名前が同じでしたら違う骨を使ってもコピーが出来ます。
他のキャラの頂点の位置とウェイトを合わせたい時に便利。


mSnap2ClosestPoint from myara on Vimeo.



インストール:
プラグインフォルダにコピーする(WorkgroupかUserフォルダ)
例:
C:\Users\myara\Autodesk\Softimage_2015\Application\Plugins

実行:
Model > Modify > Poly.Mesh menu
に「mSnap2ClosestPoint」というボタンが出来ているはずです。
頂点を選んで、mSnap2ClosestPoint を実行して、ピックカーソルでターゲットを選ぶ。

DOWNLOAD


Maya | AutoKeyFrame Color

元々Mayaユーザーのデザイナーは今の案件の都合によってSoftimageを使っています。 Softimageユーザとして少しアドバイスしたりしていて、キャラクターのポーズを付ける時にオートキーフレームにした方が楽かもよーと教えたら、Softimageの画面のフチが赤くなったことに驚きました。 これは分かりやすいですね!
Mayaだとオートキーが付いているのを忘れて、色々失敗してしまいますね。

そっか、Mayaにはないですね。こういう目印。
Softimage 2011 か 2012 までもそうだったから、良く分かります。オートキーに気付かずにキーを打ちまくるからなるべくオートキーは使わないようにしていました。

で、Mayaでもなんとか出来ないかなと考え、このやり方を思い出した。

Maya | UIの色変更

これをイベントにすればなんとかなるじゃん!
と思ったけど、実行してみると、エラーが出ました。

そっか、Maya 2017 はPySide2だね・・・。そんな簡単には行かないか。

2、3ヶ月程前に社内ツールを2017に変換しようとして色々試していて、何日も掛けても失敗し続けていた絶望的な時に出会えた神モジュールがあります。

Qt.pyです。

なんとなくUIを作っているだけで、正直PySideとか良く理解していないですw

それでも、これを使えばなんとかなるんじゃない?と思いながら色々やってみて、ネットでサンプルを探してみたら、出来ました!
これで2015,16,17,18 は同じコードで動きます! (16と17でしか試していないけど)

Qt.py、すばらしい。

MayaColor2.gif

コードはこんな感じです。

#Python
from Qt import QtWidgets
from maya import cmds

class autoKeyFrameColor():
def __init__(self):
cmds.scriptJob(conditionTrue=['autoKeyframeState', self.changeMenuStyleSheetRed] )
cmds.scriptJob(conditionFalse=['autoKeyframeState', self.changeMenuStyleSheetDefault] )

def changeMenuStyleSheetRed(self):
QtWidgets.QApplication.instance().setStyleSheet("QMenuBar {background: rgb( 155, 10, 10 );}")

def changeMenuStyleSheetDefault(self):
QtWidgets.QApplication.instance().setStyleSheet("")


このモジュールを読み込んで、クラスを実行すれば良いだけです。

例:
autoKeyFrameColor.py というファイルに保存して、このファイルをMayaのScriptsフォルダに入れます。

Mayaの「userSetup.py」に

import autoKeyFrameColor
autoKeyFrameColor.autoKeyFrameColor()


を書いておけば、Mayaが立ち上がるたびにこのイベントが登録されます。
これだけで、オートキーがONと感知したら、メニューの色を赤にしてくれる。OFFにすると、元に戻してくれる。

もちろん Qt.py ファイルを Scripts フォルダに入れないと動かないですよ。


Qt.py の開発者の皆さん、ありがとうございます!

Maya | Move like XSI

ムーブツールですね。初めてMayaを使った時から欲しいと思っていた機能です。
初めて使ったのはMaya 7 だったっけ?6だっけ?・・・。

で、2009 あたりかな?MayaにTweakモードが追加されてちょっとだけSoftimageのMove ツールっぽい作業が出来るようになりました! と思ったら、全然使い辛かった。

Nexプラグインが出て、ムーブツール以外に色々優秀なツールが付いていた為、Autodeskに買収され、2014で終了。

2013あたりにDiamantTools というプラグインがでました。これもなかなか良い感じのMoveツールが付いていますが、2017以降は対応されていません。そしてUS$200もします。ムーブツールしか要らないけど、US$200ですか・・・。2017版のムーブだけ安く売ってくれないかな。

Maya 2014からデフォルトにNexのような「Modeling Toolkit」が追加されました。追加されたばかりだった為ほぼNexそのままでした。まるでプラグインが付いているだけのもの。

2016以降はやっと使えるツールになってきましたね。(ある程度)
少しずつ使いやすくなってきています。もっと頑張ってくださいAutodeskさん。まだ選択し辛いです。

しかし、相変わらずあっちこちクリックしてからやっと使えるようになります。
1クリックで出来そうなことはユーザーに5クリックぐらいさせないと気がすまないMaya様ですからね。

毎回色々クリックするのは面倒だから、ショートカットのようなスクリプトを作り始めました。
書いてるうちにもっとSoftimageのMoveっぽくしたくなって、機能を増やしていたらアイコンまで作っちゃって、結局こうなりました。

この記事に色々書いたけど、単純にMayaのTweakにSoftimageっぽいUIを付けてみました。
はい、それだけです。

それだけで、僕のストレスがほんの少しだけ軽減されます。

ModelingToolkitの情報がなさすぎて、書くのはそこまで簡単じゃなかったけどな。
あんまりなっとく行くような書き方になっていないが、動くからいいや。

あと、この動画に出すのを忘れていましたが、一応CTRL とか ALT を押しながら実行するとオプションパネルが出てきます。


Maya xsiMove from myara on Vimeo.




DL:

https://www.dropbox.com/s/hjdmcup21zm0sly/xsiMove.zip?dl=0

インストール方法
Scripts フォルダに解答してください。
こんな感じのパスになるはずです:

C:\Users\myara\Documents\maya\scripts\xsiMove


で、この中に:
icons
__init__.py
xsiMove.py
ファイル2つとアイコンフォルダ1つになれば、OKです。

実行方法:
MayaのPythonで:

from xsiMove import xsiMove
xsiMove.main()



Next page