Skip to content

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:

ShapeGeometryNotes
BoxHalf-extentsOff-origin boxes keep their centre offset
SphereRadius
CapsuleRadius + heightAssumed Y-aligned
CylinderRadius + height
Convex hullPoints (+ triangulation for the gizmo)Physics convex-hulls the points
Trimesh (concave)Triangle soupFor 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 .asset hulls 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, and ConcavePolygonShape3D import, attached to the nearest mesh-bearing ancestor. External binary Shape3D .res files 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 ​

LightsCameras
UnityDirectional + point (spot β†’ point; area skipped). Point intensity is scaled up; colour, range, and handedness-converted transform preserved.Main Camera: FOV, near, far
GodotDirectionalLight3D + point (OmniLight3D/SpotLight3D β†’ point)Camera3D: FOV, near, far
UnrealDirectional + point, intensities remapped from lux/candela; point range from attenuation radiusNot 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 ​

Awaken β€” browser-native WebGPU game engine.