materials について
Materials & Texturesは、Three.jsのマテリアルにPBRテクスチャマップを割り当てるスキルです。色空間の設定やテクスチャのタイリングを扱い、単色で済ませず、表面に合うアセットを選ぶ方法を示します。
主な機能
- 01PBRテクスチャマップの一括割り当て
- 02マップの色空間設定
- 03広い面へのテクスチャ反復
- 04シーンの表面に合うテクスチャ選択
活用シーン
- 01地形や地面へのテクスチャ適用
- 02崖への石材テクスチャ適用
- 03床や壁へのテクスチャ適用
- 04適合するアセットがない面の特定
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ drawcall-ai/ skills --skill materialsインストール後、Claude Code で/materialsを入力して読み込まれたか確認します。
詳細
マテリアルとテクスチャ
color だけを設定した MeshStandardMaterial は、平坦でプラスチックのような「テクスチャのないグレー」に見えます。これはシーンが未完成だとすぐに分かる特徴です。完成した表面にはテクスチャマップがあります。単色のままの表面は、マテリアルではなくフィットギャップです。
テクスチャセットを適用する
マーケットの texture アセットには PBR セット(ベースカラー+ノーマル+ラフネス/メタルネス/AO)が含まれています。マップをまとめて読み込み、割り当てます。
const loader = new TextureLoader()
const base = loader.load('/texture/grass/basecolor.jpg')
base.colorSpace = SRGBColorSpace // base color is sRGB
const normal = loader.load('/texture/grass/normal.jpg') // every other map is linear (leave default)
const rough = loader.load('/texture/grass/roughness.jpg')
const material = new MeshStandardMaterial({ map: base, normalMap: normal, roughnessMap: rough })
カラースペース — 最もよくある間違い
- ベースカラーマップとエミッシブマップ →
SRGBColorSpace。 これを忘れると、全体が色あせて灰色がかって見えます。 - ノーマル/ラフネス/メタルネス/AO マップはリニアのままにします(デフォルトの設定です。sRGB として指定しないでください)。
現在の Three.js では、aoMap はデフォルトでプライマリの uv セットを共有します。2 つ目の uv2 属性を作成する必要はありません(この要件は古いバージョンのものです)。
大きな表面へのタイリング
地面や壁では、メッシュ全体にテクスチャを 1 枚引き伸ばすのではなく、テクスチャを繰り返す必要があります。
for (const t of [base, normal, rough]) {
t.wrapS = t.wrapT = RepeatWrapping
t.repeat.set(surfaceMeters / tileMeters, surfaceMeters / tileMeters) // ~1 tile per few meters
}
各表面に合ったテクスチャを選びます。地形には草や地面、崖には石、床や壁には板材や金属を使います。アセット調査からテクスチャを選びます。表面に合うものがなければ、単色で出荷するのではなく、その不足を明記してください。
コメント
Markdown 対応