本日は3Dモデリング枠です。
〇マテリアルとは?Shaderとの違い
筆者自身が昔そうだったのですが、初学者にとってはマテリアルとシェーダーの違いを混同しやすいです。
そもそもマテリアルについてですが、マテリアルとは『メッシュ毎に保持する3D空間内でのライティングによる計算色を格納するパラメータ群』です。
このパラメータにはテクスチャを含ませることができ、画像を色情報として貼ることやノーマルマップなどの一部のテクスチャではライティングに作用してあたかもメッシュの表面がざらざらしている、一部のみが発光しているというような表現が可能です。
もう少し詳しく記述するとコンピュータによる描画計算ではDirectXやOpenGLなどGraphicsAPIを経由してShaderで記述されたプログラムがGPUで実行されています。
シェーダーにはさらにメッシュを造形する頂点シェーダーと、色情報を描画するフラグメントシェーダーがありますが、一般的にはRGB(赤、緑、青)の色情報が最終結果として返され、ディスプレイ(画面)の画素ごとに割り当てられています。
このシェーダーのパラメータを格納・制御する概念がマテリアルです。
シェーダーはアプリケーションごとに異なるグラフィックスパイプライン(描画ルール)で実行されているため、基本的にソフトごとの互換性がないor乏しく、マテリアルの互換性もたいていの場合はありません。
今回はMayaとBlenderでマテリアルについて比較していきます。
〇マテリアルの設定方
マテリアルは前述のとおりメッシュに紐づいて設定さてているパラメータです。メッシュ単位で別のマテリアルを使用することができますが、オブジェクト単位でマテリアルスロットと呼ばれるデータ構造体でマテリアルの数や使用されるマテリアルが管理されています。
・Blenderの場合
Blenderの場合は編集モードでマテリアルを適応したいメッシュを選択し、マテリアルプロパティで作成したマテリアルを割り当て(assign)することで可能です。

・Mayaの場合
Mayaの場合はフェースでマテリアルを割り当てたいメッシュが選択されている状態で

マウス右クリックのショートカットコマンドから新しいマテリアルの割り当てを選択します。

既存のマテリアルを割り当てるか新規でシェーダーからマテリアルを作成します。

これによってマテリアルが割り当てられます。

〇シェーダーについて
BlenderもMayaもどちらもシェーダー自体はノードベースで構築することができます。
このためユーザーは特にプログラミングの知識は不要です。
・Blenderの場合
前述のとおり基本的にはノードを接続してShaderを構築します。

Blenderの場合はノードに加えコードで記述することも可能です。
この場合OSL(Open Shading Laungage)を使用してプログラムが可能です。
OSLはソニーイメージワークスが開発したArnold Rendererで使用するためのシェーディング言語で、Blenderでも採用されています。
Blenderの場合はシェーディングウィンドウでスクリプトノードを使用してテキストエディタで記述したプログラムコードを実行する形になります。
・Mayaの場合
Mayaの場合は主にHypershade、OSLを使用することができます。
OSLは前述のBlenderと同様です。Mayaのレンダリングエンジンとして主にArnoldが使用されていることからもわかります。
HypershadeはMaya内蔵のマテリアルエディタで使用される言語です。
ノードベースのインターフェースでありBlenderのノードベースのシェーディングシステムに非常に似ています。

以上簡単にBlenderとMayaについてマテリアルに比較を行ってみました。
本日は以上です。