Guide
Building models that open up floor by floor
In XR Viewer, a building can be explored the way an architect would show it: pick a floor to look inside it, or switch whole disciplines — architecture, structure, interior — on and off. It all comes from how the groups inside the model are named. No plugins, no extra files.
Live preview
Try it on a small villa
This is how the app behaves. Floors picks a floor and hides everything above it. BIM layers shows, hides or isolates sections and layers. Below the villa is its hierarchy — the named groups that make all of it work.
Showing the whole building. Pick a floor to look inside it.
Floor
Spreads the floors apart to see between them. BIM edition.
The model's hierarchy — tap a group to open it
- L_01_ArchitecturalArchitectural
- C_01_01_WallsWalls
- C_01_02_DoorsDoors
- C_01_03_WindowsWindows
- C_01_08_StairsStairs
- L_02_StructuralStructural
- C_02_02_ColumnsColumns
- C_02_04_SlabsSlabs
- L_12_InteriorDesignInterior Design
- C_12_01_FurnitureFixturesFurniture & Fixtures
Required for buildings
Floors: one naming rule
Put each floor in its own group, named Floor_ + its number
Floor_00 is the ground floor, Floor_01 the next one up, and so on. Basements are Floor_B1, Floor_B2; a mezzanine is Floor_M1. The name is case-sensitive: capital F, then an underscore. The numbers go up with the storeys; the names viewers see on the floor buttons (“Lobby”, “Penthouse”, up to 16 characters) are typed in when you upload.
Keep the floors at the top of the model
The floor groups sit directly in the scene — or directly inside the one group that holds the whole building. A floor buried two groups deep won't be found.
Everything else is optional, but helps
Put the roof in a group named Roof — it hides along with the upper floors. Put the plot, landscape and neighbouring buildings in Site or Context — those always stay visible.
What the viewer sees
Picking a floor hides every floor above it and the roof, so you look straight into that floor. Nothing moves — the floor stays where it is and the floors below stay in place under it. All floors brings the whole building back.- Villaone group holding everything (optional)
- Sitealways visible
- Floor_00Ground floor
- Floor_01First floor
- Floor_02Second floor
- Roofhidden when a floor is picked
Rules that make the cutaway look right
The names get the floors recognised. These decide whether looking inside a floor actually looks right — the checker can't see most of them, so they're worth knowing.
Each floor holds the slab it stands on
Floor_01 owns the first-floor slab — which is also the ground floor's ceiling. So hiding Floor_01 opens the ground floor up from above. Put that slab in Floor_00 instead and a lid stays over the ground floor.
Raise the floor group, not the geometry
Each floor group sits at its real height — Floor_00 at 0, Floor_01 at 3.4, Floor_02 at 6.8 — with its parts at their normal place inside it. Don't leave every group at 0 with the geometry lifted inside: the floors still work, but they can't be spread apart with Floor gap.
Floor groups are only ever raised: keep them at 0 sideways, with no rotation and a scale of 1.
Cut anything that runs through several storeys
A façade panel, stair core, lift shaft or column that runs from the ground to the roof belongs to one group only, so it stays standing when the floors above are hidden — or vanishes with them. Split it at each floor line and put each piece in its own floor.
A stair belongs to the floor it starts from. Railings, balconies and terraces go with the floor you stand on to use them.
Set the model up the standard way
- Real size, in metres.
- Y is up (Blender and 3ds Max are Z-up — the glTF exporter converts it for you).
- Ground level at height 0, and the building centred on the origin.
- At the top level, keep “floor” out of every name that isn't a floor — a group called
FlooringorFloorPlan_Refis easily mistaken for one, and the checker will flag it. - Plain ASCII names, no spaces, dots or slashes, and each name used once per group.
Optional
BIM layers: sections and layers inside floors
Inside each floor, group parts by discipline — a section
A section group is L_ + its number + its name, such as L_01_Architectural or L_02_Structural.
Inside each section, group parts by kind — a layer
A layer group is C_ + section number + layer number + name, such as C_01_01_Walls or C_02_04_Slabs. Only the numbers are read — the name after them is for people.
Repeat the same sections on every floor
The app joins sections with the same number across floors, the roof and the site: hiding Structural hides it everywhere. The same goes for layers.
When the BIM tool opens
At least one section from the list below has to be on every floor, with at least one layer inside it. Architectural and Structural are the usual starting point. Anything else you add shows up in the panel too.BIM layers are part of the BIM edition of XR Viewer. Floors work on every building model.
- Floor_01First floor
- L_01_Architectural
- C_01_01_Walls
- C_01_02_Doors
- C_01_03_Windows
- C_01_08_Stairs
- L_02_Structural
- C_02_02_Columns
- C_02_04_Slabs
- L_12_InteriorDesign
- C_12_01_FurnitureFixtures
- L_01_Architectural
- Floor_02…the same sections again
How far do you need to go?
Minimum
Floors only
Each floor is a Floor_ group, and what's inside can be anything — even one merged mesh per floor.
Floors and floor gap work. The BIM tool stays off.
Better
Floors + sections
Inside each floor, the parts are split into L_ sections (Architectural, Structural, …); one mesh per section is fine.
Still no BIM tool — it needs at least one layer.
Full
Floors + sections + layers
Inside the sections, C_ layer groups (Walls, Slabs, …). One section on every floor with one layer in it is enough to start.
The BIM tool opens.
Architectural or Structural?
Every part goes in exactly one layer. Structural is the frame only — foundations, columns, beams and slabs — so hiding it should leave nothing floating, and hiding Architectural should leave the bare frame. There is no separate layer for load-bearing walls: every wall goes in Walls.
| If it's… | It goes in |
|---|---|
| Any wall — load-bearing, core, shear wall or partition | C_01_01_Walls |
| Door / window | C_01_02 / C_01_03 |
| The concrete slab | C_02_04_Slabs |
| Floor finish or screed on the slab | C_01_04_Floors |
| The ceiling under it | C_01_05_Ceilings |
| Columns / beams | C_02_02 / C_02_03 |
| Roof covering / façade cladding | C_01_06 / C_01_07 |
| Stair / ramp | C_01_08 / C_01_09 |
| Finishes and decorative work on a built wall or ceiling | C_12_04 / C_12_05 |
Where each section goes
Sections work the same way inside floors, the roof and the site — hiding a section hides it in all of them at once.
| Inside | Typical sections |
|---|---|
Floor_… | Architectural, Structural, the building services (Mechanical, Electrical, Plumbing, Fire, ELV, Safety) and Interior Design |
Roof | Roofs (roof finish, parapet), the roof slab under Structural, rooftop equipment under Mechanical |
Site | Site / Civil, Landscape, Infrastructure |
Foundations go under Structural in the lowest floor, not the site, so they hide and show with the rest of the structure.
Rules for the groups
- Section groups (
L_) sit directly inside a floor, Roof or Site — not inside another group. - Layer groups (
C_) sit directly inside the section with the same first number:C_02_04goes insideL_02, never insideL_01. - Groups are empty containers: no geometry on the group itself, no offset, no rotation, scale 1. Only the parts inside them move.
- Only the numbers are read.
L_01,L_1andL_01_Architecturalare the same section; the name after the number is for people. - A floor only needs the sections it has — no empty groups. A floor without plumbing simply has no
L_05. - Parts that sit in a floor outside any section still show and hide with that floor, and appear in the BIM panel as “Everything else”.
- Merge freely inside a layer: one mesh per layer per floor (per material) is the lightest model for phones, and loses nothing — the app switches whole layers, never single objects.
What viewers can do with it
- Floors — pick a floor to hide everything above it; All brings the building back
- Floor gap — spread the floors apart to see between them (BIM edition)
- Eye — show or hide a section or a layer everywhere at once
- Only — show one section or one layer and hide the rest; tap it again for everything
- Level chips — look at one floor or the roof on its own
- Ghost — draw hidden parts faintly instead of removing them
- Press and hold — a row to preview just that part for a moment
- Close the panel — and the whole model comes back
Reference
Section & layer names
Copy the names exactly. A section or layer that isn't on this list still works — it just shows under the name you gave it.
Architectural معماريL_01_Architectural
- Walls
C_01_01_Walls - Doors
C_01_02_Doors - Windows
C_01_03_Windows - Floors
C_01_04_Floors - Ceilings
C_01_05_Ceilings - Roofs
C_01_06_Roofs - Facades
C_01_07_Facades - Stairs
C_01_08_Stairs - Ramps
C_01_09_Ramps - Rooms
C_01_10_Rooms - Spaces
C_01_11_Spaces
Structural إنشائيL_02_Structural
- Foundations
C_02_01_Foundations - Columns
C_02_02_Columns - Beams
C_02_03_Beams - Slabs
C_02_04_Slabs
Mechanical ميكانيكاL_03_Mechanical
- HVAC
C_03_01_HVAC - Ductwork
C_03_02_Ductwork - Mechanical Equipment
C_03_03_MechanicalEquipment - Mechanical Piping
C_03_04_MechanicalPiping
Electrical كهرباءL_04_Electrical
- Power
C_04_01_Power - Lighting
C_04_02_Lighting - Distribution & Cabling
C_04_03_DistributionCabling
Plumbing صحيL_05_Plumbing
- Water Supply
C_05_01_WaterSupply - Drainage
C_05_02_Drainage - Stormwater
C_05_03_Stormwater
Fire Protection مكافحة الحريقL_06_FireProtection
- Fire Fighting
C_06_01_FireFighting - Fire Alarm
C_06_02_FireAlarm
ELV & Security تيار خفيف وأمنL_07_ELVSecurity
- CCTV
C_07_01_CCTV - Access Control
C_07_02_AccessControl - Network & Communication
C_07_03_NetworkCommunication
Safety سلامةL_08_Safety
- Evacuation & Emergency
C_08_01_EvacuationEmergency - Safety Elements
C_08_02_SafetyElements
Site / Civil موقع عامL_09_SiteCivil
- Roads & Walkways
C_09_01_RoadsWalkways - Parking
C_09_02_Parking - Site Works & Levels
C_09_03_SiteWorksLevels
Landscape لاندسكيبL_10_Landscape
- Softscape
C_10_01_Softscape - Hardscape
C_10_02_Hardscape - Irrigation
C_10_03_Irrigation
Infrastructure بنية تحتيةL_11_Infrastructure
- Water & Sewer
C_11_01_WaterSewer - Stormwater
C_11_02_Stormwater - Electrical & Telecom
C_11_03_ElectricalTelecom
Interior Design تصميم داخليL_12_InteriorDesign
- Furniture & Fixtures
C_12_01_FurnitureFixtures - Kitchens
C_12_02_Kitchens - Interior Finishes
C_12_03_InteriorFinishes - Partitions & Wall Finishes
C_12_04_PartitionsWallFinishes - Decorative Ceilings
C_12_05_DecorativeCeilings - Joinery / Millwork
C_12_06_JoineryMillwork - Interior Layout & FF&E
C_12_07_InteriorLayoutFFE
Before you export
Designer's checklist
Every building
- Real size in metres, Y up, ground level at height 0, building centred on the origin.
- One group per storey, named
Floor_00,Floor_01, … (Floor_B1for basements,Floor_M1for mezzanines). - Floor groups at the top of the model — directly in the scene or in the one group that holds everything.
- Each floor group at its real height, not moved sideways, not rotated, scale 1.
- Each floor holds the slab it stands on.
- Façades, cores, shafts and columns split at every floor line.
- Roof in a group named
Roof, next to the floors (not inside the top floor). - Ground, landscape and surroundings in
SiteorContext. - No other top-level group has “floor” in its name (
Flooring,FloorPlan_Ref, …). - Exported as a .glb, with nothing merged across groups and hidden objects included.
If you add BIM layers
- Sections (
L_01_Architectural, …) directly inside each floor, Roof and Site. - Layers (
C_01_01_Walls, …) directly inside the section with the same first number. - At least one section on every floor, with at least one layer in it.
- Foundations, columns, beams and slabs under Structural; every wall, floor finish, ceiling and opening under Architectural.
- Foundations under Structural in the lowest floor.
- Section and layer groups empty, at zero, no rotation, scale 1.
- Names copied from the list above, in plain ASCII.
- Parts inside each layer merged where they share a material, to keep it light for phones.
Free tool
Check your model
Only the list of named groups at the start of the file is read — never the geometry, textures or anything else. Nothing is sent anywhere.
This is the same check the upload form runs when “Is this a Building Model?” is on. It lists the floors it finds, whether the BIM tool will open, and — if something is off — exactly what to rename or move.
Warnings are worth fixing but never block an upload. Only problems that would stop the floors from working do.
Troubleshooting
Common mistakes
The floors are inside another group
e.g. Scene › Building › Floors › Floor_00. The app only looks at the top of the model.
Fix: Move the Floor_ groups up so they sit directly in the scene, or directly inside the one group that holds everything.
A name that is almost right
Floor01, floor_01, Floor 01 and Level_01 are not recognised — the rule is exact.
Fix: Rename to Floor_01. The checker suggests the right name for each one it spots.
Blender added .001 to a name
Floor_01.001 happens when two objects share a name. It usually still works, but it is a sign of a duplicate.
Fix: Remove the suffix, and make sure each floor name is used only once.
The export merged everything
Options like “merge meshes”, “flatten” or “combine by material” across the whole scene replace your groups with one big object.
Fix: Turn those options off and export again. Merging the parts inside one layer yourself is fine — it's merging across groups that erases them.
Only one floor
A single Floor_ group works, but there is nothing to switch between.
Fix: Split the building into one group per floor.
The BIM tool stays grey
No section is on every floor, or the section has no layer groups inside it.
Fix: Add the same section (e.g. L_01_Architectural) to every floor with at least one C_ layer inside. The checker names the floors that are missing it.
Uploaded as a .gltf, .fbx or .obj
XR Viewer reads binary glTF (.glb) — a single self-contained file.
Fix: Export as glTF Binary (.glb).
Uploaded before turning on “Building Model”
Models that are not marked as buildings are optimized for size, which can merge the floor groups.
Fix: Edit the model, choose the original .glb again and turn on “Is this a Building Model?”.
A lid over the floor you picked
The slab of the floor above was put in the floor below, so it stays when the upper floors are hidden.
Fix: Move each slab into the floor that stands on it — Floor_01 holds the first-floor slab.
Something stays standing when the floors above are hidden
A façade, stair core, lift shaft or column runs through several storeys but lives in one floor group.
Fix: Split it at each floor line and put each piece in its own floor.
Floor gap doesn't spread the floors
Every floor group sits at height 0 and the geometry was lifted inside it (common when an exporter bakes positions).
Fix: Move each floor group to its real height and the parts inside it down by the same amount. The checker flags this as “same height”.
The model floats, sinks or sits off-centre on the table
The ground isn't at height 0, or the building is far from the origin.
Fix: Put ground level at 0 and centre the building's footprint on the origin before exporting.
Hiding Structural leaves a slab or column floating
A structural part was put under Architectural (or the other way round).
Fix: Use the Architectural or Structural table above: foundations, columns, beams and slabs are Structural; walls, floors, ceilings, doors and windows are Architectural.
A section is missing from the BIM panel
The L_ group is inside another group, has no number (L_Arch), or its layers aren't directly inside it.
Fix: Put L_ groups directly inside the floor, number them from the list, and put C_ groups directly inside them. The checker lists each one it finds.
Parts that were hidden while modelling are missing
The exporter was set to export visible or selected objects only.
Fix: Export everything — the viewer does the hiding. In Blender, leave “Limit to: Visible Objects / Selected Objects” off.
Exporting
Getting it out of your 3D tool
Blender
- Add an Empty for each floor (Add → Empty → Plain Axes), name it
Floor_00,Floor_01, … and set its Z to the floor's height (0, 3.4, 6.8 …). AddRoofandSitethe same way. - For BIM, add
L_Empties under each floor andC_Empties under those — all at location 0, rotation 0, scale 1. - Select the parts, then the Empty last, and parent them with Ctrl+P → Object (Keep Transform). Apply transforms (Ctrl+A) on the parts only, never on the Empties.
- File → Export → glTF 2.0, format glTF Binary (.glb), +Y Up on, “Limit to” options off. Collections alone don't become groups — use Empties.
Revit, ArchiCAD, SketchUp, 3ds Max, Rhino
- Make each storey one group (or component, or layer that exports as a group) named
Floor_00,Floor_01, … at the top level. BIM tools' levels map naturally to floors. - Inside, group by discipline and category with the
L_andC_names if you want BIM layers. - Export or convert to .glb in metres, and turn off any option that merges, flattens or combines the whole scene — it would erase the groups.
- If your tool can't name groups on export, bring the file into Blender and set the structure up there.
- Run the file through the checker above before uploading.
Uploading to XR Portal
- Choose Maquette as the model type and pick your .glb file first.
- Then turn on “Is this a Building Model?”. The floors are read from the file and listed for you to name.
- Keep it on when you upload — that's what tells the optimizer to keep your floor groups intact.
Questions
Good to know
Do I have to add BIM sections and layers?
No. Floors alone are a complete, finished building model — the Floors tool works and the BIM tool simply stays off. Add sections and layers when the project has that information.
Can a floor be a single merged mesh?
Yes. For floors only, what's inside a Floor_ group can be anything — one mesh per floor is fine.
What happens to the Site and Context when a floor is picked?
They always stay visible, so the building keeps its setting. Only the floors above the picked one and the Roof are hidden.
The building has no roof, or a pitched roof that is part of the top floor. Is that OK?
Yes. Roof is optional. If the roof is in its own Roof group it hides whenever a floor is picked, so viewers can look into the top floor; if it's inside the top floor it hides only when a lower floor is picked.
Does the number of floors have to match anything I type?
No. The floors are read from the file. When you upload, the dashboard lists every floor it found and you only give each one a display name.
Do the numbers have to be continuous, or start at 00?
No. The order comes from each floor group's height. Floor_00 for the ground floor and numbers going up with the storeys keeps it clear for everyone, and the checker warns if the numbers and heights disagree.
What if a section or layer I need isn't in the list?
Use the next free number with a clear name, for example L_13_Acoustics. It works everywhere and shows under the name you gave it. Ask XR Portal to add it to the list so it gets a proper name and colour.
Where are BIM layers available?
In the BIM edition of XR Viewer, together with Floor gap. The floor cutaway works for every building model.
Is my file uploaded when I use the checker on this page?
No. It's read in your browser, and only the list of groups at the start of the file — not the geometry or textures.
Ready to upload?
Sign in to the XR Portal dashboard and add your building as a maquette.
Upload a model