3DAssets.dev

Blender guide

How to import free 3D models into Blender

Blender reads GLB out of the box, but the import dialog has a few settings worth knowing, and the way glTF materials arrive catches people out. Plus batch importing from the Python console.

3DAssets.dev4 min read

Blender's glTF importer ships with the program and is enabled by default, so importing a GLB is a menu item away. Most of what is worth writing down is about what happens after the import: how the materials arrive, why the model looks wrong in the wrong shading mode, and how to bring in fifty files without doing it fifty times.

The import

File, then Import, then glTF 2.0, and pick the .glb. That is it. A GLB carries its textures inside the file, so unlike an OBJ or an FBX there is no folder of images to find and no broken texture path to repair.

The import dialog has a sidebar of options. The defaults are right for almost everything, and the two worth knowing are:

  • Pack Images, on by default, which keeps the textures inside your .blend rather than writing them out beside it. Leave it on unless you specifically want the image files on disk.
  • Bone Dir and the other skinning options, which only apply to rigged characters and can be ignored for props.

From the Python console

The console at the bottom of the Scripting workspace does the same thing, which is handy when you already have the file path:

1# Blender 4.x: File > Import > glTF 2.0, or from the Python console after downloading the file.
2import bpy
3bpy.ops.import_scene.gltf(filepath='model.glb') # from https://cdn.3dassets.dev/assets/28312/v1/model.glb
4# Metres and +Y up are converted to Blender's Z-up scene automatically.

For a folder of models, loop over it. This imports each file and moves it along the X axis so they do not all stack on the origin:

1import bpy, glob, os
2
3folder = '/Users/you/Downloads/pack'
4offset = 0.0
5
6for path in sorted(glob.glob(os.path.join(folder, '*.glb'))):
7 before = set(bpy.data.objects)
8 bpy.ops.import_scene.gltf(filepath=path)
9 imported = set(bpy.data.objects) - before
10 for obj in imported:
11 if obj.parent is None:
12 obj.location.x += offset
13 offset += 4.0

Comparing the object set before and after is the reliable way to know what an import added, because the importer does not hand you a list of what it created.

Materials arrive as node groups

glTF materials are physically based, and Blender builds them as Principled BSDF setups, which is what you want. Two things surprise people:

The first is that if you imported a model and it looks uniformly grey, you are almost certainly in Solid viewport shading. Solid mode does not show materials at all. Switch to Material Preview with the sphere icons in the top right of the viewport, or press Z and pick it.

The second is that a metallic material with nothing to reflect renders close to black, exactly as it does in a game engine. Material Preview supplies its own studio lighting so this rarely bites there, but a Rendered view with no lights and no world will show you a very dark model and no error.

Animations

Models with moving parts import their clips as actions. Open the Dope Sheet, switch it to Action Editor, and the clips are in the browse list under the names the catalogue publishes, so a supply crate has open and close.

Blender only shows the action assigned to the selected object, so if the list looks empty, select the animated part rather than the top-level empty. The Nonlinear Animation editor is where to go if you want to see everything the file carries at once.

Scale and orientation

glTF is +Y up and Blender is +Z up, and the importer converts between them, so a model arrives upright with no rotation for you to apply. One glTF unit is one metre and one Blender unit is one metre by default, so sizes are real: a five-metre tree is five metres tall, standing on the origin.

If you plan to export back out to an engine, leave the scale alone. Applying a scale in Blender and exporting produces a file that no longer matches the rest of the set it came from, which is a problem that only shows up when someone else uses two of your models together.

Using Blender as the middle step

A common workflow is to import a model here, change it, and export it for an engine. Two things are worth knowing:

  • Export with File, then Export, then glTF 2.0, and pick the GLB format so the result stays self-contained. The exporter's defaults produce a file any glTF reader can open.
  • Everything on 3DAssets.dev is CC0, so a modified version is yours to ship, sell or release with no attribution and no licence to track. You can also contribute the modified model back if it is genuinely useful to others.

Next

If Blender is a stop on the way to an engine, see importing into Godot or importing into Unity. For the browser, loading a GLB in three.js covers the same models without a modelling step at all.

Common questions

Can Blender open GLB files?
Yes. The glTF 2.0 importer ships with Blender and is enabled by default, so File > Import > glTF 2.0 reads both .glb and .gltf. A GLB is self-contained, with its textures packed inside the file, so there is nothing else to locate when importing one.
Why does my imported model look flat or untextured in Blender?
Check the viewport shading mode first: solid shading shows no textures at all, and you need Material Preview or Rendered to see them. If textures are genuinely missing in Material Preview, the file's images may be WebP, which needs a reasonably recent Blender release; updating Blender is the fix.
How do I import many GLB files into Blender at once?
Use the Python console or a small script: loop over the files in a folder and call bpy.ops.import_scene.gltf with each filepath. The importer adds each model to the current scene, so move or clear objects between imports if you do not want everything landing on the origin.
What scale do GLB models import at in Blender?
One glTF unit is one metre and Blender's default unit is also one metre, so a correctly authored model comes in at its real size. Models on 3dassets.dev are authored in metres with +Y up, and the importer converts to Blender's Z-up orientation automatically, so a five-metre tree arrives five metres tall standing on the origin.

Keep reading

Godot guide

How to import free 3D models into Godot

Godot 4 treats a GLB as a native scene, so importing one is a file copy. Here is the editor route, the runtime route, and how to set up collision and materials without fighting the reimporter.

three.js guide

How to load a free GLB model in three.js

A working GLTFLoader setup, straight from a CDN URL with no build step, plus animation, sensible scaling and the four mistakes that account for most blank screens.