GefjunScene 1.0 — user manual

GefjunScene is a Blender extension for 3D artists who deliver product models as GLB files for Amazon "View in 3D / View in Your Room" (or Shopify 3D/AR). Before you send a GLB to the seller, it checks the Blender scene and the exported file against a dated retailer profile. Each problem is traced to the object, material or image that causes it. Where a fix is safe it applies it (undoable), and it writes an HTML + JSON report you can hand to your client.

All screenshots in this manual are real captures of Blender 4.5.14 LTS and Google Chrome 152 on Linux, taken by the test harness. None are mock-ups.

Important. Retailers change their rules. The built-in Amazon profile is compiled from public summaries and quoted rejection messages, which are listed with dates inside the profile and in every report. A READY verdict means "no rule in this profile failed". It is not a guarantee of acceptance: Amazon also reviews realism by hand. GefjunScene is not affiliated with Amazon or Shopify.

1. Requirements

ItemSupported
Blender4.5 LTS or newer (the manifest requires 4.5.0). Verified on 4.5.14 LTS and 5.2.2 LTS (Linux x64, GUI and headless). 5.0, 5.1 and releases after 5.2.2 are untested.
Operating systemLinux verified. Windows and macOS were not tested; the code is pure Python with no platform-specific parts.
Standalone checkerPython 3.8+ (tools/glbcheck.py, no Blender needed)
NetworkNone. GefjunScene never connects to the internet.

2. Install

  1. Unzip GefjunScene-1.0.0.zip. Inside is the extension package gefjunscene-1.0.0.zip. Install that inner ZIP; do not unzip it.
  2. In Blender: Edit › Preferences › Get Extensions, then the ▾ menu at the top right, then Install from Disk…, and pick gefjunscene-1.0.0.zip.
  3. In the 3D Viewport press N. A GefjunScene tab appears in the sidebar.

To install from the command line instead:

blender --command extension install-file -r user_default -e gefjunscene-1.0.0.zip

To uninstall, use Preferences › Get Extensions › GefjunScene › Uninstall, or blender --command extension remove user_default.gefjunscene.

3. Quick start with the example stool

Open examples/bar_stool_problem.blend. The bar stool contains the mistakes that typically get a GLB rejected:

3.1 Set up the check

In the GefjunScene sidebar tab:

  1. Export set: choose Collection and pick the product collection (BarStool), or choose Selected objects.
  2. Profile: choose Amazon View in 3D (or Shopify 3D / AR, or Custom JSON).
  3. Listing dimensions (assembled): type the width, depth and height from the product listing and choose the unit. Width runs along Blender X, depth along Y and height along Z, with the product's front facing −Y (Blender's Front view).
  4. Tolerance %: the allowed difference per axis (default 3 %).
  5. Placement: Floor checks that the product stands on Z = 0, centred at the origin. Wall / ceiling skips the floor check.

Click Run Preflight. No files are written by this step.

Preflight results in the GefjunScene sidebar: NOT READY, 6 fail, the selected finding explains KHR_materials_specular

The Results panel shows the verdict (NOT READY, READY WITH WARNINGS or READY), the counts, and one row per finding. Click a row to see what is wrong, where it is, and what to do.

3.2 Fix

Safe fixes act only on the export set. Each one is a single undo step (Ctrl+Z), and none of them overwrites a source image file.

FixWhat it changes
Reset glTF specularSets Specular IOR Level to 0.5 and Specular Tint to white on unlinked inputs, which removes KHR_materials_specular. Linked inputs are only reported.
Zero unsupported Principled inputsSets inputs whose extension is not on the allowlist to 0 (for Amazon: Anisotropic).
Make single-sidedTurns on Backface Culling. Blender's default (off) is exported as doubleSided: true.
Place on floor at originMoves the root objects so the product's lowest point is at Z = 0 and its footprint is centred on the origin.
Add constant PBR mapsFor materials whose Base Color / Metallic / Roughness are plain values, writes PNG maps into the Maps folder and connects them: a base-colour PNG, plus a metallic-roughness PNG wired through Separate Color (G = roughness, B = metallic). Its size is the profile's minimum (2048 px for Amazon).
Square power-of-two texturesWrites resized copies of failing textures into the Maps folder and switches the material to the copy. It picks the largest power of two not above the source size, within the profile range, so 3000×2000 becomes 2048×2048. The original image stays untouched.

The Maps folder defaults to //gefjun_maps/ (next to the .blend). Save the .blend first, or set an absolute folder in Safe Fixes (undoable).

Two things stay manual, and GefjunScene tells you about them:

3.3 Export and hand over

In Export and Report, set the Output folder (default //gefjun_delivery/) and, optionally, a File name. Then click Export GLB + Report. GefjunScene:

  1. exports exactly the export set as GLB with locked settings: +Y up, modifiers applied, no cameras, no lights, no animations, PNG/JPEG images, no Draco;
  2. reads the exported file back (it does not trust the scene alone) and checks extensions, triangles, textures, maps, double-sided materials, alpha, UV range, floor and centre, and the size against the listing;
  3. writes <name>.glb, <name>.preflight.html and <name>.preflight.json.

Your selection and active object are restored afterwards.

After the fixes: READY, 0 fail, export written

Open Last Report opens the HTML report in your browser. The report works offline and contains no scripts. Every result is labelled in text (✖ FAIL, ▲ WARN, ℹ INFO, ✔ PASS) as well as colour, and the report lists the profile sources with their dates.

HTML report for the unfixed stool in Chrome
HTML report for the fixed stool in Chrome

Check Existing GLB… runs the GLB part of the checks on any .glb file and writes the report next to it.

4. Keyboard use

Everything is reachable without the mouse:

Typing
F3 search lists every GefjunScene action

5. What is checked

Scene checks run before export; GLB checks run on the exported file. Severity follows the profile: FAIL, WARN, INFO or PASS.

CodeMeaning
SET-EMPTYThe export set has no visible geometry
SET-HIDDENHidden or unselectable objects are in the collection (they will not be exported)
SET-EXCLUDEDCameras or lights in the export set (left out automatically)
SET-ANIMAnimation, armatures or shape keys (exported as a static pose)
UNIT-SCALEScene unit scale is not 1
GEO-TRIS / GLB-TRISTriangles after modifiers / in the GLB (counted per instance) against the limit
GEO-NEGSCALEMirrored (negative-scale) objects
GEO-LOOSEZero-area faces, loose vertices or loose edges
UV-MISSING / UV-RANGE / GLB-UVNo UV map on a textured mesh; UVs outside 0–1
MAT-MISSINGMesh without material
MAT-SHADERSurface not driven by a Principled BSDF
MAT-SPECULARWill export KHR_materials_specular
MAT-EXTA Principled input exports an extension that is not allowed
MAT-DOUBLE / GLB-DOUBLEDouble-sided materials
MAT-ALPHA / GLB-ALPHAAlpha below 1 (alpha mode BLEND)
MAT-PBRSummary PASS: every material translates to allowed glTF PBR
MAT-MAPS / GLB-MAPSBase Color or Metallic/Roughness not textured when the profile requires maps
TEX-MISSINGImage file missing or empty
TEX-SIZE / GLB-TEXNot square, not a power of two, too large (FAIL) or below the quoted minimum (WARN); also format and data-URI images
DIM-MATCH / GLB-DIMSSize against the listing, with unit-slip and axis-swap hints
PLC-FLOOR / GLB-BOUNDS / GLB-CENTEROn the floor (Z = 0 in Blender, Y = 0 in glTF) and centred
GLB-HEADERGLB container and JSON chunk well formed
GLB-SIZEFile size against the warning and maximum sizes
GLB-EXTextensionsUsed / extensionsRequired against the allowlist
GLB-CAMERAS / GLB-LIGHTS / GLB-ANIM / GLB-SKINCameras, lights, animations, skins or morph targets in the file

Amazon's guides also ask you to run the Khronos glTF-Validator before submitting. GefjunScene does not replace it: run it as well (it is free). In our package test, Khronos glTF-Validator 2.0.0-dev.3.10 reported 0 errors and 0 warnings for the fixed stool. It also reported 0 errors for the unfixed stool, which still carries KHR_materials_specular, double-sided materials and a 5 cm float. That is why retailer rules need their own check.

6. Profiles

The built-in profiles are:

To adapt a profile, for example when your seller receives different numbers, click Save Editable Profile Copy. This writes a JSON copy and selects it as the Custom JSON profile. Edit the copy in any text editor. Ready-made copies are in examples/profiles/. A broken profile is rejected with the line, the column and the offending keys named.

Rule keys (in "rules"):

7. Batch and command line

Inside Blender, headless. Uses the settings saved in the .blend unless you override them:

blender -b product.blend --python tools/gefjun_headless.py -- \
    --collection BarStool --profile amazon-view-in-3d --dims 38x38x78 --unit cm \
    --out ./delivery --stem BarStool \
    --fix reset_specular,single_sided,floor_origin,constant_maps,pot_textures,clear_ext_inputs

Without Blender. Checks any GLB with the same code that ships in the extension:

python3 tools/glbcheck.py BarStool.glb --dims 38x38x78 --unit cm
python3 tools/glbcheck.py BarStool.glb --profile examples/profiles/amazon-view-in-3d.custom.json --json-only

8. Troubleshooting

MessageWhat to do
Choose the product collection in 'Export set' first.Pick a collection, or switch to Selected objects.
Save the .blend first, or choose an absolute output folder.// paths are relative to the .blend; save it or use an absolute folder.
Profile … is not valid JSON (line N, column M) / Profile is not valid: …Fix the custom profile at the reported place, or switch back to a built-in profile.
File is too short to be a GLB / This is a .gltf JSON file, not a binary .glbCheck Existing GLB reads binary .glb files only.
… is driven by nodes; bake them manuallySafe fixes do not rewrite node setups. Bake the result to an image texture.
DIM-MATCH FAIL with a unit hintScale the product by the factor named, then apply scale (Ctrl+A › Scale).

9. Supported and not supported

Supported:

Not supported in 1.0:

10. Privacy and licence

GefjunScene runs entirely on your computer. It makes no network connections, collects no telemetry and has no account or licence server. It writes only the files you ask for: the GLB, the reports and the generated or resized textures. See PRIVACY.md.

GefjunScene is free software under the GNU GPL v3 or later (see LICENSE), as Blender add-ons must be GPL-compatible.