Colliders, Skeletons, Lights & Cameras β
Beyond meshes and materials, importers carry across physics shapes, skeletal skins, lights, and cameras. This page details which of each survives the trip, per source engine.
Colliders β
Colliders travel through the shared import IR as engine-agnostic shapes, which a single consumer turns into Awaken Collider components. A body can carry several shapes (a compound collider - e.g. a tree with a trunk box plus a canopy hull, or a solid box plus a trigger volume), one ColliderShape per source collider, so the body round-trips faithfully.
Supported shape kinds:
| Shape | Geometry | Notes |
|---|---|---|
| Box | Half-extents | Off-origin boxes keep their centre offset |
| Sphere | Radius | |
| Capsule | Radius + height | Assumed Y-aligned |
| Cylinder | Radius + height | |
| Convex hull | Points (+ triangulation for the gizmo) | Physics convex-hulls the points |
| Trimesh (concave) | Triangle soup | For static geometry |
By source engine β
- Unity - the fullest. Box (
!u!65), Sphere (!u!135), and Capsule (!u!136) primitives import with their centre offsets; MeshColliders (!u!64) resolve Unity's packaged collision meshes - convex.assethulls and separate collision FBX - into convex or concave shapes. An unresolved MeshCollider falls back to the entity's render mesh. Each collider is placed on the node the user will recognise and click, and a multi-part prefab keeps each collider on its own sub-node (a spinning wheel keeps its collider moving with it). - Godot - inline
BoxShape3D,SphereShape3D,CapsuleShape3D,CylinderShape3D,ConvexPolygonShape3D, andConcavePolygonShape3Dimport, attached to the nearest mesh-bearing ancestor. External binaryShape3D.resfiles aren't decoded yet. - Unreal - colliders are not imported yet. Author them in Awaken after importing.
A collision mesh's geometry is registered once and shared across instances (deduplicated), so a hundred copies of the same tree reference one collision asset. Collision geometry uses the same coordinate conversion as the render mesh so hulls overlay their models exactly.
See Colliders for editing shapes after import and Physics Debug for visualising them.
πΈ Screenshot - save as img/import-colliders-debug.png
An imported prefab in the viewport with Physics Debug on, showing its box, capsule, and convex-hull collision shapes overlaid on the mesh.
Skeletons and skinned meshes β
Skeletal animation is where the importers differ most.
glTF / GLB β
glTF carries skeletal animation natively, and Awaken imports it most completely here: skins resolve to a skeleton, the skin's channels become animation clips, and each skinned node gets an Animator that loops its first clip. A skinned glTF model animates as soon as it's in the scene.
Unity characters β
Synty-style character prefabs ship at bind pose (they pose via runtime animation, so the prefab itself carries a stiff T-pose). Awaken handles this in two ways:
- Humanoids are detected by bone-name overlap (15+ shared bones) with a bundled idle clip. Each humanoid is posed into that idle via a direction-matching retarget - which tolerates the clip and the character using different per-bone bind axes - building a per-character skeleton and idle clip and attaching an Animator so it loops. Every instance is re-skinned onto that skeleton.
- Non-humanoid skinned meshes render at their bind (rest) shape.
The idle clip is fetched lazily and fail-soft: if it's missing, characters simply stay at bind. Skinned/animated nodes are kept dynamic so they're never static-batched - which would freeze the pose. Unity's own animation clips beyond the idle are not imported.
Godot and Unreal β
Skinned meshes import at their rest shape - no skeletal animation.
Per-instance re-skin (material overrides) β
Distinct from skeletal skinning, "re-skin" also refers to material overrides a scene applies per placement - the same prefab re-coloured differently across the map.
- Unity re-skins are faithful to the source: each override replaces exactly one renderer's one material slot, matched by the renderer's file ID and slot index. No atlas or texture-name guessing - a recolour to a transparent material correctly renders transparent, as Unity does.
- Godot honours per-surface material overrides, including on instanced
PackedScenes. - Unreal applies one material per mesh - no per-instance overrides yet.
Lights and cameras β
| Lights | Cameras | |
|---|---|---|
| Unity | Directional + point (spot β point; area skipped). Point intensity is scaled up; colour, range, and handedness-converted transform preserved. | Main Camera: FOV, near, far |
| Godot | DirectionalLight3D + point (OmniLight3D/SpotLight3D β point) | Camera3D: FOV, near, far |
| Unreal | Directional + point, intensities remapped from lux/candela; point range from attenuation radius | Not imported |
If an imported scene ends up with no light or camera, Awaken adds a default sun and main camera so the scene is viewable when opened. See Camera and PBR & Lighting for how these drive the render.
See also β
- Colliders - editing imported collision shapes
- Animation - skeletons, clips, and the Animator
- Unity (.unitypackage) - the source of most of this data
- Static Batching - why animated nodes stay dynamic
- Physics Overview - building on imported colliders