リアルタイム系の3DCG制作に関するノウハウや実践的なTipsを共有するWiki形式のWEBサイトです。

法線は表向きなのに見た目が裏返っている
逆にMAYA上の見た目は正常なのに実機やゲームエンジンに出したら裏返っていたという問題です。

こんな感じです。

法線の向きを確認する方法

Backface Culling

ビューポートのShading->Backface Culling
にチェックを入れます。

これで裏面を非表示にできます。

Vertex Normal

Display->Polygon->Custom Polygon Display
にて頂点法線の表示をONにします。Vertices:Normalsですね。

これで頂点法線が確認できます。
緑の線が伸びている方が法線の方向です。

頂点法線が黄色い場合

頂点法線が緑ではなく黄色になっている場合は頂点法線がロックされています。

ロックを解除する場合は、メッシュを選択した状態で
Mesh Display->Unlock Normals
を実行します。

Opposite

稀ですがメッシュのアトリビュートで反転されていることもあります。
アトリビュートエディターで該当するメッシュのmeshノード(shape)を見てください。

Render StatsのOppositeにチェックが入っている場合は外します。
これは見た目を反転するオプションで、通常は反転したインスタンスに付くものです。
なんらかの不具合でこれが残っていることがたまにあります。
これを確認した上で必要なら
Mesh Display->Reverse
などを使って法線を反転させます。

まとめて編集したい場合

まとめて編集したい場合は、
Windows->General Editors->Attribute Spread Sheet
のRenderタブからまとめて確認&変更できます。(メッシュを選択するのを忘れずに)

それすらも面倒な人は

まとめてoppositeをOFFにするスクリプトを書きました。
スクリプトエディターにコピペして実行してください。
※動作は保証しません。自己責任でお願いします。

MEL版

string $all_shape[] = `ls -type "geometryShape"`;

for($shape in $all_shape){
    if(`attributeExists "opposite" $shape` == 1){
        if(`getAttr($shape + ".opposite")` == 1){
            //setAttr($shape + ".doubleSided", 0);
            setAttr($shape + ".opposite", 0);
            print($shape + " : done\n");
        }
    }
}

python版

import maya.cmds as cmds

all_shape = cmds.ls(type="geometryShape")
for shape in all_shape:
    all_attr = cmds.listAttr(shape)
    if "opposite" in all_attr:
        if (cmds.getAttr(shape + ".opposite")):
            #cmds.setAttr(shape + ".doubleSided", 0)
            cmds.setAttr(shape + ".opposite", 0)
            print (shape + " : done")

コメントをかく


「http://」を含む投稿は禁止されています。

利用規約をご確認のうえご記入下さい

※現在 ユーザーID保持者 のみがコメント投稿可能な設定になっています。

Wiki内検索

メニュー

Maya

管理人


管理者:kmj
Twitter:@kmj3dcg
ゲームグラフィックに携わり十数年、現在フリーランスのモデラーとして活動しています。
専門分野:モデリング、テクスチャ、ウェイト(キャラモデルがメインのゲームグラフィッカーです)
お問い合わせはこちらまでお願いいたします。

Amazonアソシエイト

皆様のご協力感謝しておりますm(_ _)m























管理人/副管理人のみ編集できます