Skip to content
Published on

PBRテクスチャリングとレンダリング — 光と質感の科学

Authors

はじめに

形を作り終えたら、次はその表面に命を吹き込む番です。同じメッシュでも、何をまとわせるかによって冷たい金属になったり、ざらついたコンクリートになったり、濡れた革になったりします。この表面の表情を決める仕事がテクスチャリングであり、その表面に光を当てて最終画像を作る仕事がレンダリングです。

今日ほぼすべての3D作業は**PBR(Physically Based Rendering, 物理ベースレンダリング)**という約束の上で行われます。PBRは、光が実際の物質の表面でどのように反射し吸収されるかを物理法則に近く模倣しようとするアプローチです。おかげで一度よく作った質感は、どんな照明環境に置かれてもそれらしく反応し、道具やエンジンが違っても似た結果を見せます。

PBRが登場する前は、アーティストが照明を推測しながら表面の明るさと反射を一つひとつ手で塗らねばなりませんでした。照明が変わるとそのすべての作業が不自然になりました。PBRはこの問題を物理に基づく一貫した規則で解決し、その結果、質感の作業がはるかに予測可能で再利用しやすくなりました。

この記事では、テクスチャ作業の出発点であるUV展開から、PBRをなす核心チャンネル、テクスチャマップの種類とベイク、そして光を扱うレンダリングとライティングまで順を追って解説します。難しく聞こえる用語が多いですが、一つずつほどいていけば、結局「光と物質の関係」という一つの物語に収束します。

UV展開: 3D表面を2Dに広げる

3Dモデルの表面に絵を貼るには、まずその表面を平らに広げる必要があります。ちょうど紙の箱を破いて広げると平面の展開図になるのと同じです。この過程を**UV展開(UV unwrapping)**と呼び、広げられた2D座標をUV座標と言います。

UV展開の概念

  3Dモデル(立方体)        展開図(UV)

      ┌───┐               ┌───┐
     /   /│      広げると  │ 上 │
    ┌───┐ │   ───────▶   ┌───┬───┬───┬───┐
    │   │ /              │ 左 │ 前 │ 右 │ 後 │
    │   │/               └───┴───┴───┴───┘
    └───┘                 │ 下 │
                          └───┘

  * X,Y,Zの代わりにU,Vの二軸で表すため「UV」と呼びます。

UV展開で最も重要な概念はシーム(seam)、すなわち広げるために切り入れる仮想の切開線です。服を作るときの縫い目と同じです。シームをどこに置くかによって、テクスチャの伸び具合(ゆがみ)とつなぎ目の目立ち具合が変わります。

良いUVの条件はおおよそ次の通りです。

  • 低いゆがみ: 3D表面の面積比率が2Dでも最大限保たれてこそテクスチャが伸びません。
  • シームの位置: 目につきにくい場所(物体の内側、エッジ)にシームを置いてつなぎ目を隠します。
  • 十分な解像度配分: カメラに近く映る部分にUV空間をより広く割り当てます。
  • 重なりなし: 意図的な場合でなければUVの島同士が重ならないようにします。

UV作業は退屈に感じられるかもしれませんが、テクスチャ品質の基盤です。UVが雑だと、どんなに良いテクスチャを作っても表面が伸びたりつなぎ目が目立ったりします。

PBRの核心概念

PBRは表面の性質をいくつかのチャンネルに分けて定義します。最も広く使われるメタリック/ラフネス(Metallic/Roughness)ワークフローを基準に核心チャンネルを見ていきます。

PBRメタリック/ラフネスワークフローの核心チャンネル

  ベースカラー  ──┐
  (Base Color)   │
                 ├──▶  [PBRシェーダー]  ──▶  最終的な表面表現
  メタリック     │           ▲
  (Metallic)     │           │
                 │      照明・環境
  ラフネス       │
  (Roughness)    │
  ノーマル       │
  (Normal)     ──┘
  • ベースカラー(Base Color / Albedo): 表面固有の色です。影やハイライトを含まない、純粋な色情報だけを持たせるべきです。光情報が混じっているとどんな照明でも不自然になります。
  • メタリック(Metallic): 表面が金属か非金属かを0と1の間で定義します。金属と非金属は光を反射する仕方が根本的に異なり、この値一つが質感の性格を大きく左右します。通常は0(非金属)または1(金属)に近く置き、中間値はまれにしか使いません。
  • ラフネス(Roughness): 表面がどれほど粗いかを0(なめらかな鏡)から1(完全にぼやける)まで定義します。同じ色の金属でもラフネスが低ければ光るクロームのように、高ければぼやけたアルミのように見えます。実は質感の印象を最も大きく決めるチャンネルです。
  • ノーマルマップ(Normal Map): 実際のポリゴンを増やさずに表面に小さな凹凸があるように光を欺くマップです。青みがかった独特の色で保存され、各ピクセルが表面法線の向きを持っています。レンガの目地、布の織り、肌の毛穴のような微細ディテールを少ないポリゴンで表現させてくれます。
ラフネスによる表面の印象 (同じ金属)

  ラフネス 0.0   ████  鮮明な反射、鏡のようなクローム
  ラフネス 0.3   ▓▓▓▓  くっきりだがやや広がったハイライト
  ラフネス 0.6   ▒▒▒▒  広く柔らかい反射、つや消しの感じ
  ラフネス 1.0   ░░░░  反射ほぼなし、ぼやけた表面

この四つのチャンネルを理解すればPBRの半分は分かったも同然です。結局「この表面は何色で(ベースカラー)、金属か否か(メタリック)、なめらかか粗いか(ラフネス)、微細凹凸はどうか(ノーマル)」という四つの問いに答える仕事だからです。

テクスチャマップの種類とベイク

上の核心チャンネルのほかにも、表現を豊かにする補助マップがいくつかあります。

主要なテクスチャマップと役割

  マップ種類          持つ情報
  ────────────────   ────────────────────────────────
  Base Color         表面固有の色
  Metallic           金属/非金属の区別
  Roughness          表面の粗さ
  Normal             微細凹凸(法線の向き)
  Height/Displacement 実際の高さ(メッシュを変形することも)
  Ambient Occlusion  隙間の自然な陰
  Emissive           自ら光る領域
  • ハイト/ディスプレイスメント(Height/Displacement): 表面の高低を持ちます。ノーマルマップが光を欺くにとどまるのに対し、ディスプレイスメントは実際にメッシュを変形させて深い起伏を作れます。
  • アンビエントオクルージョン(Ambient Occlusion, AO): 物体の隙間や凹んだ所に生じる微妙な陰をあらかじめ持っておくマップです。表面に奥行き感を加えます。
  • エミッシブ(Emissive): 自ら光を出す部分を示します。ネオンサイン、画面、光る紋様などに使います。

ベイク: 情報をテクスチャに焼く

**ベイク(baking)**は複雑な情報をあらかじめ計算してテクスチャ画像として保存する過程です。最も一般的な例が、ハイポリ(high-poly)モデルのディテールをローポリ(low-poly)モデルのノーマルマップに焼くことです。

ノーマルマップベイクの原理

  ハイポリモデル            ローポリモデル
  (数百万ポリゴン)          (数千ポリゴン)
       │                         │
       │  表面ディテールを       │  ここに適用
       │  光線で計測             ▼
       └──────────▶  [ノーマルマップ]  ──▶  少ないポリゴンで
                                            ハイポリに見える

スカルプティングで作った精巧なディテールはポリゴンが多すぎてゲームやリアルタイムにそのまま使えません。そこでハイポリの表面情報をノーマルマップに焼き、軽いローポリモデルにまとわせます。こうすれば少ないポリゴンでも豊かなディテールを表現できます。AOやカーバチャ(curvature)マップも同様の方式で焼き、マテリアル作業に活用します。

レンダリングパイプライン: ラスタライズとレイトレーシング

テクスチャが整ったら、次は光を当てて最終画像を作る番です。画面にピクセルを描き出す方式は大きく二つに分かれます。

二つのレンダリング方式の流れ

  [ラスタライズ Rasterization]
    3Dポリゴン ──▶ 画面平面に投影 ──▶ ピクセルで埋める ──▶ シェーディング
    * 速い。ゲームなどリアルタイムに主に使用。

  [レイトレーシング Ray Tracing]
    カメラから光線発射 ──▶ 物体と衝突 ──▶ 反射・屈折を追跡
                                          ──▶ 光の経路を累積
    * リアル。反射・影・屈折が自然。重い。
  • ラスタライズ(Rasterization): 3Dポリゴンを画面という2D平面に投影し、その内側をピクセルで埋めてからシェーディングする方式です。非常に速いため、ゲームのようにリアルタイムで毎フレームを描く環境で主に使います。ただし反射や影のような光の相互作用は別の技法で真似る必要があります。
  • レイトレーシング(Ray Tracing): カメラ(目)から光線を放ち、その光線が物体に当たって反射・屈折しながら光源まで至る経路を追跡する方式です。反射・影・屈折・間接光が物理的に自然に出ます。代わりに計算量が多く重いです。映画や高品質の静止画像のように時間をかけてよい場合に適します。

今日では境界はぼやけています。ゲームでも部分的にレイトレーシングを組み合わせたハイブリッド方式が増えており、これはハードウェアとエンジンのバージョンによって対応範囲が異なる場合があります。

二方式の性格比較

  項目         ラスタライズ        レイトレーシング
  ──────────   ─────────────       ─────────────
  速度         速い                遅い
  リアルさ     技法で補完          物理的に自然
  主な用途     リアルタイム(ゲーム) オフライン(映画)
  反射/屈折    別のトリック必要    基本的に表現

ライティング: 光こそが雰囲気

どんなに良い質感も照明が悪ければ生きません。ライティングはシーンの雰囲気と立体感を決める最後の鍵です。

基本の三点照明(Three-Point Lighting)

              [キーライト]
               (主光)
                 \
                  \
   [フィルライト] ──▶ ◯ 被写体 ◀── [バックライト]
   (補助光、         (リム光、
    影を和らげる)     輪郭を分離)

  - キー: 最も明るい主たる光、形と影を作る
  - フィル: 影を柔らかく埋める補助光
  - バック: 後ろから当てて被写体を背景から分離

ライティングで知っておくと良い概念があります。

  • キーライト(Key Light): シーンの主たる光源です。形と影の向きを決めます。
  • フィルライト(Fill Light): キーライトが作った濃い影を柔らかく埋めます。
  • バックライト/リムライト(Back/Rim Light): 後ろから輪郭を当てて被写体を背景から分離します。
  • HDRI環境光: 360度パノラマ画像でシーン全体を自然に照らす方式です。屋内外どこでもリアルな雰囲気を素早くつかめます。

良いライティングの核心は光の強さよりコントラストと向きです。片側から強く当て反対側をある程度暗く置くと形がくっきり現れます。すべての場所を均一に明るくすると立体感が消え、のっぺりした画像になります。

マテリアル作業: Substanceを中心に

PBRテクスチャを作る代表的な道具がAdobeのSubstance 3D製品群です。特にSubstance 3D Painterは3Dモデルの上に直接ペイントするように質感をまとわせられるため広く使われます。

一般的なマテリアル作業の流れ

  1. UVが整ったモデルを読み込む
  2. ノーマル・AO・カーバチャなどをベイク
  3. 基本素材(スマートマテリアル)を適用
  4. マスク・ジェネレーターで汚れ・傷・錆を追加
  5. ディテールペイント(ほこり、手垢、かすり傷)
  6. PBRチャンネル別テクスチャに書き出し(export)

Substance方式の強みはプロシージャルマスキングです。エッジには自動で塗装が剥がれ、凹んだ所にはほこりが溜まるといった規則を適用し、手で一つずつ塗らなくても自然な摩耗と汚れを表現できます。ベイクしたカーバチャ・AOマップがこうした自動効果の基準になります。

もちろんSubstanceが唯一の道ではありません。Blenderの中でもノードベースでPBR素材を作れますし、写真を活用したテクスチャや公開ライブラリの素材を持ってきて使う方法もあります。各道具の具体的な機能はバージョンによって異なる場合があるので、公式ドキュメントを併せて確認するのが良いでしょう。

実務のヒント

テクスチャリングとレンダリングで結果を引き上げるいくつかの実践的な助言です。

  • ベースカラーに光情報を入れないこと: 影やハイライトがベースカラーに描かれていると、照明が変わるとき不自然になります。光はライティングと別のチャンネルに任せましょう。
  • ラフネスに変化を: 完全に均一なラフネスは非現実的です。実際の表面は磨かれた所と汚れた所で粗さが微妙に異なります。ラフネスマップに変化を与えるとリアルさが大きく上がります。
  • テクセル密度を一定に: 一つのシーン内の複数の物体が異なるテクスチャ解像度(テクセル密度)を持つと、あるものは鮮明で別のものはぼやけて統一感が崩れます。密度の基準を決めておきましょう。
  • リファレンスを最後まで見ること: 実際の金属、木、布が光をどう反射するか写真で絶えず比較しましょう。記憶より観察が正確です。
  • AOを過剰に掛けないこと: AOは補助的な陰です。ベースカラーに強く掛けると不自然に暗くなります。エンジンのライティングが大部分の陰を担うようにしましょう。
  • 露出とトーンマッピングを意識すること: 最終画像の明るさはカメラの露出とトーンマッピング設定にも大きく左右されます。質感だけ見ず、最終出力画面で判断しましょう。

二つのPBRワークフロー: メタリック vs スペキュラー

ここまではメタリック/ラフネスワークフローを基準に説明しましたが、もう一つの標準である**スペキュラー/グロッシネス(Specular/Glossiness)**ワークフローも知っておく必要があります。二つの方式は同じ物理モデルを異なるチャンネル構成で表現します。

二つのPBRワークフロー比較

  項目            メタリック/ラフネス    スペキュラー/グロッシネス
  ─────────────   ──────────────────   ──────────────────
  核心チャンネル   BaseColor, Metallic,  Diffuse, Specular,
                  Roughness            Glossiness
  金属の表現       Metallic値で区別      Specular色で区別
  テクスチャ容量   相対的に少ない        相対的に多い
  ミスの余地       少ない(白/黒が単純)   多い(スペキュラー値の誤り)
  主な使用先       ゲーム・リアルタイム多 一部のパイプライン

今日、ゲームとリアルタイムの分野ではメタリック/ラフネスがより広く使われます。チャンネルが単純で間違って作る余地が少ないからです。ただし一部のパイプラインは今もスペキュラー方式を使うので、資産をやり取りするときどのワークフローを使うか確認する習慣が必要です。二つの方式は変換が可能ですが、変換の過程で微妙な差が生じることがあります。

ここで知っておくべき物理概念が一つあります。フレネル(Fresnel)効果です。どんな表面でも、視線と表面のなす角が浅くなるほど(かすめるように見るほど)反射が強くなります。穏やかな湖を正面から見ると底が透けますが、遠く斜めから見ると空が鏡のように反射するのがまさにこの効果です。PBRシェーダーはこのフレネルを自動で処理するので、私たちはチャンネルの値を正しく入れさえすればよいのです。

よくあるテクスチャの問題と解決

テクスチャ作業をしていると繰り返し出会う問題があります。原因が分かれば素早く直せます。

よく経験するテクスチャの問題

  症状               よくある原因          解決の方向
  ────────────────   ──────────────────    ──────────────────
  つなぎ目が見える    シーム位置・UV不連続   シームを隠れた所へ移動
  テクスチャが伸びる  UVゆがみ過多           UV再配置、ゆがみ確認
  表面が滑らかすぎる  ラフネス値が均一       ラフネスに変化を追加
  ノーマルが反転      緑/赤チャンネル規約差   Y(緑)チャンネル反転設定
  金属が黒くなる      金属に環境光なし       反射環境(HDRI)を追加
  ディテールがぼやける テクスチャ解像度不足   テクセル密度を上げる

特に初心者がよく戸惑うのがノーマルマップの向きの問題です。ノーマルマップには二つの規約があり、表面の凹凸が内へ入るべき所が外へ飛び出す(あるいはその逆)現象が起こることがあります。これは緑チャンネルの向きの差から生じ、道具の設定でYチャンネルを反転すればたいてい解決します。

もう一つよくあるのが金属が黒く見える問題です。金属は自ら色をほとんど出さず周囲の環境を反射します。だから反射する環境(HDRIのような環境光)がないと金属は真っ黒に見えます。金属が不自然に暗いなら、質感を疑う前にシーンの環境反射から確認してみましょう。

小さな例題: 錆びた金属ドラム

PBRの流れを手に取れるようにするため、錆びた金属ドラム一つに質感をまとわせる過程をたどってみましょう。

錆びた金属ドラムのテクスチャリング流れ

  1. 基本の金属素材を敷く
       BaseColor: 暗い灰色
       Metallic: 1.0 (完全な金属)
       Roughness: 0.4 (少し磨かれた表面)

  2. 錆レイヤーを追加 (マスク使用)
       錆領域: Metallic 0.0 (錆は非金属)
               Roughness 0.9 (粗い表面)
               BaseColor 赤褐色

  3. 錆の位置を決める
       カーバチャマップで角・つなぎ目に錆を集中
       AOマップで凹んだ所に汚れを蓄積

  4. ディテールペイント
       水の流れた跡、傷、塗装剥がれを追加

  5. ラフネスの変奏
       磨かれた部分と錆びた部分の粗さの差を強調

  6. 書き出し
       チャンネル別テクスチャを出力 → エンジン/レンダラーへ渡す

この例の核心は錆が即ち非金属である点です。きれいな金属部分はメタリック1.0ですが、錆びた部分は酸化物なので事実上非金属のように振る舞うため、メタリックを0.0に落としてこそ自然です。このように一つの物体の中でも部位によってチャンネルの値が変わり、その変化をマスクで制御するのがテクスチャリングの妙味です。カーバチャ・AOのようなベイクされたマップが「どこに錆が出れば自然か」を自動で教えてくれる基準になってくれます。

ベイクの落とし穴とケージ

ノーマルマップのベイクは強力ですが、初めて扱うときによく失敗する段階でもあります。最もよくある問題とその原理を押さえてみましょう。

ベイクケージの役割

  ローポリ表面 ───────────────
         │  光線をどこまで撃つか
         │  範囲を決めるのが「ケージ」
  ケージ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ ─ (少し膨らませた外皮)
         │  ケージから内側へ光線発射
  ハイポリのディテールに出会い法線情報を記録

  * ケージが狭すぎるとディテールが切れる
  * ケージが広すぎると見当違いの面を拾う

ベイクはローポリ表面から光線を撃ってハイポリの表面情報を読み取る過程です。このとき光線をどこから撃つかを決める仮想の外皮が**ケージ(cage)**です。ケージが適切であってこそハイポリのディテールがきれいに拾われます。

よく経験するベイクの問題は次の通りです。

  • 面の交差による筋: ローポリとハイポリがうまく整列していないとベイクされたマップに変な筋が生じます。ケージの距離を調整するかメッシュの位置を合わせて解決します。
  • UVシームでのつなぎ目: UVの島の境界で法線がずれて見えることがあります。シームの周りに少し余白(パディング)を置くと緩和されます。
  • ハードエッジの処理: 鋭い角は別途のUV分離やスムージンググループ設定とかみ合ってこそきれいにベイクされます。

ベイクは一度で完璧に出ることはまれです。焼き、確認し、ケージやメッシュを調整して再び焼く繰り返しが自然な過程です。ベイク直後には必ず結果を拡大して検収する習慣をつけましょう。ここで見逃した欠陥はテクスチャとレンダー段階までそのままついてきます。

シナリオ別ライティングアプローチ

同じモデルもどんな状況を演出するかによってライティング戦略が変わります。いくつかのよくあるシナリオを見ていきます。

シナリオ別ライティングアプローチ

  状況            核心光源              雰囲気のポイント
  ─────────────   ──────────────────    ──────────────────
  製品撮影        柔らかいキー+フィル    均一できれいな反射
  屋外の真昼      強い太陽光+HDRI       鮮明な影、青空の反射
  室内の雰囲気    暖かい面光源          ほのかなグラデーション
  劇的演出        強いキー、暗い背景     高いコントラスト、リム強調
  夜・ネオン      小さく強い光源たち     色のコントラスト、エミッシブ活用
  • 製品撮影: 質感をはっきり見せるのが目的なので、柔らかく大きな光源で均一に照らします。影が過剰にならないようフィルライトで埋めます。
  • 屋外の真昼: 強い太陽光一つが主光になり、HDRI環境光が空と周囲の反射を担います。影が鮮明です。
  • 劇的演出: 片側からだけ強く照らし背景を暗く置いてコントラストを上げます。リムライトで被写体の輪郭を生かします。

ライティングに正解はありません。ただ「何を見せたいか」という問いを先に投げかければ光源の配置が自然について来ます。質感を見せるか、形を強調するか、雰囲気を演出するかによって、同じシーンも全く異なる印象になります。

レンダー設定の実務: サンプルとデノイズ

レイトレーシング系のレンダラーは一つのピクセルの色を決めるために複数の光線をランダムに撃ち、その結果を平均します。このときの光線の数を**サンプル(sample)**と呼びます。サンプルが少ないと速いですが画面にざらざらしたノイズが入り、サンプルが多いときれいですが遅くなります。

サンプル数とノイズの関係

  サンプル少(速い)          サンプル多(遅い)

  ▒░▓░▒▓░▒                  ████████
  ░▓░▒░▓▒░  ノイズ多い       ████████  きれい
  ▓░▒▓░▒░▓                  ████████

  * サンプルを2倍にしてもノイズは半分しか減らない。
    むやみに上げるよりデノイザーと併用する方が効率的。

ここで重要な道具が**デノイザー(denoiser)**です。少ないサンプルで速くレンダーしたノイズ入りの画像を、アルゴリズムで滑らかに整える機能です。今日大部分のレンダラーはデノイザーを内蔵しており、適度なサンプル数とデノイズを組み合わせれば時間と品質のバランスを取れます。

レンダー設定で知っておくと良い概念をもう少し整理します。

  • 光線バウンス(Bounce): 光線が表面で何回まで跳ねて光を運ぶかを決めます。バウンスが多いほど間接光が豊かになりますが遅くなります。
  • クランプ(Clamping): 過度に明るい点(ファイアフライと呼ばれる白い点ノイズ)を抑える設定です。
  • 解像度とサンプルのバランス: 高解像度ほどサンプルもより必要です。二つを一緒に考慮しなければなりません。

実務では最初から最高設定でレンダーしません。低いサンプルで速くプレビューしながら構図・照明・質感を整え、最後にサンプルを上げて最終出力します。この「速い反復の後に最後に品質確保」のパターンがレンダー作業の基本リズムです。具体的な設定値はレンダラーとバージョンによって異なる場合があるので、自分のシーンで直接試しながら適正値を見つけるのが良いです。

おわりに

PBRテクスチャリングとレンダリングは結局「光と物質の関係」を扱う仕事です。表面を2Dに広げるUV展開から始め、色・金属性・粗さ・凹凸という四つのチャンネルで質感を定義し、補助マップとベイクでディテールを補強したうえで、ラスタライズであれレイトレーシングであれ適切な方式で光を当て、最終画像を完成させます。

最初はチャンネルとマップの名前が多くて複雑に見えますが、それぞれが「光がこの表面でどう振る舞うか」という一つの問いに答えているという点を覚えておけば道に迷いません。実際の事物をよく観察し、その観察をチャンネルに移す練習を繰り返すうちに、いつのまにか画面の中の表面が本物のように見え始めます。

次の記事では、こうして作った資産がゲームのリアルタイム環境と映画のオフライン環境でどう異なって流れるか、3Dパイプライン全体を見渡します。

参考資料