blockbench-pbr-materials について
BlockbenchでPBRマテリアルを扱うためのスキルです。マテリアル作成、チャンネル設定、テクスチャセットのインポートと保存に加え、形式ごとの制約を説明します。
主な機能
- 01PBRマテリアルの作成と設定
- 02カラー、法線、高さ、MERの割り当て
- 03テクスチャセットのインポートと保存
- 04マテリアルとテクスチャ参照の確認
- 05形式別チャンネル規則への対応
活用シーン
- 01法線ディテール付きマテリアルの作成
- 02金属度、発光、粗さの調整
- 03Minecraft Bedrockテクスチャセットのインポート
- 04納品用マテリアル設定の保存
MCP 対応
Blockbench MCPツールを使ったPBRマテリアルの確認、作成、編集、インポート、保存方法を案内します。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ jasonjgardner/ blockbench-mcp-project --skill blockbench-pbr-materialsインストール後、Claude Code で/blockbench-pbr-materialsを入力して読み込まれたか確認します。
詳細
Blockbench PBR マテリアル
get_capabilities を使って、アクティブなプロジェクトと、pbr を含む登録済みフォーマット機能を確認します。既存のアセットを割り当てる前に、list_textures と list_materials を確認してください。テクスチャとマテリアルの参照には名前または UUID を指定できます。名前が重複する場合は、返された UUID を優先してください。
対象のマテリアル規約を維持します。Bedrock の MER は、glTF のメタリック/ラフネスや、任意の ORM パッキングとは異なります。Blockbench のプレビューで正常に表示されても、選択したエクスポーターやゲームがそのマテリアルに対応しているとは限りません。チャンネルマップをカラーテクスチャの UV レイアウトに合わせ、ペイント前に各マップの寸法を確認してください。UV の共有と納品時の確認については、フォーマットと納品のガイダンスを参照してください。
バニラ Minecraft のブロックには、.texture_set.json と _mers.tga からなる Bedrock テクスチャセットが用意されており、一部には _normal.tga も含まれます。Mojang 独自のマテリアルを使い始めるには、--pbr を指定してバニラテクスチャを使い、ダウンロードしたファイルに対して import_texture_set を実行します。
表面のディテールに PBR を使う
選択した外観とパフォーマンスの優先事項に従います。小さな留め具、リベット、溶接部、溝、浅いシートのリブには、細かなキューブを増やすのではなく、位置を合わせた法線または高さのディテールを使います。MER に領域ごとのメタルネスとラフネスの変化を加えます。共有アトラスを使えば、表示面ごとに別のマテリアルを用意せずに、アルミ、ゴム、塗装のマーキングを表現できます。アルベド画像を法線/MER マップとして扱うのではなく、各チャンネルに有効なデータを作成してください。既存のカラー テクスチャから法線、高さ、または MER マップを生成するには、アルベドから法線への変換を使い、生成結果を create_texture でインポートしてから、ここで割り当ててください。
法線/高さによるシェーディングでは、シルエットの厚み、手すりの開口部、コリジョンは作成されません。これらが重要な場合は、ジオメトリを維持してください。出力先のレンダリングモードが実際に PBR を使うことを確認し、読みやすいカラーのみのフォールバックを残し、マップ追加によるメモリコストも考慮してください。Bedrock の Classic パイプラインではカラーレイヤーが使われます。法線とハイトマップは、テクスチャセット内で相互排他的なレイヤーです。公式のテクスチャセット仕様を参照してください。
シェーディングモデルはテクスチャリングの前に決めてください。PBR マップを作成する価値があるかどうかは、シェーディングモデルによって変わるためです。
- バニラ Java には PBR スロットがありません。ユーザーが LabPBR を対象にした場合に限り、シェーダーパックが LabPBR を読み込みます。
- Bedrock Classic はカラーのみを読み込みます。Vibrant Visuals と RTX はテクスチャセットを読み込みます。
- スタイライズされたローポリの glTF では、通常、法線マップは省略します。
カメラアングルによって奥行きを変える必要があるディテールは、ジオメトリとして維持してください。リアルタイムアセットの計画のセクション 2、3、6 を参照してください。
パーツ間で表面の凹凸とマテリアルの粒度を一定に保つには、UV スケールと歪みに関するガイダンスを使います。画像解像度が異なる場合でも、すべてのチャンネルで対応する領域を揃えてください。UV やアトラスを編集するときは、各チャンネルの対応関係を維持し、回転/ミラーリング後にタンジェント空間の法線の向きを確認してください。単色であることは、詳細な法線マップやラフネスマップを引き伸ばしてよい理由にはなりません。
PBR テクスチャグループと .texture_set.json は、表面チャンネルを定義します。Bedrock のブロック面をレンダーマテリアルに割り当てるものではありません。これらのバインディングと関連するパックファイルには、Bedrock マテリアルインスタンスを使います。
ツールとパラメーター名
| ツール | このワークフローで使用するパラメーター |
|---|---|
create_pbr_material | name、color_texture、normal_texture または height_texture、mer_texture、color_value、mer_value、subsurface_value |
configure_material | material と、同じチャンネル/値フィールド。テクスチャフィールドに "none" を設定すると、そのチャンネルがクリアされます |
assign_texture_channel | material、texture、channel |
list_materials | パラメーターなし |
get_material_info | material |
import_texture_set | .texture_set.json で終わる path |
save_material_config | material。出力パスは保存されたカラー テクスチャから導出されます |
これらはフラットなツール引数です。チャンネルを textures に、設定を config に入れないでください。また、これらの PBR ツールでは material_id、texture_id、output_path を使用しないでください。
チャンネルと値のルール
| チャンネル | テクスチャデータ | 一様値の代替 |
|---|---|---|
color | ベースカラー/アルベド RGBA | color_value: [R, G, B, A]、各値は 0~255 |
normal | タンジェント空間 RGB。ニュートラルノーマルは #8080FF | なし |
height | グレースケールの高さ。暗いほど低く、明るいほど高い | なし |
mer | R=メタルネス、G=エミッシブ、B=ラフネス | mer_value: [M, E, R]、各値は 0~255 |
- 1 つのマテリアルでは normal または height を使用してください。両者を切り替えるには、同じ
configure_material呼び出しで古いチャンネルを削除します。 - 割り当てるチャンネルごとに別々のテクスチャを使用してください。チャンネルを置き換えると、古いテクスチャはマテリアルから切り離されますが、画像は削除されません。
- 一様値を使用する場合、そのチャンネルにテクスチャを割り当ててはいけません。マップを割り当てたまま一様値を指定すると、エラーが返されます。
mer_valueに切り替える場合は、mer_texture="none"で MER マップを削除してください。 - 現在の Blockbench プレビューでは、MER テクスチャにカラー テクスチャが必要です。一様カラーを使用する場合は、MER も一様値にしてください。
- テクスチャを別のマテリアルに移動すると、そのグループが変わります。カラー テクスチャを別の場所に移動する場合は、元のマテリアルが有効な状態を保てるよう、先に元のマテリアルの MER テクスチャをクリアするか、移動してください。
subsurface_valueは 0~255 の数値 1 つです。RGB オブジェクトではありません。ゲーム/エクスポートでのサポート状況はターゲットによって異なります。
マテリアルを作成する
create_texture: name="stone_color", width=16, height=16,
fill_color="#808080", layer_name="base"
create_texture: name="stone_normal", width=16, height=16,
fill_color="#8080FF", layer_name="base"
create_pbr_material: name="stone", color_texture="stone_color",
normal_texture="stone_normal", mer_value=[0, 0, 230]
# → {success, material: {name, uuid, is_material, channels}}
get_material_info: material="stone"
create_texture で fill_color を指定する場合、layer_name は必須です。作成レスポンスから material.uuid を保持し、以降の material 引数でその値を使用してください。上記の名前は一意であれば使用できます。この例では、マットな非金属の MER 値を使用しています。230/255 はラフネス約 90% に相当します。
チャンネルを編集して置き換える
すでに作成済みの別の normal テクスチャで、ノーマルマップを置き換えます。
assign_texture_channel: material="stone", texture="stone_normal_v2", channel="normal"
1 回の呼び出しで、normal からすでに作成済みの height マップに切り替えます。
configure_material: material="stone", normal_texture="none", height_texture="stone_height"
参照する置換テクスチャが存在している必要があります。list_textures でその UUID を確認してください。変更後は get_material_info を使用して、新しい割り当てを確認します。これらのプロジェクト編集は専用の undo/redo ツールに記録されます。チャンネルの置き換えを取り消すと、置き換えられたテクスチャと新しく割り当てられたテクスチャの両方の割り当てが復元されます。
一様プロパティ
stone という既存のマテリアルで一様値を設定する前に、MER マップをクリアします。
configure_material: material="stone", mer_texture="none", mer_value=[0, 0, 204]
| 外観 | mer_value の例 |
|---|---|
| マットな石 | [0, 0, 230] |
| 滑らかな金属 | [255, 0, 64] |
| 滑らかな誘電体 | [0, 0, 13] |
| 発光する非金属 | [0, 255, 204] |
一様カラーを使用するには、同じ呼び出しでカラー テクスチャと MER テクスチャの両方をクリアします。
configure_material: material="stone", color_texture="none", mer_texture="none",
color_value=[128, 128, 128, 255], mer_value=[0, 0, 204]
MER マップをペイントして割り当てる
MER テクスチャを作成し、マテリアルのカラー テクスチャと一緒に割り当てます。
create_texture: name="stone_mer", width=16, height=16,
fill_color=[0, 0, 204, 255], layer_name="base"
# Metallic spot, retaining roughness at 204 and emission at zero
paint_with_brush: texture_id="stone_mer", coordinates=[{x: 8, y: 8}],
brush_settings={color: "#FF00CC", size: 4}
# Emissive spot, retaining roughness at 204 and metalness at zero
paint_with_brush: texture_id="stone_mer", coordinates=[{x: 4, y: 4}],
brush_settings={color: "#00FFCC", size: 2}
configure_material: material="stone", color_texture="stone_color", mer_texture="stone_mer"
get_material_info: material="stone"
ブラシカラーはすべての RGB チャンネルに書き込みます。赤や緑のブラシで特定のチャンネルだけが変更されると想定せず、保持したいプロパティをその色にエンコードしてください。
確認、インポート、エクスポート
list_materials
# → [{name, uuid, channels: {color, normal, height, mer}, config}]
get_material_info: material="stone"
# → {name, uuid, is_material, textures, config, texture_set_json}
import_texture_set: path="C:/packs/textures/stone.texture_set.json"
インポートするには、Blockbench のデスクトップホスト上でファイルと、参照されている画像を読み取れる必要があります。編集する前に、インポートした素材を確認してください。
エクスポートするには、まず Blockbench でカラー画像を保存し、有効なファイルパスを設定してください。get_material_info には config.file_path と texture_set_json のプレビューが表示されます。保存ツールはカラー画像から .texture_set.json の保存先を導き出します。任意の出力パスを指定することはできません。
save_material_config: material="stone"
メモリ上にのみ作成された新しいテクスチャには、保存先パスがありません。ユーザーが JSON の内容のみを必要としている場合は、get_material_info のプレビューを使用してください。素材設定を保存するとディスク上にファイルが書き込まれますが、元に戻せるプロジェクト編集とは別の処理です。依頼された成果物に含まれる場合は、想定されるゲーム/レンダリング環境で見た目を確認してください。