「Maya」script - UVシェルの中央付近のUVを取得
こちらのAriUVGriddingがとても便利で、いつもお世話になっているのですが、
これをUVシェルごとに良い感じのところのUVを選択して実行したいなと思いました。
code:python
# -*- coding: utf-8 -*-
import maya.api.OpenMaya as OM
import maya.cmds as cmds
import maya.mel as mel
from math import floor
def get_shellCenterUVs(obj, uvset = ''):
UVs = []
shapes = cmds.listRelatives(obj)
selected = OM.MGlobal.getSelectionListByName(shapes0) node = selected.getDependNode(0)
mesh = OM.MFnMesh(node)
howmany, shell_ids = mesh.getUvShellsIds(uvset)
u_list, v_list = mesh.getUVs()
for shell_num in range(howmany):
umin = vmin = 9999999999999
umax= vmax = -9999999999999
for idx, uvShell in enumerate(shell_ids):
if uvShell == shell_num:
umin = min(umin, u_listidx) umax = max(umax, u_listidx) vmin = min(vmin, v_listidx) vmax = max(vmax, v_listidx) centerUV = mesh.getClosestUVs((umax+umin)/2,(vmax+vmin)/2)
return UVs
sel = cmds.ls(sl=True)
centerUVs = get_shellCenterUVs(sel0) for uv in centerUVs:
cmds.select('%s.map%s'%(sel0,uv)) mel.eval('AriUVGridding;')
https://gyazo.com/c614004019040e62538fb6e186c23142
大部分は参考URLを参考に。
mesh.getClosestUVs((umax+umin)/2,(vmax+vmin)/2)
で、UVシェルの中央のUV座標に近いUVを取得。
ゆくゆくは格子状のUVのみor選択したUVシェルだけ処理するようにできれば。
参考