INDUSTRIAL LADDER TRAY KIT / UNREAL QUICKSTART / v0.1.0
Industrial Ladder Tray Kit / full kit and two-piece sample

Test boundary
The numerical import and fresh saved-project reopen were exercised in
Unreal Engine 5.8.2 on Windows using the engine's stock Interchange glTF
scene importer through automation. Manual editor clicks were not tested.
The equivalent interface guidance below follows Epic's documentation;
this file does not claim a witnessed human UI workflow. Native route
and joint reference views were reviewed separately for readable geometry
and metallic environment response, without Blender lighting parity.

1. Import the supplied GLB files.
Use the stock glTF Interchange scene-import route. Epic documents
File > Import Into Level and its Interchange Pipeline Configuration window.
Import a meshes/*.glb into a project content folder, keeping its embedded
materials and textures. The full kit has six GLBs; the sample has two.
Scene organisation/empty nodes may also appear: use the generated static
mesh for the named piece when placing the route.

The tested stack used the stock GLTF Scene Assets, GLTF, and Scene Level
pipelines, with these import options:
  Recompute Normals: off
  Recompute Tangents: off
  Generate Lightmap UVs: off
  Collision generation: off
  Build Nanite: off
Other mesh/material import settings retained their stock glTF values.
These are options to select for your import, not configuration shipped
inside an Unreal project. No engine files, editor scripts or plugins are
included in the kit. Do not change engine pipeline assets globally.

After import, the LOD0 build settings should retain the authored normals
and tangents. The 1 m straight measures 100 cm long, 20 cm wide and
4.5 cm high at scale (1,1,1), with its origin at the incoming tray-centre
endpoint at tray-base height. Do not apply another 100x actor scale.
The bracket's origin is its wall mount, not a tray endpoint.

2. Keep the imported PBR connections.
The stock importer created opaque, two-sided material instances using
engine glTF parents. All three textures repeat on UV0 with unit UV scale.
Observed texture settings:
  BaseColor: sRGB on; default colour compression.
  MetallicRoughness/ORM: sRGB off; G roughness, B metallic.
  Normal: sRGB off; Normalmap compression; Flip Green Channel on.
The supplied normal PNG is OpenGL +Y. This tested importer automatically
set Flip Green Channel on, with active NormalTexture and NormalScale=1.
Leave that conversion in place; do not also invert the PNG's green channel.
The ORM red channel is constant 1. The GLB has no occlusionTexture;
there is no geometry AO bake or displacement requirement.

These are 1024x1024 maps repeating once per UV unit, equivalent to one
metre in the source surface projection. UV0 intentionally overlaps.
No unique atlas or UV1/lightmap layout is supplied. The full six exports
total 23,516 triangles; the sample's two pieces total 4,316.

3. Place decorative components.
For each placed StaticMeshComponent, set Mobility to Movable, then set
Collision Presets to NoCollision. That explicit configuration was used
in the native test. The kit includes no authored collision and makes no
open-interior or gameplay collision promise.

Unreal uses centimetres. In this tested importer, the delivered GLB axes
(X,Y,Z) become UE (100X,100Z,100Y). For coordinates in ASSEMBLY.json's
Blender metres, use UE (100X,-100Y,100Z). A straight still runs local +X
and opens local +Z. Convert directions without the factor 100.
Do not copy Blender Euler angles directly. For a source rotation matrix
R, the corresponding UE rotation basis is S*R*S, S=diag(1,-1,1).
Coincide endpoint positions and align direction plus open-face normal;
the latter defines roll as well as heading.

Local UE endpoint examples, in centimetres at unit scale:
  1 m straight exit: (100,0,0), direction +X, open +Z.
  0.5 m straight exit: (50,0,0), direction +X, open +Z.
  H90 elbow exit: (30,-30,0), direction -Y, open +Z.
  V90 riser exit: (30,0,30), direction +Z, open -X.
  Tee through exit: (60,0,0), direction +X, open +Z.
  Tee branch exit: (30,-30,0), direction -Y, open +Z.
  Bracket seat: (18,0,0), tray direction +Y, open +Z.
The bracket beam points local +X out of the wall; it is 30 cm long.
Its tray seat is a separate 18 cm mounting rule, outside the tray grid.

Two-piece sample placement from the existing route:
  Straight: location (-110,0,100) cm, identity rotation, unit scale.
  Bracket: location (-90,18,100) cm, local +X pointing world -Y,
           local +Z pointing world +Z, unit scale (yaw -90 degrees).
The bracket seat then lies at (-90,0,100) cm under the straight.

For this sample, UNREAL_ASSEMBLY.json lists its two existing
straight/bracket locations and local +X/+Z orientation vectors.
It is placement data, not an editor script or an included UE level.
The JSON also gives directly enterable degree values for Unreal Transform
Rotation fields: X=Roll, Y=Pitch, Z=Yaw. They were derived from the checked
orientation bases; entering these fields manually was not a test step.

4. Light the steel and save your scene.
Fully metallic steel needs a reflected lighting environment. Direct
lights alone can leave faces outside highlights dark. Do not interpret
the material's base colour as diffuse lighting or the previews as baked
lighting. A default black skylight lower hemisphere can darken faces
reflecting below the horizon. For a uniform studio environment, allow the
selected cubemap across both hemispheres or choose an intended lower-
hemisphere colour. The native reference used a movable specified grey
cubemap at intensity1 with the black lower-hemisphere clamp disabled,
plus studio rect lights. That environment is not included in the kit.
It demonstrates an environment response, not matching Blender lighting.
The six meshes, connected materials, source-relative route and explicit
NoCollision state survived a fresh saved-project reopen in the numerical
test. No cooked-player, performance, Nanite, lightmap, other-version or
engineering/load-rating certification follows from that test.

Epic interface references (guidance, not our manual UI test):
https://dev.epicgames.com/documentation/en-us/unreal-engine/importing-assets-using-interchange-in-unreal-engine
https://dev.epicgames.com/documentation/unreal-engine/interchange-import-reference-in-unreal-engine?lang=en-US
