サイトへ戻る

MAYA初級講座 ノーマル(法線)①

3DCGソフトMAYAを勉強しはじめた初心者を応援するブログです

· MAYA初級講座,MAYA基本オペレーション

どうも秋山です。

加湿器が大活躍しておりますよ。室内もけっこう乾燥しているので注意してくださいね! 呼吸器系をやられてしまいますので。部屋の湿度をしっかり管理することをお勧めしますよ。加湿器無い場合は、濡れタオルを何枚か下げておきましょう!

では、MAYAの学習を始めましょう!

後で他の人に教えるつもりで学習を進めてくださいね。

バーテックスノーマル

前回、スムースシェーディングとフラットシェーディングについて学習しました。

フラットシェーディングは、各ポリゴンフェースの陰影を正確に計算したものでしたね。カクカクしています。

そして、スムースシェーディングは、うその陰影(擬似的な陰影)だということを学習しました。

しかし、擬似的な陰影って一体どういうことなんでしょうね?

それを理解するには、ノーマルというアトリビュートを知っておく必要があります。

ノーマルは、法線と訳されます。と書かれても文字だけでは意味がわかりませんよね。

この章では、ノーマル(法線)について学習しようと思います。

今回は、ちょっと難しいかもしれません。何回も読んでしっかり理解するようにしてくださいね。

ポリゴンのキューブを作成してください(pCube1)

pCube1は、フラットシェーディングになっています。カクカクしていますね。

MAYA pCube1

pCube1を選択して、Display→Polygons→Vertex Nomalsを実行してください。

MAYA Vertex Nomals

各バーテックスに緑の線が表示されました。

これがノーマル(法線)です。正確に言うとバーテックスノーマルです。

バーテックスノーマルは、各バーテックスが持っている情報です。

と書かれてもよくわかりませんよね。さらに続けていきましょう。

MAYA Vertex Nomals

各バーテックスには、3つのバーテックスノーマルが表示されています。

MAYA Vertex Nomals

1つのバーテックスは、関連するポリゴンフェースの数だけバーテックスノーマルを持つことができます。

この場合は、1つのバーテックスに、3つのフェースが隣接しているので、3つのバーテックスノーマルがあるのです。まあ、そういうものだと思っておいてください。

MAYA Vertex Nomals

バーテックスノーマルの向きを確認しようと思います。

バーテックスノーマルの向きが、関連するポリゴンフェースの向きと同じ向きを向いていることを確認してください。

MAYA Vertex Nomals
MAYA Vertex Nomals

6面体なので、6つのフェースがこのようになっています。

このように、フラットシェーディングでは、バーテックスノーマルは、関連するポリゴンフェースの向きと同じ向きを向いています。

これは、ポリゴンフェースの陰影を、その向きのまま正確に計算しなさいとMAYAに指令を出しているんだなあと思っておいてください。

だから、MAYA君は、はいわかったよーといった感じで、ポリゴンの向きの通りに正確に陰影を計算して表示しているのです。だから、カクカクしているのです。

このように、バーテックスノーマルの向きによってオブジェクトの陰影をどうするのか、MAYA君は判断しているんですね。

そして、このノーマルの向きを変更することもできちゃうんですね。ポリゴンの向きと違う方向に向かせちゃったりして、うその陰影も表示できちゃうんです。

うその陰影! そうです。スムースシェーディングのことです。

この後、スムースシェーディングの場合は、バーテックスノーマルがどうなっているのか学習しようと思います。

なんとなくわかってきたでしょうか? よくわからなくてもいいですよ。さらに続けていきましょう!

pCube1を選択してください。

Normals→Soften Edge(MAYA2015以前)

Mesh Display→Soften Edge(MAYA2016以降)

を実行してください。

なんか、やばくないっすか、この陰影。

とりあえず陰影については後にして、バーテックスノーマルを確認してください。

スムースシェーディング時のノーマルは、次の画のように表示されます。

MAYA Soften Edge

スムースシェーディングの場合は、各バーテックスのバーテックスノーマルは、関連しているフェースの向きの中間となる向きに統一されるんですね。

1つのバーテックスにバーテックスノーマルが1つしかないわけではありません。

関連するフェースの数だけバーテックスノーマルはあるんですが、同じ方向を向いているので一本に見えるんですね。

MAYA Soften Edge

選択を解除して、陰影を確認してください。

カクカクした感じが無くなってなめらかな陰影になっています。

キューブの場合は、ちょっと不自然な陰影ですね。

各フェースは平面です。

しかし、わかりにくいかもしれませんが、フェースの中心からバーテックスのある端に向かってフェースが傾いているかのような陰影になっているんですね。

これは、うその陰影(擬似的な陰影)です。

各フェースの陰影は、バーテックスに近いところほど、そのバーテックスノーマルの向きに向いているかのような陰影になっているんです。まだちょっとわかりにくいですね。

MAYA Soften Edge

正面から見た図でイメージすると、陰影は、次の画のようになっています。

各フェースは平面ですが、矢印の向きに向かってノーマルの向きになるまで、面が傾いているというか湾曲しているかのような陰影になっているんですね。

MAYA Soften Edge

全体的に丸みがあるような陰影になっているんですが、キューブの場合は、フェースとフェースが90度で隣接していて角度が大きいので、陰影に違和感があるというか、ちょっと無理があるわけですね。

これが球体だったら、あまり違和感がないんですね。

チョコでもたべて一休みしましょう。

choco

pCube1を選択してください。

CBのINPUTS欄でpolySoftEdge1のAngleを90に設定してください。

MAYA polySoftEdge1

フラットシェーディングになりました。

MAYA Harden Edge

polySoftEdge1のAngleを91に設定してください。

スムースシェーディングになりました。

MAYA Soften Edge

隣接しているフェースとフェースの角度が、Angle値よりも大きい場合はフラットシェーディングになります。

今は、このAngleの値については、深く考えなくていいです。

Angleを180にすると、スムースシェーディングになる。

Angleを0にすると、フラットシェーディングになる。

と覚えておいてください。

このように、後からでもヒストリーのアトリビュートを編集して、シェーディングを切り替えることができるんですね。

pCube1を選択して、Display→Polygons→Vertex Nomalsを実行してください。

バーテックスノーマルを非表示にすることができました。

スムースシェーディングは、擬似的な陰影です。ポリゴン数を増やしたわけではないので、オブジェクトのシルエットは変わりません。

球体で確認してみようと思います。

File→New Sceneを実行して、MAYAを新規シーンにしてください。

ポリゴンの球体を作成してください(pSphere1)

球体の場合も、表面の陰影はなめらかですが、よく見るとシルエットはカクカクしていますね。

MAYA pSphere1

ポリゴンの球体のバーテックスノーマルを確認しようと思います。

pSphere1を選択して、Display→Polygons→Vertex Nomalsを実行してください。

ポリゴンの球体の場合は、スムースシェーディング時のノーマルは、次の画のように表示されます。

MAYA Vertex Nomals

Normals→Harden Edge(MAYA2015以前)

Mesh Display→Harden Edge(MAYA2016以降)

を実行してください。

フラットシェーディング時のバーテックスノーマルは、次の画のように表示されます。

1つのバーテックスは、関連するポリゴンフェースの数だけバーテックスノーマルを持っているので、各バーテックスには、4つのバーテックスノーマルが表示されています。

MAYA Vertex Nomals

もう一度、Display→Polygons→Vertex Nomalsを実行してください。

バーテックスノーマルが非表示になりました。

MAYA pSphere1

pSphere1を選択して、CBのINPUTS欄でpolySoftEdge1のAngleを180に設定してください。

スムースシェーディングになりました。

MAYA polySoftEdge

任意の位置のエッジを選択してください。

MAYA Select Edge

Normals→Harden Edge(MAYA2015以前)

Mesh Display→Harden Edge(MAYA2016以降)

を実行してください。

選択を解除して、陰影を確認してください。

MAYA Harden Edge

このように、コンポーネント単位でスムースシェーディングとフラットシェーディングを部分的に設定することができます。

任意の位置のバーテックスやエッジ、フェースを選択して、Soften EdgeやHarden Edgeを実行してみてください。

ポリゴンオブジェクトの場合は、複数のバーテックスをつなぐようにして面が作成されてポリゴンフェースが作られます。

各バーテックスが持っているバーテックスノーマルに従って、そのポリゴンフェースの陰影が計算されます。

1つのバーテックスは、関連するフェースの数だけノーマルを持っています。

実際は、各フェースは3角や4角の平面ですがバーテックスノーマルの向きにしたがって擬似的に陰影が表示されるのです。

今回は、よくわからなかったかもしれませんね。でも気にしないでいいです。

このまま学習を続けて、しばらくしたらもう一度読んでみてください。ある日、分かるようになると思います。

ノーマル(法線) まとめ

バーテックスノーマル(法線)について

Display→Polygons→Vertex Nomalsを実行して、バーテックスノーマル(法線)を表示することができます。

バーテックスノーマルは、各バーテックスが持っている情報です。

バーテックスノーマルによってオブジェクトの陰影が決まります。

1つのバーテックスは、関連するポリゴンフェースの数だけバーテックスノーマルを持つことができます。

フラットシェーディング時は、バーテックスノーマルは、関連するポリゴンフェースの向きと同じ向きを向いています。

スムースシェーディング時は、バーテックスノーマルは、関連しているポリゴンフェースの向きの中間となる向きに統一されます。

スムースシェーディング時は、1つのバーテックスにバーテックスノーマルが1つしかないわけではありません。

関連するフェースの数だけバーテックスノーマルがあります。同じ方向を向いているので一本に見えるだけです。

Display→Polygons→Vertex Nomalsをもう一度実行すれば、非表示にすることができます。

スムースシェーディングでの陰影計算について

フェースの中心からバーテックスのある端に向かって、あたかもフェースが傾いているかのような陰影になります。

これは、うその陰影です(擬似的な陰影です)

各フェースの陰影は、バーテックスに近いところほど、そのノーマルの向きに向いているかのような陰影になります。

スムースシェーディングは、擬似的な陰影なので、オブジェクトのシルエットは変わりません。

polySoftEdgeのAngleの値について

ヒストリーのアトリビュートを編集して、後からでもシェーディングを切り替えることができます。

CBのINPUTS欄でpolySoftEdgeのAngleの値を編集してください。

Angleを180に設定すると、スムースシェーディングになります。

Angleを0に設定すると、フラットシェーディングになります。

コンポーネント単位で、スムースシェーディングとフラットシェーディングを部分的に設定するには

バーテックスやエッジ、フェースを選択して、Soften EdgeやHarden Edgeを実行してください。

この章で学んだことを、他の人に教えることができますか?教えることができるなら大丈夫です。もし、そうでない場合は、もう一度復習しておいてくださいね。

今回はここまでです。

よくがんばりました。

お疲れさまでした。

もし、もっとまとめて学習を進めたいという人は、ご相談ください。家庭教師や事務所での研修も受け付けておりますよ。