7-Day Blender Fab ORM Proof Sphere Challenge Before Godot 4.5 Fest Import - 2026
Your Fab environment kit looked heroic in Blender. In Godot 4.5 the brass reads plastic, leather looks chrome, and the proof crate you skipped last week is now the prop players screenshot for “wrong materials.”
July 2026 micro-studios import Fab velocity after 0.01 scale fixes and blender-to-engine resource refreshes—but ORM channel swaps and sRGB mistakes survive scale discipline. This Challenges & Community Hooks sprint runs seven weekday gates so art leads lock ORM packing, ship a proof sphere, validate glTF, and pass Godot StandardMaterial3D before fest kits touch the demo branch.
Non-repetition note: Fab MegaGrants industry analysis owns scope pressure; 12-free scale proof tools own scale bookmarks. This URL owns ORM proof sphere week—first dedicated challenge. Planned help: ORM metallic flat Godot.
Pair with fab_pipeline_receipt, BUILD_RECEIPT, and Wednesday demo smoke.
Why this matters now (July 2026)
- Godot 4.3+ material nodes — StandardMaterial3D ORM wiring changed; old Fab node groups silently mis-swizzle.
- Fab kit reuse — Teams buy metal-heavy kits for fest demos without re-authoring ORM.
- Screenshot refunds — “Looks wrong” tags rise when store trailer PBR ≠ in-game props.
- Grant + Fab pressure — Pipeline analysis adds kits mid-cycle—proof sphere is the gate before merge.
- Engine import hang sibling — 8K ORM help (planned) is texture size; this week is channel truth.
Direct answer: One gate per weekday under release-evidence/blender/orm-freeze-week/; no Fab kit merge until Gate 7 and orm_channel_receipt_v1.json show proof_sphere_pass: true.
Who this is for
- 1–4 person teams importing Fab assets into Godot 4.5 fest demos
- Artists who tweaked node groups without updating ORM legend
- Technical artists owning glTF export presets
- Producers blocking kit integration without metallic ball proof
Time: ~50–70 minutes per weekday (~8 hours total). Weekends: compare renders only.
Before you start — readiness checklist
- [ ] Blender 4.x with glTF exporter enabled
- [ ] Godot 4.5 project with GLTF import defaults documented
- [ ]
release-evidence/blender/orm-freeze-week/folder - [ ] Reference HDRI or studio lights frozen for week (no lighting churn)
- [ ] fab_pipeline_receipt asset charter signed
- [ ] No new Fab purchases during challenge week—integrate what you already own
- [ ] Scale pipeline from 12-free scale tools already GREEN
Rules of the challenge
- One owner signs each weekday log.
- Fail stops the day—fix before
gateN_pass. - ORM channel legend immutable after Gate 2 without
orm_legend_versionbump. - Proof sphere render reference archived before Fab kit A/B.
- Pair promotion with Thursday row review
fab_pipelinerows. - Friday Block 5:
orm_proof_pass Y/N.
Challenge calendar
| Day | Gate | Artifact | Pass signal |
|---|---|---|---|
| Mon | 1 | orm_channel_legend_v1.json |
R/G/B roles documented |
| Tue | 2 | proof_sphere.blend + stills |
Metal / plastic / dielectric balls |
| Wed | 3 | fab_orm_nodegroup_lock.md |
Node group version pinned |
| Thu | 4 | proof_sphere.glb + validator log |
glTF 2.0 clean |
| Fri | 5 | Godot import screenshots | ORM matches Blender ± tolerance |
| Sat | — | Side-by-side review | No new gates |
| Sun | — | Art lead sign-off | Seven logs present |
| Mon+1 | 6 | Fab kit A/B GLB smoke | One hero prop + one metal prop |
| Tue+1 | 7 | orm_channel_receipt_v1.json |
Kit merge allowed |
ORM channel legend (Gate 1)
Document your packing—Godot expects consistent ORM texture semantics:
{
"schema": "orm_channel_legend_v1",
"orm_legend_version": 1,
"texture_color_space": "non-color",
"channels": {
"R": "ambient_occlusion",
"G": "roughness",
"B": "metallic"
},
"metallic_workflow": "metallic_roughness",
"notes": "Fab node group v3 — do not swap B and G mid-week"
}
Pass: Every artist PDF and Blender file header links this JSON.
Common legend mistakes
| Mistake | Godot symptom |
|---|---|
| sRGB on ORM | Plastic shine |
| Metallic in alpha of albedo | Wrong unless extension documented |
| Roughness inverted | Oily leather |
| AO multiplied twice | Flat props |
Apply transforms and scale (prerequisite gate)
Before Gate 2, confirm 0.01 Fab scale discipline:
| Check | Tool | Pass |
|---|---|---|
| Object scale 1,1,1 | Blender N panel | Applied |
| Root empty at origin | Outliner | Yes |
| glTF export +Y Up | Export preset | Matches Godot |
ORM lies are easier to debug when scale is not also wrong—players blame “Fab broken” when two bugs stack.
Gate 2 (Tuesday) — Proof sphere in Blender
Build proof_sphere.blend with three spheres under same lighting:
| Sphere | Material intent | Pass render |
|---|---|---|
| A | Polished metal | Clear specular, dark base |
| B | Matte plastic | Wide roughness, zero metallic |
| C | Dielectric (painted wood) | No mirror metal |
Export reference PNGs proof_renders/blender_{metal,plastic,dielectric}.png.
Pass: Art lead agrees A reads metal, B reads plastic, C reads neither—without touching Godot yet.
Outbound: Blender glTF export.
Gate 3 (Wednesday) — Fab node group lock
fab_orm_nodegroup_lock.md:
# Fab ORM node group — frozen 2026-05-28
- Node group name: Fab_ORM_Pack_v3
- Blender file: proof_sphere.blend
- Forbidden: duplicate group as Fab_ORM_Pack_v3_copy with edited sockets
- Kit imports must use **Apply Modifiers** + **Transform** frozen per scale blog
If Fab ships updated node groups, bump orm_legend_version and restart Gate 1.
Gate 4 (Thursday) — glTF export + validation
Export proof_sphere.glb:
| Setting | Fest demo recommendation |
|---|---|
| Format | glTF 2.0 binary .glb |
| Apply transforms | Yes (scale 1,1,1) |
| +Y Up | Match Godot import doc |
| Images | ORM separate texture, non-color |
Run glTF Validator — archive JSON log.
Pass: Zero errors; warnings documented and accepted in log.
Gate 5 (Friday) — Godot 4.5 import smoke
Import proof_sphere.glb into empty test scene:
- Create StandardMaterial3D from glTF ORM texture.
- Verify Metallic and Roughness textures assigned to correct slots.
- Compare in-engine screenshot to Blender still same camera angle.
godot_orm_smoke.md:
| sphere | blender_ok | godot_ok | delta |
| metal | yes | yes | within tolerance |
| plastic | yes | yes | |
| dielectric | yes | YELLOW | slight roughness drift — accepted |
Pass: Metal sphere never reads as plastic; plastic never reads chrome.
Link Godot 4.5 import documentation.
Gate 6 (Monday+1) — Fab kit A/B
Pick two purchased assets—one hero metal, one organic:
| Asset | Gate 4/5 repeated? |
|---|---|
| Hero sword | Mini proof render + Godot screenshot |
| Wooden crate | ORM dull, not metal |
Do not import entire 40-piece kit until A/B pass.
Gate 7 (Tuesday+1) — orm_channel_receipt_v1.json
{
"schema": "orm_channel_receipt_v1",
"build_id": "nextfest-oct-2026-rc4",
"orm_legend_version": 1,
"proof_sphere_pass": true,
"gltf_validator_pass": true,
"godot_version": "4.5.stable",
"fab_kit_ab_pass": true,
"gates": {
"G1_legend": "pass",
"G2_proof_sphere_blender": "pass",
"G3_nodegroup_lock": "pass",
"G4_gltf_export": "pass",
"G5_godot_import": "pass",
"G6_fab_ab": "pass",
"G7_receipt": "pass"
},
"paired_fab_pipeline_receipt": "release-evidence/fab/fab_pipeline_receipt_v1.json",
"promotion_allowed": true
}
Merge into BUILD_RECEIPT row orm_proof: verified.
How this differs from scale-only pipelines
| Topic | Scale blog/resource | This challenge |
|---|---|---|
| 0.01 import | Yes | Assumes done |
| ORM channels | Mentioned | Whole week |
| Proof sphere | Optional | Mandatory |
| Godot plastic metal | Symptom | Prevented |
Beginner path (art lead non-technical)
- Monday — Paste channel legend above monitors.
- Tuesday — Approve three sphere renders.
- Wednesday — Forbid node group edits in Discord.
- Thursday — Wait for validator GREEN from TA.
- Friday — Compare Godot screenshot to Blender still.
- Next week — Allow two Fab props only.
- Receipt — Producer checks JSON before kit merge ticket.
Technical artist path
- Automate validator in
scripts/validate_gltf.sh. - Pin Godot import preset
fab_orm.tres. - Add CI thumbnail render of proof sphere on PR touching
assets/fab/. - Wire
orm_channel_receiptinto Thursday row review.
Troubleshooting (fest week)
| Symptom | First check |
|---|---|
| Everything chrome | Metallic channel inverted or in albedo alpha |
| Flat metal | AO missing; metallic zero |
| Sparkly fireflies | Normal tangents + ORM sRGB |
| Godot dark | Wrong HDRI energy vs Blender |
| Import hang | Downscale ORM—see 8K help when live |
Tolerance table (Blender vs Godot)
Agree numeric slack in godot_orm_smoke.md before arguing art failure:
| Material | Roughness delta max | Metallic delta max |
|---|---|---|
| Polished metal | ±0.08 | ±0.05 |
| Matte plastic | ±0.10 | ±0.02 (must stay low) |
| Painted wood | ±0.12 | ±0.03 |
Screenshots outside tolerance → Gate 5 fail until import preset or legend fixed—not “Godot is wrong.”
Gate 1 deep dive — document extensions
If using KHR_materials_clearcoat or custom Fab glTF extensions, append to legend JSON:
"extensions_allowed": ["KHR_materials_unlit"],
"extensions_forbidden_in_demo": ["experimental_fab_shader"]
Fest demos should ship metallic-roughness core only—fancy extensions break Godot import presets.
Gate 4 export preset (copy block)
Save Blender export preset Fab_Fest_gltf_baseline:
Format: glTF Binary (.glb)
Include: Selected Objects
Transform: +Y Up
Geometry: Apply Modifiers, UVs, Normals
Materials: Export, ORM as separate images
Compression: None during proof week
Changing preset mid-week invalidates Gate 5 compares—freeze preset in fab_orm_nodegroup_lock.md.
Gate 5 Godot import preset
Create fab_orm_import.tres notes:
| Import option | Value |
|---|---|
| Root type | Node3D |
| Material name keep | true |
| Roughness texture | channel G per legend |
| Metallic texture | channel B per legend |
| Normal map | sRGB off |
| ORM texture | sRGB off |
Godot 4.5 UI labels drift—photograph import screen for onboarding doc.
Worked example (two-person art+TA duo)
Context: nextfest-oct-2026-rc4 — brass props plastic in Godot after artist duplicated Fab node group.
| Day | Action | Result |
|---|---|---|
| Mon | Legend JSON posted | Team aligned R/G/B |
| Tue | Proof renders approved | Reference PNGs archived |
| Wed | Found Fab_ORM_Pack_v3_copy |
Deleted copy; Gate 3 pass |
| Thu | Validator warning on tangents | Accepted with log note |
| Fri | Metal sphere plastic in Godot | FAIL — B/G swapped in copy |
| Fri PM | Fixed legend v2 bump + re-export | Gate 5 pass |
| Mon+1 | Sword + crate A/B | Pass |
| Tue+1 | Receipt filed | Kit merge unblocked |
Lesson: Proof sphere caught swap before forty-piece kit landed in demo branch.
Producer promotion gate
[ ] orm_channel_legend_v1.json committed
[ ] proof_sphere.glb validator GREEN
[ ] godot_orm_smoke.md signed art lead
[ ] fab_kit_ab/ two assets only
[ ] orm_channel_receipt_v1.json promotion_allowed
[ ] BUILD_RECEIPT row updated
No fest art merge PR without screenshot of receipt JSON in description.
Programmer handoff (what engineers need)
Engineers do not reauthor ORM—they verify:
- Import preset path in repo documented.
- Demo scene loads
proof_sphere.glbin CI thumbnail job (optional). build_idon art receipts matches game binary.- No runtime material override scripts fighting glTF ORM unless documented.
Link Wednesday demo smoke—gameplay smoke still required after art passes.
Fab purchase moratorium (challenge week)
| Allowed | Blocked |
|---|---|
| Integrate owned kits | Buy new environment megapacks |
| Fix ORM on two A/B props | Retexture entire biome |
| Downscale 8K ORM | Add new hero sculpt |
Aligns with Fab pipeline pressure P3 scope gates.
Discord status template (daily)
ORM Proof Week D3: Gate 3 node group lock — PASS
Blockers: none
Next: glTF export Thursday
Evidence: release-evidence/blender/orm-freeze-week/
Reduces “is metal fixed yet?” pings during engineering standup.
Cross-engine note (Unreal teams)
Unreal ORM packing may differ—if studio ships both Godot fest demo and Unreal trailer:
- Duplicate
orm_channel_legend_v1.json→orm_channel_legend_unreal_v1.json. - Run separate proof sphere import in Unreal.
- Do not assume Godot-pass GLB materials work in UE without reauth.
This challenge text focuses Godot 4.5—Unreal is parallel receipt, not duplicate gates copy-paste.
Evidence folder
release-evidence/blender/orm-freeze-week/
orm_channel_legend_v1.json
proof_sphere.blend
proof_renders/
proof_sphere.glb
gltf_validator_log.json
godot_orm_smoke.md
fab_kit_ab/
orm_channel_receipt_v1.json
Integration with fab_pipeline_receipt
Add rows to Fab pipeline receipt:
| Field | Value when this challenge passes |
|---|---|
orm_proof_sphere |
verified |
max_orm_resolution |
e.g. 2048 |
kit_merge_allowed |
true |
Community hook (optional)
Post before/after proof sphere screenshots with #FestORMProof—compare Blender vs Godot, not store metadata. No invented studio names; use your project codename only.
Related GamineAI reads
- Fab MegaGrants pipeline pressure
- 25-free blender-to-engine refresh
- 12-free Fab Godot scale proof tools
- Fab search licensing 2026
- Ren'Py language pipeline (parallel fest prep, different discipline)
Key takeaways
- Seven gates lock ORM legend, proof sphere, node group, glTF, Godot, Fab A/B, receipt.
- Proof sphere is three materials under frozen lighting—not a single chrome ball.
- orm_channel_receipt_v1.json blocks kit merge until
proof_sphere_pass. - Assumes scale already fixed—run scale pipeline first.
- Pairs planned ORM flat metallic help.
- ~8 hours spread across weekdays beats one heroic import night before October.
- Producers tie to fab_pipeline_receipt and BUILD_RECEIPT rows.
- First Blender Fab ORM challenge URL on the blog—not scale-only listicles.
FAQ
Can we use Unity instead of Godot?
Yes—keep Gate 1–4 in Blender; replace Gate 5 with URP/HDRP ORM proof using same legend JSON.
One metallic ball enough?
No—plastic reference prevents “everything metal” misreads.
Fab kit already imported?
Freeze new imports; re-validate hero props through Gate 6 or rollback materials.
Does this include rigging?
No—mesh materials only.
Link to art listicle backlog?
Blender ORM flat art pipeline (blog backlog) is deeper node theory—do challenge week first.
Lighting freeze (why Tuesday matters)
Changing HDRI rotation between Blender still and Godot screenshot invalidates Gate 5—even with correct ORM.
| Frozen for week | Variable |
|---|---|
| Key light angle | Lock |
| Exposure | Lock |
| Background | Mid-gray studio |
| Color management | Filmic vs Standard documented |
Note view_transform in godot_orm_smoke.md footer.
Albedo vs ORM separation (Wednesday audit)
| Map | sRGB? | In proof sphere? |
|---|---|---|
| Base color | Yes | Separate sphere albedos |
| ORM packed | No | Shared ORM texture |
| Normal | No | Optional high poly |
Artists painting metallic into albedo fail Gate 5 when ORM metallic is zero—grep albedo for extreme values during Gate 6 kit review.
Minute budget realism
| Team | Week total |
|---|---|
| Solo TA + contractor art | 10–12 h |
| In-house art lead only | 12–15 h |
| Producer overhead | +2 h review |
Cheaper than reverting fest demo branch after player “plastic sword” screenshots hit refund dashboard.
Validator warnings you may accept
| Warning | Accept if… |
|---|---|
| Unused skins | Proof scene only |
| Duplicate textures | Document merge plan |
| Non-power-of-two ORM | Downscale before Gate 6 kits |
Never accept ERROR severity on proof_sphere.glb—fix before Gate 5.
Sign-off: Art lead + TA initials on Gate 7 receipt notes field—producer promotes only with both names in JSON string.
After Gate 7 — kit merge discipline
- Import max two props per day into demo scene—verify each against proof sphere lighting.
- Log each prop in
fab_kit_ab/prop_import_log.csvwithorm_legend_version. - Run Wednesday demo smoke on build with new brass—not on art-only test scene.
- Update store screenshot only from Godot capture after ORM pass—never Blender viewport alone.
- Schedule Blender ORM flat art blog read for TA when node theory gaps appear—challenge week proves process; art pipeline post explains node math for refreshes.
October fest rule: No Fab kit merges in the final seven days before public fest branch unless orm_channel_receipt version matches build_id on the promoted depot.