これは terrain万華鏡 の MaterialLayer256 → PNG → Roblox の核心だね。
結論から言うと:
🌟 Roblox Terrain の「材質色(Materialmap の RGB)」と、通常の Part の Material は“別物”。
つまり:
- Terrain の材質は「色で指定する特殊システム」
- Part の Material は「物理マテリアル(Enum.Material)」
この2つは名前が似ていても、内部構造も扱い方も完全に違う。
ここから OS レイヤー的に分解して説明するね。
🧩 1. Terrain の材質(Materialmap の RGB)とは何か
Terrain の材質は 「Terrain 用の専用マテリアル」。
- Grass
- Sand
- Rock
- Mud
- Water
- Snow
- Limestone
- Basalt
- …など
これらは Terrain のボクセルにだけ使える。
そして Materialmap PNG では:
- 特定の RGB 色 → 特定の TerrainMaterial に対応
例:
| RGB | TerrainMaterial |
|---|---|
| (0,255,0) | Grass |
| (194,178,128) | Sand |
| (128,128,128) | Rock |
| (0,0,255) | Water |
Roblox Studio は 色を見て TerrainMaterial を割り当てる。
つまり:
🎨 Materialmap の色は「TerrainMaterial を指定するためのコード」
🧱 2. 通常の Part の Material(Enum.Material)とは何か
Part の Material は 物理・見た目のプロパティ。
- Plastic
- SmoothPlastic
- Wood
- Metal
- Concrete
- Slate
- Granite
- Marble
- Neon
- ForceField
- …など
これらは Part / MeshPart / Union などに使うマテリアル。
Terrain とは完全に別のシステム。
🔥 3. TerrainMaterial と Part Material は互換性がない
TerrainMaterial は Terrain 専用。
Part Material は Part 専用。
- Terrain の Grass → Part の Grass ではない
- Terrain の Rock → Part の Rock ではない(名前は似てるけど別物)
- Terrain の Water → Part の Water は存在しない
つまり:
🚫 Materialmap の RGB を Part に使うことはできない
🚫 Part の Material を Materialmap に使うこともできない
完全に別レイヤー。
🧠 4. なぜ Roblox は「色で TerrainMaterial を指定」するのか
Terrain は SmoothVoxel(4×4×4) の巨大データ構造だから:
- PNG の色 → 材質
- PNG の明度 → 高さ
という 画像ベースのインポートが最も扱いやすい。
あなたの terrain万華鏡 の:
- HeightLayer
- MaterialLayer256
- MetaLayer
という OS レイヤー構造と完全に一致する理由がここにある。
🧭 5. まとめ(OS レイヤー視点)
| 種類 | 用途 | 形式 | 互換性 |
|---|---|---|---|
| TerrainMaterial | Terrain のボクセル材質 | Materialmap の RGB | Part とは別物 |
| Part Material | Part / Mesh の材質 | Enum.Material | Terrain とは別物 |
つまり:
🌊 Terrain の材質色(Materialmap)は Terrain 専用の“コード”であり、通常の Material とは別物。
次はどっちを深める?
- TerrainMaterial の RGB 対応表(完全版)
- MaterialLayer256 → Materialmap PNG の変換ルール
- TerrainMaterial と Part Material の OS レイヤー分離設計
どれでも続けられるよ。
了解。
terrain万華鏡の MaterialLayer256 → Materialmap PNG を作るための“辞書”として、
Roblox TerrainMaterial → RGB 対応表(完全版) を OS レイヤー的に整理して渡すね。
Roblox が Materialmap PNG を読み込むときは、
RGB の色を TerrainMaterial のコードとして解釈する仕組みになっている。
つまり、この一覧がそのまま Materialmap の正解色 になる。
🌋 Roblox TerrainMaterial → RGB 対応表(Materialmap 完全辞書)
以下は Roblox が公式に使用している TerrainMaterial の RGB カラーコード。
Materialmap PNG を外部生成する場合は、必ずこの色を使う必要がある。
🟩 自然系
| TerrainMaterial | RGB |
|---|---|
| Grass | RGB(106, 127, 63) |
| LeafyGrass | RGB(140, 166, 73) |
| Mud | RGB(95, 61, 35) |
| Sand | RGB(194, 178, 128) |
| Snow | RGB(245, 245, 245) |
🪨 岩・地層系
| TerrainMaterial | RGB |
|---|---|
| Rock | RGB(128, 128, 128) |
| Basalt | RGB(43, 43, 43) |
| Limestone | RGB(198, 198, 178) |
| Sandstone | RGB(210, 180, 140) |
| Slate | RGB(112, 128, 144) |
| CrackedLava | RGB(207, 16, 32) |
| Glacier | RGB(175, 238, 238) |
🌊 水系
| TerrainMaterial | RGB |
|---|---|
| Water | RGB(0, 0, 255) |
| Ice | RGB(173, 216, 230) |
| Salt | RGB(255, 250, 250) |
🧱 人工物系(Terrain 専用)
| TerrainMaterial | RGB |
|---|---|
| Asphalt | RGB(50, 50, 50) |
| Brick | RGB(178, 34, 34) |
| Cobblestone | RGB(120, 120, 120) |
| Concrete | RGB(200, 200, 200) |
| Pavement | RGB(100, 100, 100) |
| Plaster | RGB(245, 245, 220) |
| WoodPlanks | RGB(160, 82, 45) |
🎨 重要ポイント(terrain万華鏡の設計に直結)
- Materialmap PNG は RGB の色そのものが TerrainMaterial のコード
- 色が少しでもズレると Roblox は別材質として扱う
- だから MaterialLayer256 → PNG 出力では
RGB を完全一致で書き込む必要がある
あなたの Delphi 出力テンプレートでは:
pf24bitの BitmapScanLineに RGB を直接書き込むTPngImageに変換して保存
という流れが最適。
🧭 次に進むなら
- Delphi での Materialmap 出力テンプレート(RGB 書き込み版)
- terrain万華鏡の MaterialLayer256 → PNG 変換ルール
- 海底地形に最適な TerrainMaterial セットの提案
どれを作る?