myara CG blog

CG Design Blog. Thoughts, experiments and experiences.

Maya | 回転値を方向値に変更

回転値を0にして、方向値(Orient) だけでジョイントの向きを設定しないといけない作業がありました。そして、Y軸は外側に向かせないといけない条件。

Orient Joint は 100% 合わせてくれない(ま、これを100%自動にするのは無理ですね)

?マークでピボットを回転させると Rotate Axis に数値が入ってしまうし、
普通(スクリプトなし)ではどうやって出来るのかは分からないです。

少しずつ、ペアレントを切って、方向を直して、ペアレントしなおして、なんとなーく色々いじてみると出来たりするのですが効率的に最悪です。そして死ぬほどつまらない。

物量も多いから、仕方なくスクリプトを書いてみることにした。

目的は回転を0にして、方向が変わらないようにを方向値を自動に調整。
そうすると、回転で好きな方向に向かせて、自動的に仕様に合わせられます。

で、出来たのはこれです。


Maya | Rotation To Orient (and vice versa) from myara on Vimeo.



やーつまらない動画ですね。説明もないし・・・なんか、すいません。

必要性があるかは分からないですけど、自由に使って下さい。

同じ事をスクリプトなしで出来る方法があれば、是非教えてください。

DOWNLOAD

■使い方
GUIなどないです。作る予定もない。
Script フォルダに入れて、以下のコマンドでボタンを作って:

回転値0方向自動調整:
import mRotOri
mRotOri.main()

方向値0回転値自動調整:
import mRotOri
mRotOri.main(0)

---

これからはちょっとマニアックな話です。

方向が変わらないようにを方向値を自動に調整したいので、
回転値を方向値に足せばいいで。
単純に考えるとそうですが、Euler角はそのまま足すことが出来ないですね。

なので、Matrix に変換して、Matrix で足して、Eulerに戻して、Radiansから角度に戻すという流れかなと思っていましたが、OpenMaya を使えば一発で出来るとこの記事に書いてありました (英語) http://www.akeric.com/blog/?p=1067

オブジェクトの Matrix は getAttr で取得が出来ます。
しかもローカルとグローバルとインバースも。これは便利ですね。
この記事では グローバルマトリックスを使っていますが、今回はローカルの方が必要です。

このMatrix は角度値ではなく、オブジェクトの方向の角度なので、回転値を方向値に足す必要はありません。もう、このMatrix情報をDegreesに変換すれば良いだけです。それだけです。すばらしい。

流れとしては、OMのMMatrixを作って、Matrix情報をMMatrix に入れて、MTransformationMatrixに変換して、euler情報を取得という結構簡単な方法です。
単純だけど、昨日からこのツールを書いているんですね。

このMatrix情報を変換したら後は入れ替えるだけです。
回転を0にして、変換したMatrix情報を方向値として入れなおせばOK。
逆に方向値を0にして、変換した情報を回転値として入れなおすことも可能。

以上 Read more

SI | imf_copy.exe 画像ファイルの変換

少し前にSoftimageデータからMayaに変換する作業が大量にありまして、
その作業の中でPICファイルをTGAに変換する必要がありました。

普段でしたらPhotoshopを使って変換しますが、大量のデータだとこれは時間が掛かりすぎます。
Photoshopのアクションやスクリプトを使えば多少楽にはなるけど、もっと早く、もっと楽、そして
出来ればSoftimage上でテクスチャパスを取得して、1クリックで変換が出来る方法を探していました。
これでしたら、一瞬で終わります。

その為にコマンドライン対応の変換ソフトが必須です。

色々調べて試してみたけど、一番使い勝手が良かったのはSoftimageメールリストのXSI仲間が教えてくれた
「imf_copy.exe」でした。10年ぐらいSIを使っているのに知りませんでした。

このコマンドは bin フォルダの中に入っています。

2015 の場合:

C:\Program Files\Autodesk\Softimage 2015\Application\bin



コマンドラインでこれを使えば画像の変換が簡単に出来ます。

情報があまりない為、どのフォーマットを対応しているもまだ分かりません。

私のテストではTIFF, TGA, PNG, JPG, PIC (Softimage) の変換は問題なく可能でした。
残念ながら PSD,GIFとDDSはダメでした。

imf_copy.exe をそのまま実行すると、使えるフラグが見れます。
画像の場合は JPEG と EXR の圧縮設定が出来ます。
オプションが少ないですが、単純な変換には使えます。

使い方は簡単:

test.PIC を test.TGA に変換する場合:

imf_copy.exe C:\test.PIC C:\test.TGA



です。

このようなファンクションもできます:

#python
from subprocess import call
import os

def ConvertPic(folder, in_format, out_format):
for dirpath, dirnames, files in os.walk(folder):
for filename in files:
if filename[-3:].lower() == in_format.lower():
newname = filename[0:-3]+ out_format
newFullPath = os.path.join(dirpath, newname)
oldFullPath = os.path.join(dirpath, filename)

xsiPath = r"C:\Program Files\Autodesk\Softimage 2015\Application\bin"
cmdline = "imf_copy.exe " + oldFullPath + " " + newFullPath
call(cmdline, cwd=xsiPath)

ConvertPic("D:\\convertPic", "tga", "png")

これは指定されたフォルダに入っている in_format ファイルを探して、 out_format に変換します。
この例は TGA → PNG になっています。
※ サブフォルダも含めてのファイル検索です。


参考になるかもしれないので、そのプロジェクトで使っていたコードです。
俺用のコードなので、コメントは英語です、すいません:

#python
xsi = Application
from subprocess import call
import os

# Search File And Convert (used by ConvertTextures)
#-----------------------------------------------
# Search Pic File in a Folder and convert it ot TGA
def searchFileAndConvert(filename, rootdir):
for dirpath, dirnames, files in os.walk(rootdir):
for name in files:
if name == filename:
if name[-3:].lower() == "pic":
newname = filename[0:-3]+"tga"
newFullPath = os.path.join(dirpath, newname)
oldFullPath = os.path.join(dirpath, name)

xsiPath = r"C:\Program Files\Autodesk\Softimage 2015\Application\bin"
cmdline = "imf_copy.exe " + oldFullPath + " " + newFullPath
call(cmdline, cwd=xsiPath)
else:
newFullPath = os.path.join(dirpath, name)

return newFullPath

# Convert Textures
#-----------------------------------------------
# Convert All PIC files inside the Project
def ConvertTextures():
oProject = xsi.ActiveProject
projPath = oProject.path
oScene = oProject.ActiveScene
ImageClips = oScene.ImageClips

for img in ImageClips:
oSource = img.Source
fileName = oSource.Parameters("FileName").Value.replace("/","\\")
oriPath = oSource.Parameters("Path").Value

#Skip noIcon
if oSource.Name == 'noIcon_pic': pass

# FileName without Path
texName = fileName[fileName.rfind('\\')+1:]

# Search for texture file in Project
newPath = searchFileAndConvert(texName, projPath)

# If found, assign it. Replace FullPath for Relative Path
if newPath and newPath[newPath.find(projPath):] != -1:
relativePath = newPath[len(projPath)+1:]
if oSource.Parameters("FileName").Value != relativePath:
oSource.Parameters("FileName").Value = relativePath


これで、全てのPICファイルはTGAに変換されて、パスをTGAに直してくれる。


因みに、他に試したソフトの結果:

■IrfanView
http://www.irfanview.com/
有名なフリーツールですね。商用は有料です(US$12)
こちらはコマンドラインも対応しているので、丁度いいかもと思い試してみましたが
なぜかTGAに変換するとアルファチャンネルが消えてしまいます。

i_view32.exe D:\TestXSI\textureFile.pic /bpp=32 /convert=D:\TestMaya\textureFile.tga



■XnConvert
http://www.xnview.com/en/xnconvert/
こちらは完全無料です
なんと500フォーマットを対応しているそうです。そんなにあったのか画像の形式・・・。
とても良いソフトですが、コマンドライン対応していない為スクリプトで使えない。
1人で変換作業する場合はこのソフトは結構お勧めです。

■XnView
http://www.xnview.com/en/
同じ開発会社のソフトなので、XnConvertと似ていますが、
コマンドラインも対応しています(nconvert.exeというサブツール)
こちらもIrfanViewと同じように、個人で使う場合は無料ですが、商用は有料(US$30)
中々良いソフトです。
これにしようか迷っていた時にimf_copy.exe に出会いました。

次にもっと複雑な作業の時にXnViewにしようかな。

nconvert.exe -out tga D:\TestXSITest\textureFile.pic



Maya | ネームスペース削除

2013 から ネームスペースエディターが出来て、簡単に削除が出来るようになりましたが、
それでも1クリックでやりたい時もあり、他のスクリプトと同時に走らせたい場合も多い為のメモです:

ネームスペースを全て取得して、
削除して、ペアレントとマージする。(ネームスペースエディターと同じ効果)

//mel
string $allNS[] = `namespaceInfo -listOnlyNamespaces`;
for ($ns in $allNS){
if ($ns != “UI” && $ns!=”shared”){
namespace -mergeNamespaceWithParent -removeNamespace $ns;
}
}


#Python
from maya import cmds
allNS = cmds.namespaceInfo(listOnlyNamespaces=True)
for ns in allNS:
if ns!="UI" and ns!="shared":
cmds.namespace( mergeNamespaceWithParent=True, removeNamespace=ns)

SI | mSlide Relax Brush

Shrink Wrap, Relax と Gator を組み合わせて作ったシンプルなリラックスツールです。

Relaxオペレーターでメッシュをリラックスさせて、ShrinkWrapでもとの形を保って、GatorでUVを保ってスライドさせる。

難しいこと何もしていないけど、わりと使えるツールです。
もっと前に作っておくべきだったな・・・。

DOWNLOAD

■インストール方法:
Plugin形式なので、Pluginフォルダに入れて、プラグインマネージャーで更新。
もちろん、ワークグループに入れてもOK。

Pluginフォルダの例:
C:\Users\myara\Autodesk\Softimage_2015\Application\Plugins



■実行する方法:
Deformメニューから実行ができます。
そして、オブジェクトを選択している時の右クリックメニュー

Read more

SI | mSkin Weight Spectrum 修正

前回アップした「mSkin_WeightSpectrum」はエンベロープのプロパティ名はデフォルトのままという条件で動いていました。今度はオブジェクトのエンベローププロパティを探してからICEノードを自動編集するようになっているので、プロパティ名と関係なく動くはずです。

ダウンロードリンクは同じです。

DOWNLOAD

因みに開発中のmSkin ツールはほぼ出来ています。
今のプロジェクトで正常に動いているの確認してから公開する予定です。

今のところはこんな感じです:(音声無しでCC字幕が入っています)


Next page