adventures in glTF 2: IKEA home furnishings

Originally posted on Cohost: 2024-06-09
the google meet Fuzzy Cat and Bunny look upon the Feathered Dinosaur sleeping peacefully in their IKEA bed

in my previous glTF post we investigated the cute critters of Google Meet and found a way to pull them into the familiar space of Blender (they were Just glTF Files you could find by doing a bit of javascript peeping)

this time we're doing something similar but with more wood and fabric instead of fur and scales

if you've looked at stuff on IKEA's website you might have come across a product with a "View in 3D" button. Pressing it opens a model viewer with a 3D model of the product, as you would expect. On mobile devices it also lets you view it in your room in a form of AR (although that might require an app to be downloaded first)

an EKEDALEN table with its 3D model being viewed

if you inspect the network requests that are made when you press that button, one of them will fetch a .glb file, and this file is indeed the 3D model that is shown in the model viewer, no surprises there.

okay... cool, we can grab the 3D models for the products that happen to have a "view in 3D" button, but you won't know if a product has it before you go to its page, which is kinda cumbersome. Thankfully There Is A Better Way!

turns out IKEA has a little virtual home furnishing thingy called Kreativ, that lets you plop 3D models of their products into a variety of preset rooms (or your own room, presumably if you're running their app on a mobile device). It has a search bar, and all of the products that show up in the results naturally have 3D models, as clicking them will add them to the room.

IKEA Kreativ with a lot of 3D models plopped into a room

So, to get a hold of a bunch of glTF files all you need to do is look at the network requests in your browsers devtools, filtering by .glb and bam There Are All The Models. Most of the filenames end in "simple" and "draco", indicating that these models are both simplified and compressed, something we'll see in the next section when we load them into blender.

the network requests filtered by .glb showing all the model files that got fetched

you can download all the models by clicking all of the requests above one by one, dumping all the .glb's into your downloads folder. The windows 3D viewer likely won't be able to preview most of the models (perhaps the compression is confusing it) but blender's glTF importer is once again very good and nice and Everything Just Works.

IKEA furniture .glb models imported into blender, all in one cluster

the quality of the models

the textures aren't particularly high res (usually between 512px to 1024px) and the meshes have very obviously been automatically simplified by collapsing vertices. but even with all this reduction in quality, there's still a lot of detail in the models.

Take the fridge for instance - the entire inside of the fridge is there, even though there's no way to actually see it in the model viewer or in Kreativ. The reason for this is simple; IKEA has high quality source models of all their products that they probably use for product renders and whatnots, and by running the models through an automatic simplification process they can get small .glb files that are light enough to be conveniently used in the model viewer and Kreativ.
a closer look at the fridge model, showing the inside and underside

the fridge pictured above has 49,844 triangles, and most of the models in the cluster i downloaded averaged around 10k-20k triangles, but there was one outlier; the KIVIK couch, with a whopping 139k triangles:
couch model with 139k triangles

Looking at the wireframe on the outside of the couch, you wouldn't think this model had that many triangles, but where exactly all those triangles exist becomes much more clear when you look at only the wireframe:

wireframe of the couch model, showing springs and screws

This couch has fully modeled springs and screws! The source model probably had a very detailed screw mesh with all the threads, because we can see the evidence of these threads even after the simplification process. The screw is fully modeled even through the holes in the wooden boards it's fastened to...

closeup of a screw underneat the couch, showing that it's fully modeled even through the hole it's in

If you look on the inner sides of the couch cushions, a place you also cannot ever see in the model viewer or in Kreativ, you will find remnants of the individual zipper teeth

closeup of the edge of a couch cushion, showing the remnants of individual zipper teeth

Not all models come this intact however. Some models have their non visible parts culled, and some lack the underside entirely, which is something you can actually see in the model viewer. Maybe the people at IKEA first made an effort to manually delete uneeded parts of models, before figuring that just relying on the automatic process is good enough, and that the uneeded parts of a model won't actually hurt anything? After all, the KIVIK .glb is only 2.44 MB, only a bit larger than a set of cutlery that was 1.97 MB

the non furniture models

There's more than just furniture 3D models available in Kreativ, you can also place smaller props like lamps, decoration, candles, toys, etc. on tables or the floor. The smaller props are usually more detailed, mostly because they're smaller and thus still retain a lot of the detail of the source model even when looking at them close up.

This pot holder for instance looks very good even this close up

IKEA pot holder 3D model

And then there's this alarm clock with a full battery compartment inside the back cover (which again, you wouldn't be able to remove in the model viewer). There's even philips screw heads inside the screw holes here, but at least there isn't a full clock mechanism inside, phew..

IKEA alarm clock with rear cover removed, revealing fully modeled battery compartment

but is there a blåhaj?

when i first discovered Kreativ a few weeks ago, there was no results when searching "blåhaj" but then one day, there was suddenly one (1) result

i now present

the official IKEA BLÅHAJ 3D model:

official IKEA BLÅHAJ 3D model

they are a bit skrounkly...
when comparing to the furniture and non furniture models we've seen so far, the blåhaj source model is clearly of a lower quality. you can still see the original quad mesh on this .glb download, and the fabric seams still have their beveled edges intact

the shark model is also a bit off model; the gills are nowhere to be seen and there are more teeth on the model than exists on the plush, and the teeth are shaped differently

the one other plush with a 3D model has a higher quality in comparison; you can't see the original quad mesh, indicating that the source model likely had a lot of triangles that got simplified into what we see here, and the plushie seams are part of the normal map, not actual geometry
IKEA heart plushie 3D model

closing remarks

now we've seen two examples of .glb files being used for what they are: the jpeg of 3D. much like how jpeg images can be downloaded and used for various purposes, so can a .glb file. - want to make a double decker couch movie night for blåhaj and the google meet critters? You Can
the google meet critters and blåhaj has a cozy movie night in a double decker couch

and lastly, the IKEA gltfs all come in their correct canonical size when you import them in blender, whereas the google meet critters were all macro, and here you get a true sense of their scale...
the google meet cats showing their true size; you can fit the full size IKEA fridge inside the cat's nostril