Skip to content

glTF / GLB / OBJ & Images ​

Single model and image files import directly, with no options dialog: a model becomes a prefab in the Library with one instance placed in your current scene, and an image becomes a texture asset with a ready-made material. This page covers the supported formats and exactly what each produces.

Direct vs pack imports ​

An engine pack lands in the Library as prefabs and scenes. A lone model or image imports immediately, with no dialog:

  • .glb / .gltf / .obj / .3ds → imported the same way as a zip holding that one file: its materials and the textures it embeds come with it, and it becomes a prefab in the Library named after the file. One instance of that prefab is then placed in the live scene at the drop point and selected, as a single undoable action (undo removes the instance; the prefab stays in the Library). Importing the same file again refreshes the prefab and places another instance. (.3ds details: per-material submeshes, smoothing groups, per-object pivots; no skinning or animation.)
  • .fbx is the exception: a lone FBX goes through the same pipeline as an FBX inside a .unitypackage and lands in the Library. A skinned, animated FBX becomes an animated character (its own clip as the idle), an animation-only FBX becomes a rig-space clip offered to matching characters, and a plain model becomes meshes. ASCII and binary FBX are recognised; files too old to read are refused with the reason.
  • A model dropped together with its textures (several files, a folder, or a zip) brings them along: see Importing several files.
  • Image files → a texture asset plus an auto-created material preset in the Library.

There's no Import Dialog for these, because there's nothing to choose. Import a model from File ▸ Import Model…, the Asset Browser's + Import, or by dropping the file anywhere on the editor.

glTF and GLB ​

Both the binary .glb and the JSON .gltf are supported by the same parser. GLB's JSON and binary chunks are read; a plain .gltf reads its embedded or referenced buffers. What comes across:

  • Meshes - positions, normals, UVs, and indices for each primitive.
  • Node hierarchy - the full node tree with each node's translation/rotation/scale.
  • Materials - baseColorFactor (white when the file leaves it out), the base-colour texture, the normal map, metallic and roughness factors, emissive, alpha mode (MASK cutoff, BLEND) and doubleSided. Textures packed inside a .glb import as texture assets; a .gltf finds its image files when they are dropped with it.
  • Vertex colours - COLOR_0 (float, or normalized 8/16-bit, RGB or RGBA; alpha is dropped). As the glTF spec defines, they multiply the base colour and its texture, so a pale detail texture coloured per vertex looks the way it does in other glTF viewers. The import sets the MeshRenderer's vertexColorTint for this; untick it to show the texture without the tint.
  • Skeletal animation - this is glTF's standout: skins are resolved to a skeleton, each skin's animation channels become clips, and skinned nodes get an Animator that loops the first clip. glTF is the most complete skeletal-import path in Awaken.

Lights and cameras defined in a glTF are not imported (the glTF reader carries only geometry, materials and skin).

OBJ ​

OBJ is a plain-text geometry format. Awaken parses vertex positions (v), normals (vn), texture coordinates (vt), and faces (f), triangulating polygons as a fan and resolving both positive and negative (relative) indices. If the file has no normals, they're computed from the face geometry. The result is a single mesh in a single node.

An OBJ's materials live in a separate .mtl file, so a lone OBJ arrives a neutral grey - assign it a material afterwards, or drop the .obj together with its .mtl and images (see Importing several files).

Images → texture + material ​

Dropping an image decodes it to RGBA and creates two assets:

  1. A texture asset, named after the file.
  2. A material preset that references it, with a white tint (so the texture shows its true colours), metallic 0, and roughness 0.6.

Supported through the file picker: PNG, JPG/JPEG, WebP, BMP, GIF. TGA (Targa) is also decoded - truecolor 24/32-bit, uncompressed or RLE - when dropped in (it isn't in the file picker's accept list, so drag it onto the editor). Larger images are downscaled to the texture cap during decode; see Textures & Terrain.

The Assets panel right after importing a PNG through + Import: the new texture asset and its auto-created material side by side.

A note on welding ​

Awaken welds imported geometry losslessly - recovering shared vertices from de-indexed source meshes - on every import into the Library, single models included. Skinned meshes are left as decoded. When you save the project, the mesh format quantizes the geometry (positions, normals, and UVs) to shrink it on disk, but it does not re-weld.

Awaken-native files ​

The same import paths also accept Awaken's own asset files, which round-trip exactly:

  • .awakenmat - a saved material.
  • .awakenscript - a script asset (compiled on import).
  • .awakenprefab - a prefab. If it references scripts or materials you don't have, Awaken prompts you to locate each missing dependency; dropping a prefab alongside its dependencies (or a whole folder) resolves them automatically.

See also ​

Awaken: browser-native WebGPU game engine.