やさいのつくりかた.

目次/第07章

07PBR

「濡れている」「粉をふいている」を数値で言う

physically based rendering — 物理ベースの質感

この章の3行まとめ
  • 形と模様が合っていても、光り方を外すとプラスチックの飾りになります。
  • いまの3Dは、材質を現実の光の振る舞いに沿った少数の数値で表します(PBR)。
  • いちばん効くのは roughness(粗さ)。0で鏡、1で紙です。

形と模様が合っていても、光り方を外すとプラスチックの飾りになります。 コードのコメントに何度も出てくる警告です。 いまの3Dは、材質を「現実の光の振る舞い」に沿った少数の数値で表します。これがPBRです。

  • roughness(粗さ) — 0で鏡、1で紙。ハイライトの広がりが変わります。いちばん効く数値。
  • metallic(金属っぽさ) — 野菜はぜんぶ0。
  • clearCoat(透明な上塗り) — 車のワックスのような層。なす・きゅうり・りんごの照りはこれ。
  • sheen(布のような照り) — 産毛のある表面が縁で柔らかく光る。オクラで使用。
  • subSurface(内部散乱) — 光が中に入って散って出てくる。トウモロコシの粒や玉ねぎの薄皮。
  • anisotropy(異方性) — 繊維の方向にハイライトが伸びる。玉ねぎの外皮。

野菜ごとにどれを使うかが、そのまま「その野菜らしさ」になります。 なすとオクラは、どちらも同じような緑〜紫の細長い実なのに、 片方はクリアコート主体、片方はシーン主体。ここを取り違えると別物になります。

実験 — 同じ形を、別の野菜に見せる

粗さを0.05まで下げると、途端に「野菜」から「置物」になります。

つまずきポイント

クリアコートの強さと粗さは、テクスチャの値と掛け算されます。 リンゴ.js の修正履歴に、roughness 0.26 × ORMのG(0.2〜0.6) で 実効0.05まで下がってしまい、周りの建物が映り込んで 「ガラスのリンゴ」になっていた、という記録が残っています。 数値を単体で見ず、掛かった後の値を見ること。

やってみよう
  1. 粗さを0.05まで下げて、野菜が「置物」になる瞬間を見る。
  2. ナスのプリセットから、クリアコートだけを0にする。何に見えるか。
  3. オクラのプリセットで sheen を0にして、産毛の有無を比べる。