0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

MayaAdvent Calendar 2024

Day 4

孤立UVの削除

Last updated at Posted at 2024-12-03

前回の記事がこちら

早いもので、もうすぐ1年たちますね。
ようやく対処法が見つかりました。

なんだかんだこの状況結構多発してまして、
細々したパーツに大量発生すると対応に時間が掛かりすぎて嫌になってしまうので、
意を決して対処法を探しました。

調査

問題となってるUVを削除したいのだけれども、そもそもUVは削除できるのか?

これでいけないだろうか・・・?

cmds.polyMapDel("hogeGeo.map[4]", ch =False)
# Error: RuntimeError: file <maya console> line 1: Current selection doesn't match required selection type.

だめかー
選択したフェースからテクスチャ座標(UV)を削除します。
って書いてありますし・・・

さて困りました。
何かしらUV情報を更新できる方法があれば

とりあえず複数ポイントあるのが鬱陶しいので、せめて1点にまとめられるかやってみます。

テスト

手動ではつかめないのでチェック用スクリプトを改修し、孤立してるUVのIDを取得しマージを実行してみます。

import maya.api.OpenMaya as om

def checkIsolateUV(target,uvSet):
    mesh_dagPath = om.MGlobal.getSelectionListByName(target).getDagPath(0)
    shape_Fn = om.MFnMesh(mesh_dagPath)
    uvShellIds = shape_Fn.getUvShellsIds(uvSet)
    
    shells = {}
    for i, n in enumerate(uvShellIds[1]):

        if n in shells:
            shells[n].append(i)
        else:
            shells[n] = [i]

    result = []
    
    if -1 in list(shells.keys()):
        for i in shells[-1]:
            result.append(target + ".map["+str(i)+"]")

    return result

cmds.select(checkIsolateUV("hogeGeo","map1"))

とりあえずつかめました。

image.png

この状態で mergeUVを実行してみます。
さて、1点になったかな・・・・
確認するために再度↑のスクリプトを実行してみます。

あれ?ゼロ?

image.png

考察してみると、
polyMergeUV が実行されたとこで、メッシュのUV情報がアップデートされ
これにより孤立したUVの情報が削除されたのではないでしょうか?

であれば、孤立したUVを指定しなくてもこれでいけたりして・・・・

cmds.polyMergeUV("hogeGeo.map[0]",ch =False)

はい、いけました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?