Maya Script Python – xシンメトリーのチェック

随分と更新が滞っておりました。
最近はめっきり3Dcoatでのペイントにハマっております。
知れば知るほど、素晴らしい。
出来ればレイヤー名の完全日本語対応と、レイヤーセットの対応をして貰いたいが、フォトショップのスクリプトで対応しよう。

 

で、本題です。
Mayaでモデルのシンメトリーをチェックする。というのを以前記事に書いたように思います。
MODOに持ってゆくほどでもなく、ある程度いい加減でもいいので手っ取り早く調べたい。
そんな需要があったので、作ってみました。
まずはpymel版

import pymel.core as pm
import maya.cmds as cmds

def sym_check(n = 3):
	oSel = pm.ls(sl=1)
	if not oSel:
		return
	if type(oSel[0]) != pm.nodetypes.Transform:
		return
	if oSel[0].getShape().type() != "mesh":
		return
	vtxs = oSel[0].verts
	pos = [(round(a,n),round(b,n),round(c,n)) for (a,b,c) in [x.getPosition() for x in vtxs]]
	pDic = dict(zip(pos,vtxs))
	pm.select(cl=1)
	selVtx = []
	[selVtx.append(v) for k,v in pDic.items() if not (-k[0],k[1],k[2]) in pDic]
	pm.select(selVtx)

sym_check()

pymelなのに、Mayaコマンドをインポートしていますが、気になさらずに。
実行時に、
sym_check(2)
などと、整数の引数をつけることで、精度を調整出来ます。
やっていることは、選択されているメッシュノードの全ての頂点の位置と名前を辞書化しています。
位置をキーにするのがポイントです。
で、それらの頂点のうち、xの値だけが負の物を抽出し、適合しないものがあれば、それを選択する。
というだけのものです。
引数として設定する数字は、頂点位置の値を四捨五入するときに、小数点以下何桁で切るか、
という数字として使っています。デフォルトで「3」です。

 

そして、Mayaコマンド版

import pymel.core as pm
import maya.cmds as cmds

def sym_check(n = 3):
	oSel = pm.ls(sl=1)
	if not oSel:
		return
	if type(oSel[0]) != pm.nodetypes.Transform:
		return
	if oSel[0].getShape().type() != "mesh":
		return
	vtxs = cmds.ls(oSel[0].name()+".vtx[*]",fl=1)
	pos = [(round(a,n),round(b,n),round(c,n)) for (a,b,c) in [cmds.pointPosition(x,l=1) for x in vtxs]]
	pDic = dict(zip(pos,vtxs))
	pm.select(cl=1)
	selVtx = []
	[selVtx.append(v) for k,v in pDic.items() if not (-k[0],k[1],k[2]) in pDic]
	pm.select(selVtx)

sym_check()

やはりこちらのほうが圧倒的に早い。
コンポーネントの操作や参照はMayaコマンドに任せるべきなのでしょう。
ノードの編集や参照はpymelが圧倒的に便利です。

3Dcoat – V4

3Dcoatが4にバージョンアップしました。
散々ベータ版を使わせていただいたので、早速バージョンアップです。
で、一番気になっていたのが、ローポリゴンに直接ディスプレイスメントマップを描いたらどうなるのか。
ということが気になっておりました。
早速試すと、
2013_06_03Image_02
確かに以前のバージョンに比べて大分ノイズは減ってはおりますが、完全に消えたわけではない。ちょっと残念。
同じ事をMODOでやると、
2013_06_03Image_03
32bitのexrをディスプレイスメントマップとして使ってスカルプトです。
ノイズが出るところは結構出る。そして、UVの切れ目で大幅に動作が重くなり、はみ出しも不均一。
ちょっと残念。

 

ただ、3Dcoatで驚いたのは、ライブクレイが驚くほど速くなっている。
2013_06_03Image_01
大した時間をかけたわけではないので、ものはアレですが、「GeneralBrush」が良さそうな感じです。
久しぶりのダイナミックサブディビジョンモデリング。ZBrushに慣れてしまうとちょっと勝手が違う。
しかし、もしかしたらZBrushでモデリング、3Dcoatでリトポ。
という流れが変わるかもしれない、という感じもする。
あれ、ZBrush要らないのかな、、
もうちょっと使ってみないとなんとも言えない。

アニメーションが親切に解説されております

レンダリング、ライティングの基本が分かります

図版が見やすい美術解剖書です