新着情報

新着情報 物理ベースレンダリング(6) 光沢・反射光・非照明 (2022/05/27)

複数回にわたって紹介してきたglTFにおける物理ベースレンダリングですが、今回で最後となります。残りの拡張設定「光沢」「反射光」「非照明」を取り上げます。

光沢 (Sheen)

光沢は特にサテンのような艶のある生地を表現するのに有用です。

光沢がどのように影響するか、球体にライトを当てるとわかりやすいです。

左:光沢なし、右:光沢あり

上図の左右を比べると光沢の有無の違いは一目瞭然ですが、詳しく観察すると、光沢ありの場合はライトからの入射角が浅くなる箇所がリング状に明るくなっています。中心付近の反射光が入射角の深く箇所に影響するのと逆の関係であることがわかります。

光沢用のパラメータは「光沢係数」「光沢粗さ」の2つです。係数は光沢の強さを、粗さは光の反射をどれだけぼかすかを調整します。

左:光沢粗さ0.6、右:光沢粗さ0.2

なお、光沢の表示に関して不具合があったため、Ver4.8.3bで修正しています。それ以前のバージョンの方は必ずアップデートしてご利用ください。

反射光 (Specular)

反射光(スペキュラー)はPhongシェーダのものと同様です。glTFシェーダでは金属感・粗さで光源に対するハイライトがどのように写るか調整しますが、Phongに比べて直接的に調整しにくいと感じることがあります。

そこで拡張設定として「反射光」が追加され、反射光の調整用に「反射係数」と「反射色」の2つのパラメータが用意されています。

左:反射色を赤、真ん中:反射光の拡張設定オフ、右:反射係数0.3

元の状態(真ん中)に対して、色と係数を調整したものがそれぞれ左と右の状態です。反射光の色と強さを直接指定して質感を調整することができます。

非照明 (Unlit)

こちらは物理ベースレンダリング用のものではありませんが、glTFシェーダの拡張設定に用意されているので、ついでに紹介します。

従来からConstantシェーダがありましたが、それと同じ役割を持ちます。ライティングによる計算を一切行わず、単色でそのまま表示するものです。

左:通常のglTFシェーダ、右:非照明

敢えてライティングしたくないオブジェクトに対して指定してください。

最後に

glTFにおける物理ベースレンダリングを全6回で紹介してきました。各拡張設定とそのパラメータをざっと説明しましたが、サンプルもそれほど多くは用意できなかったので、この解説だけではまだそれほどわからないという方もいらっしゃるかもしれません。まずは実際にMetasequoia 4で操作して、パラメータを色々変えながら試してみてください。

glTFとその新しい拡張設定に対応したアプリなら、アプリ間で(ほぼ)同じ見た目を維持しながらデータを運搬することもできます。今後より多くのアプリ・サービスでglTFが利用され、glTFのデータも増えていくことと思いますが、その一助になれば幸いです。

リリース情報 Metasequoia 4 Ver4.8.3b リリース (2022/05/27)

Metasequoia 4 Ver4.8.3bをリリースしました。本バージョンではglTFシェーダにおける光沢の表示の修正など、数件の不具合修正・細かい改良を行っています。

詳細はリリースノートをご参照ください。

お知らせ 旧バージョン(Ver3.1)向け試用ライセンス発行の終了について (2022/05/25)

Metasequoia Ver3.1向けの試用ライセンスの発行について、利用者数を鑑みてその役割をほぼ終えた状況となりましたことから、2022年6月末をもって終了させていただきます。長くご愛顧いただきありがとうございました。

今後はMetasequoia 4へ移行してご利用ください。Metasequoia 4の試用ライセンスの発行については今後も引き続き提供してまいります。

機能紹介 物理ベースレンダリング(5) クリア塗装 (2022/05/12)

glTFにおける物理ベースレンダリングについて、今回は[クリア塗装]拡張設定について紹介します。

クリア塗装 (Clearcoat)

クリア塗装の使用例として代表的なものとしては車のボディがあげられます。ボディそのものは金属やカーボンなどの素材の表面にペンキなどで色付けされていますが、それだけではあまり艶のある質感にはなりません。さらにその上に無色透明の塗装を施されています。これは艶を出す目的のほかに、表面を保護する役割も果たします。

ボディの素材・色にかかわらず、クリア塗装によって周囲が反射して写り込む

glTFの[クリア塗装]はその無色透明の塗装に相当します。下のボディの層に対し、クリア塗装の層による反射が加わった2層構造の質感を簡単に表現できるようになっています。

2層構造であるため、下のボディ層とクリア塗装は異なる別々の法線を持つことができます。

通常の[法線]マップとは別にクリア塗装専用の[クリア塗装法線]マップが用意されているので、どちらか片方または両方に法線マップ画像を割り当てることで、下の層とは異なる方向に反射した先の背景が写り込むようになります。

左右とも金属感0.5、粗さ0.3、法線マップあり、クリア塗装法線マップなし

上の例では左半分がクリア塗装なし、右半分はクリア塗装ありですが、それ以外はどちらも同じパラメータです。左右とも通常の[法線]マップは同じ画像を設定しているので表面がわずかに凸凹していますが、[クリア塗装法線]マップは割り当てていないのでクリア塗装の表面はのっぺりしていることになります。

サンプル画像を観察すると、左側も表面の反射による周囲の写り込みはあるものの、その反射を見るだけではどんな背景なのかはほとんどわかりません。一方右側では、下の層に重なるようにクリア塗装による反射がくっきりと写り込んでいるので、背景の様子を何となく把握するくらいはできます。

[クリア塗装]には法線マップ以外に以下のパラメータが用意されています。

[クリア塗装係数]でその反射の強度を調整したり、[クリア塗装粗さ]でぼんやりした反射にすることができます。

リリース情報 Metasequoia 4 Ver4.8.3a リリース (2022/04/28)

Metasequoia 4 Ver4.8.3aをリリースしました。

本リリースでは3件の不具合を修正しています。詳細はリリースノートをご参照ください。

FBX出力時や、Intel Macでパストレーシングレンダリング時に異常終了を引き起こす重要度の高い修正が含まれますので、早急にアップデートしてご利用ください。

機能紹介 物理ベースレンダリング(4) ボリューム・屈折 (2022/04/27)

前回は[透過]を紹介しました。今回は[透過]と組み合わせて使用する[ボリューム]を紹介します。

ボリューム (Volume)

先に[透過]をオンにした状態で、さらに[ボリューム]をオンにしてください。

ボリュームの特徴として、媒質の外部から内部へ、また内部から外部へと光が出入りする際に直進する方向が曲がって透過する”屈折”の効果が得られます。透過が薄い膜状のオブジェクトに用いるのに対して、ボリュームは透明でかつ厚みもあるガラスや宝石などの媒質を表現します。

ボリュームのパストレーシングレンダリング例

[ボリューム]には以下の3つのパラメータがあります。

  • 厚さ
  • 減衰距離
  • 減衰色

このうち、パストレーシングレンダリングでは[厚さ]は設定する必要はありません。[厚さ]と[厚さ]マッピングはリアルタイム表示でのみ用いられます

上の例のように太くなっている箇所に色を付けたい場合は[減衰距離]と[減衰色]の両方を設定します。こちらはパストレーシング・リアルタイム表示どちらにも適用されます。

厚みのリアルタイム表示について

媒質内部を通過する光線がどこから入ってどの角度で出ていくのか、パストレーシングレンダリングではその処理内で計算され、屈折が正確に描写されます。

しかし、リアルタイムでは計算量的に正確な算出が困難なため、glTFのリアルタイム表示では直接入出点の位置を計算するのではなく、あらかじめ媒質の表面に厚みの値をマッピングしておき、この位置から入射する場合はマッピングされた厚み分を透過して出ていく前提で、疑似的に屈折を表現する手法が取られます。

厚さが均一な板状のオブジェクトなら[厚さ]の値を設定するだけで大丈夫ですが、曲面の場合は場所ごとに厚みが異なるため、マッピング画像として[厚さ]マップも設定する必要があります。

厚さマップの作成方法

[厚さ]マップを設定するには事前に厚さマップ用の画像を用意する必要があります。Metasequoia 4では現時点は厚さマップを直接作成する機能はありませんが、厚みの頂点カラー化、頂点カラーのテクスチャ化の2つの機能を組み合わせることで厚さマップを作製できます。

なお、厚み計測・頂点カラーのテクスチャどちらもEX版のみの機能です。Standard版ではご利用いただけませんので、この機能が必要な方はEX版へのアップグレードをご検討ください。

厚みの頂点カラー化

[計測]コマンドで[厚み]、測定方向に[放射状]を選択し、[厚みを頂点カラー化]を実行します。

厚みの頂点カラーマッピング例

[グレースケール]をオン、[色を反転]をオフにしてください。薄い箇所が暗く、太い箇所が明るく表示されているのがわかります。この状態で厚みの頂点カラー化は完了です。

ここでスライダーで設定可能な厚みの上限値(上の画像でのバーの横の数値)を覚えておいてください。この値を後で使用します。

UV展開

頂点カラーをテクスチャへ変換する前に、その準備としてUV展開が必要です。

編集モードを「マッピング」に切り替え、「自動展開」を選択します。


「切れ目を選択」の「自動選択」を呼びだし、「アルゴリズム」に「スマート」を指定します。「高速」でも構わないのですが、展開結果に重なりが生じることがあるため、スマートのほうが楽なケースが多いです。

 

切れ目が選択できたら「展開実行」を呼び出します。パラメータはそのままで構いません。処理後は、展開結果に重なりがないことを確認してください。

重なりがあると見た目に多少おかしい箇所が出てくる可能性があります。(多少なら気にしないという手もありますが…)

重なりを解消するには、「分離」コマンドで重なりのある箇所の根本付近を切り離し、「切れ目の選択」>「現在の切れ目」を呼び出して切れ目を追加してから、再度「展開実行」を呼び出します。

テクスチャ変換

UV展開ができたら、頂点カラーをテクスチャ画像化します。編集モードを「モデリング」に戻し、「頂点カラー」コマンドで「テクスチャへ変換」を呼び出します。

ポリゴン数が多いモデルの場合は横幅・縦幅を十分に高い値にしてください。ポリゴン数に対してテクスチャ画像の解像度が低いと、画像がつぶれて粗い結果になってしまうことがあります。

ファイル名を指定してpngファイルなどで保存します。出力されたファイルを適当な画像ビューアで開くと、厚さが濃淡で表現された画像になっていることが確認できます。

厚さマッピング

材質の設定

最後に材質の設定です。glTFシェーダの拡張設定内の[透過]と[ボリューム]をオンにし、[厚さ]に計測時の上限として表示されていた値を指定します。

[マッピング]内の[厚さ]に出力したファイルを指定します。

また、頂点カラー化されたままの厚さはもう不要なので、「頂点カラー」をオフにすることを忘れないでください。

[金属感]と[粗さ]は[透過]の時と同様に低めの値にしておきます。[粗さ]を若干上げるとすりガラスのようになります。

これで、プレビュー内でボリュームの材質が設定されたオブジェクトが、ガラスのようにその背景が屈折して透き通っている表示になっているはずです。後ろにオブジェクトを配置したり、環境マップを設定してください。

また、[減衰距離]と[減衰色]を設定すると、厚みのある箇所が濁って、グミや宝石のような表現も可能です。[減衰距離]は表面からその距離に達した時点で光をどこまで減衰させるかを指定します。[厚さ]と同じ値でもいいですし、より浅い厚さの箇所でも暗い色にしたいなら厚さよりも低い値を指定します。

リアルタイム表示での減衰表示

[減衰色]の値が1なら内部で減衰は起こりませんので、[減衰距離]も設定する必要はありません。

なお、[厚さ]と[減衰距離]は絶対的な寸法として指定されます。スケールの異なるオブジェクトで同じような見た目にしたい場合、そのスケールに合わせてそれぞれ異なる値を指定する必要があります。

屈折 (IOR)

[ボリューム]使用時のデフォルトの屈折率はガラスとほぼ同等の1.5ですが、水や鉱物などは異なる屈折率を持ちます。[屈折]をオンにすると任意の屈折率を設定することができます。

ボリュームが設定された状態で屈折率の値を変えると、屈折を通して見える後ろ側の見え方が変わっていくことがわかると思います。実際に試してみてください。

現実の物質における屈折率の値についてはWikipediaや色々な文献・Webなどで紹介されていますので、そちらをご参照ください。

 

今回はボリュームと屈折について紹介しました。次回では残りの他のパラメータについて紹介します。

機能紹介 物理ベースレンダリング(3) 透過 (2022/04/26)

前回の最後で紹介した拡張設定について、今回から掘り下げていきます。まず始めに、ビジュアル面でわかりやすい[透過]に焦点を当てて紹介します。

透過 (Transmission)

半透明表示は、古くから不透明度(または透明度)を指定してアルファブレンディングで行うのが定番でした。glTFでも標準的な仕様内に[Alphaモード]と[不透明度]を指定するアルファブレンディングがありますが、それとは異なる形で新たに”透過”(Transmission)が拡張として定義されました。(伝搬・伝播などと直訳されているケースもあるようですが、透過が一番しっくりくると思います)

透過はセロハンやクリアファイルのような結晶化した薄いプラスチック、ごく薄いガラスなど、屈折がない薄膜を表現するのに適しています。

アルファブレンディングと透過は背景が透けて見える点では似ていますが、粗さを変えながら比較するとその違いが明瞭にわかります。

アルファブレンディングは全体を同じ比率で合成するだけですが、透過には

  • 表面では鏡面反射する
  • 入射角の浅い辺縁部では吸収や反射(フレネル効果)によって明度の変化が顕著になる
  • 媒質内で散乱しながら光が進むことで、透過先の背景をぼかす効果が得られる

などの特徴があります。

不透明度と同様に、[透過係数]でどの程度透過させるかを調整することもできます。透過係数を0にすると透過を設定しないのと等価になります。

基本色に白以外を設定すると、色付きフィルムのような表現が得られます。

透過を使用する際に注意すべきは、[金属感]が設定されていると透過は打ち消されます。これは金属が光を外部へと反射し、内部への光を吸収してしまう性質によります。(だそうです、細かい理屈はわかっておりません…)

もう一つの注意点は、リアルタイムのプレビュー表示では、同じオブジェクトでも異なるオブジェクトでも「透過」する面の後ろにさらに「透過」する面を二重に透過させることはできません。あくまで疑似的な表現なので、手前の面のみが優先されて表示されます。パストレーシングレンダリングでは正確な描写が得られます。

透過の使用例

ガラスが非常に薄い小型の電球を作成してみます。材質の設定が主眼なのでモデリングについては言及しませんが、下絵として電球の画像を配置しながらモデリングすると、難しくないでしょう。

モデリングができたら材質の設定です。すべての材質にはglTFシェーダを割り当てておきます。

まず、ガラス用の材質を設定します。ガラスには[透過]を適用し、また他のパラメータも次の画像のように設定します。

金属感:0、粗さ:0

透過:オン、透過係数:1

光を放出するフィラメントには[自己照明]を設定します。これにより、任意の形状を光源として使用することができます。自己照明欄の右側のカラーボタンを押し、色表示欄をクリックして、オレンジ色に設定します。

 

口金は金属感を高く、粗さを低く設定します。一例として次のように設定します。

  • 金属感:1
  • 粗さ:0.1

適当な環境マップを適用して、一度パストレーシングレンダリングしてみます。

ガラスや口金の質感がうまく再現できていることがわかります。一方、フィラメントの光量が低すぎて、電球が全然明るくなっていません。

光量は[自己照明]の値と、光源用のオブジェクトの面積によって決まりますが、フィラメント用オブジェクトがかなり細いため、そのままでは光量が非常に小さいものとなっています。

色設定時にHSVモードにしたとき、明るさを示す[V]は通常は0~100の範囲で設定しますが、自己照明の値はこの範囲を超えて数値入力することができます。Vの値を10倍ずつ増やしながらレンダリング結果を確認することを繰り返し、1000万まで増やすとだいぶ明るくなったので、最終的に1500万で調節してみました。フィラメントから放出された光がガラス内部で反射しながら、眩しさを感じる明るさになりました。

なお、glbファイルに出力する際は自己照明は範囲外の値を入力しないでください。glTFの規格により値の範囲が制限されており、出力したファイルがビューア側で正常に読み込めない可能性があります。

今回は[透過]と併せて、自己照明を設定してオブジェクトを光源として使用する方法についても紹介しました。次回は[ボリューム]についてです。

機能紹介 物理ベースレンダリング(2) glTFシェーダの基礎 (2022/04/21)

前回は物理ベースレンダリング(PBR)とglTFの概要について紹介しました。今回はMetasequoia 4内でどうglTFを扱うかを基礎から解説します。

Ver4.7で既にglTFシェーダと、glTFを格納するglbファイル入出力を搭載していましたが、当初はglbファイル出力をしない人には縁のない機能だったかもしれません。しかし、Ver4.8.0で物理ベースレンダリングに対応したパストレーシングが搭載され、ここでglTFシェーダは従来のPhongに代わるパストレーシングレンダリング向けの標準シェーダとしての位置付けとなりました。glbファイルを扱わなくても、パストレーシングレンダリングで高品質な画像を得たい人は、まず材質にglTFシェーダを割り当てるところから始まりとなります。

一度も使ったことのない方、また既に使っている方にもおさらいとして一から説明していきます。

glTFシェーダの設定

材質パネル内の[設定]を押して[材質設定]画面を開いた状態で、[シェーダ]欄を[Phong]から[glTF (PBR)]に切り替えます。

シェーダを変更すると[諸設定]の内容が切り替わり、また[Specular-Glossiness設定]と[拡張設定]が折りたたまれた状態で表示されます。この3つのグループ内の各項目がglTFシェーダ向けのパラメータとなります。

PhongよりもglTFシェーダをメインに使うなら、毎回切り替えるのが面倒なので、glTFシェーダを標準にしましょう。glTFシェーダに切り替えた材質を選択した状態で、材質パネルの[他]内の[標準材質として設定]メニューを呼び出すと、以降新規に作成した材質は登録された内容と同じになります。やっぱりPhongに戻したいときはメニュー横の矢印を押してください。

金属感・粗さ

前回も簡単に解説しましたが、物理ベースレンダリングにおいては[金属感]と[粗さ]の2つのパラメータが質感の設定に大きく寄与します。

この2つの値を変更しながら、プレビュー表示上でどう変わるか観察してみましょう。縦方向に[金属感]、横方向に[粗さ]を変えて並べた結果がこちらです。

リアルタイムプレビュー表示

金属感が0のときは光の反射によるハイライトが付きません。金属感が0より大きくなるとハイライトが確認できるようになりますが、粗さが小さい左下のほうでは全体が暗くなります。

粗さに注目してみます。粗さが小さいうちは丸いハイライトの大きさが変化していきますが、0.7くらいになると輪郭がぼけてきて、1.0になるとハイライトがわからなくなります。

今度は環境マップを適用した状態でプレビュー表示を観察します。

環境マップ適用時のリアルタイムプレビュー表示

金属感・粗さの変化に対する傾向は同じですが、金属感が1に近づくにつれて背景の環境マップがくっきり反射してくるのがわかります。また、粗さが高くなるほど環境マップがぼやけて、元の画像がどんなかわからなくなります。

ちなみに、パストレーシングでのレンダリング結果がこちらになります。

パストレーシングレンダリング

おおむね同じような結果ですが、プレビュー表示とは環境マップのぼやけ具合などは微妙に異なります。これは、プレビュー表示が高速化やメモリ軽量化などのために処理を簡略化していることが一因です。(もう少し違いを小さくできないか検討中…)

ちなみに、glTFシェーダはすべてのパラメータがDirect3DやOpenGLによるリアルタイムのプレビュー表示に反映されます。材質設定ウィンドウ内の左上の小さい球体だけでなく、プレビュー表示と材質設定を並べて、実際のオブジェクトを観察しながら値を調整すると効率がいいでしょう。

並べて表示するには広めのモニター推奨

周囲光の影響について

glTFシェーダを適用したとき、Phongに比べて全体に白っぽいのが気になることがあります。

Phongもですが、glTFシェーダでもプレビュー表示には[周囲光]が影響します。光の当たらない箇所を暗くしたい場合、[照光]内の▼ボタンから[光源設定]を呼び出し、[光源]タブ内の明るさ(V)を下げてください。

明るさを0にすると、光の当たらない箇所は真っ黒になります。適当と思う明るさを設定してください。

なお、周囲光はプレビュー表示にのみ適用されます。パストレーシングレンダリングやglbファイル出力には影響しません。

拡張設定

Ver4.8.3ではPBR向けの拡張仕様に一通り対応しました。

[諸設定]グループの下側にある、閉じた状態の[拡張設定]をクリックすると、拡張設定内の各パラメータが表示されます。

チェック項目とその下に値の入力が並んでいますがが、チェックをオンにするまで各項目の値の設定はできません。

拡張設定は数が多くて一度に紹介できませんので、次回以降で説明していきます。

機能紹介 物理ベースレンダリング(1) 概要とglTF (2022/04/20)

Metasequoia 4 Ver4.8.3では最新のglTFの仕様に準拠した物理ベースのシェーダパラメータに対応しました。Metasequoiaでは物理ベースレンダリングに関する改良項目を以前のバージョンから順次取り入れてきましたが、今回の新バージョンでだいぶ整備が進んだことを踏まえて、物理ベースレンダリングとglTFについて複数回にわたって紹介していきます。

目次

物理ベースレンダリングの登場

物理ベースレンダリング(Physically Based Rendering; PBR)が登場する以前は、フォン(Phong)シェーディングモデルまたはその派生形が広く使用されていました。

Phongシェーディングは1970年代に提唱され、主に

  • ディフューズ(Diffuse; 拡散反射、拡散光) : ざらつきのある表面に光が照らされて明るく見える
  • スペキュラー(Specular; 鏡面反射、反射光) : 表面に反射して光源がハイライトとして写り込む
  • アンビエント(Ambient; 環境光) : シーン全体が照らされる

の3つの成分によってシェーディングを定義します。

Phongシェーディングモデル

この考え方はわかりやすく、また現代よりも遥かに性能の低い計算機環境でも扱いやすいシンプルな計算式でライティングを表現できたため、現在に至るまで長く使用されてきました。

しかし、この計算モデルは実際の物理法則に基づくものではないため、いかにもCGな感じの見栄えになりやすく、特に実写との合成には違和感をなくすために多大な編集の労力を要することもしばしばでした。

そこで、特に2000年代以降、拡散反射・鏡面反射それぞれについて実際の物理法則に基づいた計算式を導入して、よりリアルに見える計算モデルが活発に提唱されていきます。

特に2012年にDisneyから発表された論文“Physically Based Shading at Disney”ではデザイナーが直感的に理解しやすいパラメータ群で質感を定義できたため、広い支持を集めてRenderManなど様々な商用レンダラーに搭載されていきます。またこの後は、この計算モデルをベースにさらに改良を進めたモデルが提案され発展していくことになります。

このモデルやその派生形の計算モデルが一般に物理ベースシェーディング(Physically Based Shading; PBS)と呼ばれ、PBSを導入したレンダリングを物理ベースレンダリングと呼びます。

物理ベースシェーディング・レンダリング

Phongシェーディングモデルでは拡散反射・鏡面反射の成分を直接指定しましたが、物理ベースシェーディングでは拡散反射・鏡面反射の成分には

  • 金属感 (Metallic)
  • 粗さ (Roughness)

の2つのパラメータが大きく寄与します。

光源1つだけのライティングではPhongとの違いはわかりづらいですが、鏡面反射の計算の改良によりハイライトの形が歪みにくくなっているのが確認できます。

環境マップを光源として用いるときは、違いがよりはっきりとしたものになります。「粗さ」を設定可能なPBRでは表面のざらつきによって背景全体がぼんやりと写り、また明るい箇所については鋭いハイライトとして反映されます。

さらにSpecular, Sheen, Clearcoatなどのパラメータ効果が付与されて、より多様な質感が表現できます。

“Physically Based Shading at Disney”より引用

ただし、現実世界の物質にこのようなパラメータがあるわけではありません。物理ベースレンダリングも厳密に物理法則に基づくものではなく、あくまで以前よりもリアルっぽく見えるようになった計算手法でしかありませんが、パラメータの意味を理解して値を設定しやすい点において優れたものと言えると思います。

細かい理論や計算式などはここでは解説しませんので、興味のある方はDisneyの論文などを参照してください。

glTFの登場

Web上で3Dモデル・シーンを表現するフォーマットとして、古くはVRML、その後X3DやCOLLADA(※これはWeb用に限らず)なども提案されましたが、どれも広く普及するには至りませんでした。

そこでOpenGLやWebGLなどの規格を策定しているKhronos Groupが中心になって、新たに標準を目指すフォーマットとしてglTFが提案され、初版が2015年に策定されました。その後すぐに仕様の見直しが行われ、2017年にglTF 2.0として発表されます。現在glTFと呼んでいるものは、ほぼ2.0のことを指していると考えて構いません。

glTF 1.0では質感の定義にはPhongシェーディングが採用されていましたが、潮流の変化を見定めたということでしょうか、glTF 2.0では互換性のない形でPhongシェーディングを廃止し、代わりにMetallic/Roughnessパラメータを主とした物理ベースレンダリングが導入されることになります。

glTFによる物理ベースレンダリング

glTF 2.0の策定当初は少ないパラメータしかありませんでしたが、glTF自体は拡張によるパラメータ追加が可能な構造になっており、いくつかのベンダーが独自拡張を行っています。Khronosもまたその拡張をベースに検討を進め、Disneyの論文以降に発表された最新の計算手法も取り入れながら順次新しい拡張仕様を定義し、2021年7月時点で

  • クリア塗装;クリアコート(Clearcoat)
  • 光沢;シーン(Sheen)
  • 屈折率(Index of refraction; IOR)
  • 反射光;スぺキュラー(Specular)
  • 透過;トランスミッション(Transmission)
  • ボリューム(Volume)
  • 照光なし(Unlit)

が質感表現のためのKhronos拡張仕様として定義されています。(日本語名は公式にはないため、弊社が独自に訳したものです)

各拡張は慎重に仕様検討が進められた甲斐もあってか、(Unlit以外の)各拡張は任意に組み合わせることができ、表現の自由度が高くなっています。また現在も議論中の項目もあり、今後さらに定義が追加される可能性があります。

(上記以外にもglTF2.0策定当初からSpecular-Glossiness拡張がありますが、現在ではArchivedとして仕様が凍結され、他の拡張との組み合わせもできない腫物扱いのような状況ですので、こちらは紹介しません)

glTFにおけるリアルタイム表示は、時間をかけて処理するパストレーシングレンダリングと理論的にはほぼ等価です。ただ、リアルタイムに処理できることを主眼としているため、パストレーシングでは使用しないリアルタイム表示専用パラメータも若干存在し、仕様自体がリアルタイムで表現可能な項目に絞られて定義されています。しかしながら、透過・屈折の表現など以前では考えられないような高度な表現がリアルタイムでもできるようになりました。

編集画面内の平面メッシュ表示も屈折する

ツールレベルではglTF自体には対応していても拡張仕様についてはまだこれからのものが多いですが、three.jsやbalylon.jsなどWeb3D用フレームワークのレベルではおおむね対応が済んでいるので、拡張仕様による表現がデファクトスタンダードとなる日も近いかもしれません。

Metasequoia 4 Ver4.8.3では上記の拡張仕様すべてに対応しています。各パラメータの設定方法について次回以降で解説していきます。

リリース情報 Metasequoia 4 Ver4.8.3 リリース (2022/04/20)

Metasequoia 4 Ver4.8.3をリリースしました。

今回の更新ではglTFへの対応を強化し、glTF 2.0の仕様策定後に追加された下記の物理ベースレンダリング(PBR)向け拡張に一通り対応しました。

  • クリア塗装 (Clearcoat)
  • 屈折 (IOR)
  • 光沢 (Sheen)
  • 反射光 (Specular)
  • 透過 (Transmission)
  • ボリューム (Volume)
  • 照光なし (Unlit)

glTFシェーダに追加された各パラメータは、リアルタイムのプレビュー表示、パストレーシングレンダリングどちらにも反映され、従来よりもずっと高度な質感表現が可能になりました。

また、[計測]機能に放射状に厚みを計測できるようになりました。glTFのボリューム設定時に併用する「厚さマップ」を生成するためにも利用できます。

本リリースではその他、若干の修正も行われています。詳細はリリースノートをご参照ください。

厚さマップの生成は手順が少し複雑ですので、別の記事で解説します。物理ベースレンダリング・glTFについて、その概要や操作方法などを何回かに分けて記事を公開予定ですのでこうご期待。