Comment on page

Using Server Localizer

Project setup

  • You’ll need Immersal SDK package from which can be downloaded from the Developer Portal
  • Set up the AR Foundation and other packages for the project as described here
  • Set up AR Camera in the scene and set it’s tag as ”MainCamera”
  • Set up Immersal SDK Prefab with your developer token found from your Immersal Developer Portal.
  • Set up AR Localizer object and the AR Space object.
  • In the AR Localizer, enable “Use Server Localizer” and type in the map IDs
  • Set up your map loader. More on this further below
Set up the AR Localizer object
Set up the AR Space object

Setting up the maps

  • Load the maps using the menu Immersal SDK/AR Map Downloader
  • Load the alignment data once you’ve previously aligned the maps elsewhere.
  • Place your 3D content under the same gameObject that the maps were loaded
  • Once happy, you can delete the maps from scene and the Assets/Map Data folder.
Once the maps have been aligned, they can be deleted

Loading the maps

  • Create a map loader script that loads the maps in Start() as “empty” ARMaps and applies the transforms.
  • The Server Localization setup is then done. Your ARSpace object will get transformed along with your 3D objects on successful localization.
Create a map loader script and place it in the scene
  • In order to make on server localization work you need to register to an ARSpace the ARMap you want to localize to. Scripts below does it for you on Start()
using System.Threading.Tasks;
using Immersal.AR;
using Immersal.REST;
using UnityEngine;
public class MapLoader : MonoBehaviour
[SerializeField] private Transform m_root;
[SerializeField] private bool m_applyAlignment = true;
void Start()
private async void LoadMapsAsync()
foreach (var id in ARLocalizer.Instance.mapIds)
SDKJob job = new SDKJob(); =;
await LoadWithNoBinary(job);
private async Task LoadWithNoBinary(SDKJob job)
Debug.Log($"Loading map {} with no binary");
await ARSpace.LoadAndInstantiateARMap(m_root, job, null, ARMap.RenderMode.DoNotRender, default, m_applyAlignment);