modo Script Python モデルの中心線をXゼロに設定

# python
import lx

fg = lx.eval("query layerservice layers ? fg")

if (lx.eval("select.typeFrom {edge;polygon;item;vertex} ?") and lx.eval("select.count edge ?") or 
	lx.eval("select.typeFrom {polygon;item;vertex;edge} ?") and lx.eval("select.count polygon ?") or
	lx.eval("select.typeFrom {vertex;edge;polygon;item} ?") and lx.eval("select.count vertex ?")):
	lx.eval("select.convert vertex")
	lx.eval("select.connect")
else:
	lx.eval("select.typeFrom vertex true")
	lx.eval("select.drop vertex")
	lx.eval("select.invert")

vtx = lx.eval("query layerservice verts ? selected")
lx.eval("select.drop vertex")

[lx.eval("select.element {0} vertex add index:{1}".format(fg,v)) for v in vtx if lx.eval("query layerservice vert.pos ? {0}".format(v))[0] == 0]
if lx.eval("query layerservice verts ? selected"):
	lx.eval("select.convert edge")
	lx.eval("select.edgeLoop base false m3d")
	lx.eval("select.convert vertex")
	vtx = lx.eval("query layerservice verts ? selected")
	lx.eval("select.drop vertex")
	[lx.eval("select.element {0} vertex add index:{1}".format(fg,v)) for v in vtx if not lx.eval("query layerservice vert.symmetric ? {0}".format(v))]
	lx.eval("vert.set x 0.0")

前回のスクリプト、半分選択にバグがありました。修正版を上げておきました。すみません。
modoでは取得するものが複数あれば配列、そうでなければ文字列として返ってくる。ということを忘れておりました。
「lx.eval」では頂点を一つしか選択していないときは配列として返って来ません。なので「lx.evalN」でそれがどのようなものでも配列で返すようにしました。

 

さて、今回のスクリプトは中心線がXゼロから少しずれているものをXゼロに設定するものです。
動作としては、
2012_10_04Image_01
このように中心線がずれているモデルを用意し、スクリプトを実行します。
選択があれば、そのメッシュだけ、なければそのレイヤーすべてのメッシュに適用されます。
2012_10_04Image_02
こんな感じです。
交差しているモデル、穴の開いたモデルでも対応できます。
「query layerservice vert.symmetric ?」便利ですねぇ。Mayaにも同じ物が欲しいです。
「?」マークの後ろに頂点インデックスをつけるとそれに対応したシンメトリーの頂点のインデックスを返してくれます。

 

しかし、作っておいてなんですが、エッジ選択のダブルクリックでループを選択し「vert.set x 0.0」をショートカットに割り当てた方が圧倒的に早いです。
試しにZBrushで随分前に作ったモデルでテストします。
2012_10_04Image_03
恐らくこのモデルの中心線はループ選択されている場所だと思います。
2012_10_04Image_04
スクリプトを適用するとこんな感じです。
このスクリプトの欠点は、ゼロにかかる頂点が幾つか存在しなければなりません。
そうでない場合は、反応なしです。
うーん、使えるのかなぁ、、

コメントする

post date*

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トラックバックする

トラックバック用URL:

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

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

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