これは 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 の Bitmap
  • ScanLine に RGB を直接書き込む
  • TPngImage に変換して保存

という流れが最適。


🧭 次に進むなら

  • Delphi での Materialmap 出力テンプレート(RGB 書き込み版)
  • terrain万華鏡の MaterialLayer256 → PNG 変換ルール
  • 海底地形に最適な TerrainMaterial セットの提案

どれを作る?