Lesson 204: Fab ORM Metallic Import Receipt Before Godot Fest Scene Load (2026)

Direct answer: When Fab ORM node groups change mid-sprint, hero props import into Godot 4.5 as flat plastic—not because Fab failed, but because channel swizzles and sRGB ORM diverged from your locked legend. This lesson ships orm_metallic_flat_receipt_v1.json with A1–A6 gates before you load the fest scene—after Lesson 203 FMOD WebGL snapshots.

Lesson hero for Fab ORM metallic import receipt

Why this matters now (July 2026 Fab node-group swaps)

July 2026 micro-studios already passed 0.01 scale proof and some finished the seven-day ORM proof sphere challenge. A Fab_ORM_Pack_v3 fork still flattens metallic on the hero sword the week before Next Fest. The Fab ORM flat recovery blog documents A1–A6; ORM packing help fixes channel routing—this lesson is the course milestone wiring receipts into BUILD_RECEIPT (Help #9 flat-metallic fix queued separately).

Beginner path (40-minute proof)

Step Action Success check
1 Pin orm_channel_legend_v1.json version A1 pass
2 Diff Fab node group vs locked template A2 pass
3 Export ORM as non-color data A3 pass
4 Run glTF validator on hero GLB A4 pass
5 Import proof sphere + hero A/B in Godot Metal ≠ plastic
6 Write orm_metallic_flat_receipt_v1.json promotion_allowed: true
7 Patch BUILD_RECEIPT fab_pipeline row orm_metallic_flat: verified

Time: ~40 minutes smoke; full lesson 65 minutes with kit re-export + Thursday row review.

Developer path (gates A1–A6)

Gate Check Fail when
A1 Legend version pinned in repo Ad-hoc swizzle in one .blend
A2 Node group matches locked template Fork without changelog
A3 ORM texture non-color on export sRGB ORM blowout
A4 glTF validator clean on hero GLB Metallic factor warnings
A5 Godot slots: B=metallic, G=roughness, R=AO Wrong Texture Channel
A6 Receipt + tolerance table ±0.08 metal / ≤0.02 plastic metallic

orm_channel_legend_v1.json (pin)

{
  "schema": "orm_channel_legend_v1",
  "version": 2,
  "channels": { "R": "occlusion", "G": "roughness", "B": "metallic" },
  "blender_separate_color": ["R", "G", "B"],
  "godot_standard_material": { "ao": "R", "roughness": "G", "metallic": "B" },
  "color_space": "Non-Color"
}

orm_metallic_flat_receipt_v1.json

{
  "schema": "orm_metallic_flat_receipt_v1",
  "build_label": "nextfest-oct-2026-rc5",
  "orm_legend_version": 2,
  "node_group_incident": "Fab_ORM_Pack_v3_copy reverted 2026-05-25",
  "proof_sphere_pass": true,
  "hero_prop_ab": "hero_sword_01",
  "gltf_validator_pass": true,
  "godot_version": "4.5.stable",
  "gates": {
    "A1_legend_pin": "pass",
    "A2_node_group_diff": "pass",
    "A3_non_color_export": "pass",
    "A4_gltf_metallic": "pass",
    "A5_godot_slots": "pass",
    "A6_receipt": "pass"
  },
  "metallic_flat_resolved": true,
  "promotion_allowed": true
}

Store under release-evidence/blender/ORM_METALLIC_FLAT_RECEIPT.json. Pair with fab_pipeline_receipt_v1.json ORM row.

Proof sphere smoke (Godot)

Material Expected metallic read Fail signal
Polished metal sphere 0.85–1.0 Reads like plastic
Matte plastic sphere ≤0.02 Chrome highlight
Hero sword A/B Matches reference capture Flat gray metal

Run under neutral DirectionalLight3D—not emissive fest VFX lighting.

Publish gate

ALTER TABLE release_publish_gate ADD COLUMN IF NOT EXISTS
  orm_metallic_flat_blocked BOOLEAN NOT NULL DEFAULT false;

CI verify_orm_metallic_flat_v1 sets blocked false only when promotion_allowed is true and proof sphere + hero GLB hashes match manifest.

Prerequisites

Common mistakes

  • Fixing metallic before scale proof passes.
  • Skipping proof sphere because “hero looked fine in Blender viewport.”
  • Re-exporting entire Fab kit instead of affected GLBs only.
  • Confusing this receipt with 8K ORM editor hang (VRAM, not metallic response).

Troubleshooting

Symptom Fix
Chrome everywhere A5 slot map + A3 non-color
Muddy plastic Swizzle R/G/B per legend
Validator warns metallicFactor A4 glTF fix-up
Scale OK, metal flat This lesson—node group diff

Mini exercise (55 minutes)

  1. Break A2 on purpose (swap G/B in Separate Color); confirm Godot fail.
  2. Restore legend; pass proof sphere trio.
  3. Re-import hero sword; capture A/B screenshot.
  4. Commit receipt; extend BUILD_RECEIPT template.
  5. Cross-link from Fab ORM blog.

Continuity

FAQ

Does this replace the seven-day challenge?
No—challenge owns G1–G7 calendar; this lesson owns live-ops receipt after a mid-sprint node edit.

Unity project too?
Use color space help—receipt schema still documents ORM legend version for producers.

Help #9 not published?
Use ORM packing help until blender-fab-orm-metallic-flat-godot-4-5-after-node-group-change-fix ships.


Scale proof first, ORM legend second, fest scene last—or your hero prop ships as plastic under fest lighting.