# Place Content in Real-World Locations Using Location AR Source: https://www.nianticspatial.com/docs/nsdk/how-to/vps/real_world_location_ar/ The AR Location is the highest-level abstraction that allows us to "anchor" virtual objects to the real world. (image: Placing Cube in Unity) This how-to covers: - Importing a real-world location from the Geospatial Browser (GSB) into Unity; - Placing content in a real-world location; - Testing placed content, either using a mockup or on location. > **Warning:** > > **Unavailable legacy workflow** > > New users cannot start this workflow because its Geospatial Browser ZIP download is no > longer available. Continue only if you already have a legacy package. A current Scaniverse > FBX or GLB export is not equivalent and cannot create the required `ARLocation` manifest. > For new Sites, use [VPS2 anchor-relative placement](https://www.nianticspatial.com/docs/nsdk/how-to/vps2/placing_virtual_content/#place-content-relative-to-an-anchor). ## Prerequisites 1. You will need a Unity project with NSDK installed and a set-up basic AR scene. For more information, see [Set up the Niantic SDK for Unity](https://www.nianticspatial.com/docs/nsdk/setup/#set-up-the-niantic-sdk-for-unity) and [Set up a basic AR scene](https://www.nianticspatial.com/docs/nsdk/setup/#set-up-a-basic-ar-scene). 2. You will need to [create a Niantic Spatial account](https://www.nianticspatial.com/docs/nsdk/create_account/) and [authenticate](https://www.nianticspatial.com/docs/nsdk/auth_client/) ## Importing an existing legacy location package Continue only if you already have a GSB ZIP that was downloaded before the service was retired. New packages cannot be obtained from Scaniverse. 1. Locate the previously downloaded GSB ZIP. Do not unzip it before import. 2. Drag and drop the ZIP file into the **Assets** directory in the Project window. The legacy importer creates a mesh `.prefab` and manifest `.asset`. 3. Turn on **Persistent Anchors** in **NSDK Settings**: 1. Click the **NSDK** top menu, then select **Settings**. 2. In the **Inspector** window, check the **Enabled** box next to **Persistent Anchors**. (image: Unity menu with 'Enable Persistent Anchors' checked) 4. Add an **AR Location Manager** component to the `XROrigin`: 1. Select the `XROrigin` in the **Hierarchy**, then, in the **Inspector** window, click **Add Component** and search for **ARLocationManager**. 2. In the **ARLocationManager** Component, click **Add AR Location** to create a new `ARLocation`. 5. In the **Hierarchy**, select the `ARLocation` to show its Component in the **Inspector**. Drag and drop the **Manifest** from the **Assets** directory to the **AR Location Manifest** field in the Component. 1. This will update the name of the `ARLocation` GameObject to match the manifest and set up its fields for tracking. ## Adding Real-World AR Content When adding your AR content, remember the following: 1. Add your AR content as a child of the manifest (`ARLocation`). For example, to add a **Cube** to a location: 1. In the **Hierarchy**, right-click the `ARLocation`, then mouse over **3D Object** and select **Cube**. 2. In the **Inspector**, set the cube's **Scale** to `0.5`. Set its position so that you can see it in your test location. 2. Enable auto-tracking: 1. In the **Hierarchy**, select the **XROrigin**, then, in the **Inspector** window, check the **Auto-Track** box in the **ARLocationManager** Component. 2. When auto-tracking is enabled, the `ARLocationManager` will start tracking on the currently active `ARLocation` when the component is enabled. See [How to Use Location AR with Code](https://www.nianticspatial.com/docs/nsdk/how-to/vps/location_ar_code/) for more options and information. (image: Remote authoring content) When an `ARLocation` is tracked during runtime, it is placed in the `ARTrackable` field of the `ARPersistentAnchor` it is associated with. This maintains the relative position of all children of the `ARLocation` in the scene. When placing or updating child content of the `ARLocation`, make your changes in local transform space to make sure the scene stays consistent. ## Testing Real-World AR Content The most accurate way to test real-world AR content is by building your Unity app to a device and physically visiting the location to test it out. Because this is not always possible, NSDK also provides a Simulation subsystem for Location AR. To enable Simulation, see the [Simulation documentation](https://www.nianticspatial.com/docs/nsdk/how-to/unity/simulation_mocking/) Simulated persistent anchors will have a consistent **trackableId**, but these **trackableIds** are not consistent with resolving real anchors (Playback or Live VPS). > **Tip:** > > You can also test localizations using Playback. See [How to Setup Playback](https://www.nianticspatial.com/docs/nsdk/how-to/playback/setting_up_playback/). ## More Information - [Creating Location AR Experiences with VPS](https://www.nianticspatial.com/docs/nsdk/features/lightship_vps/) - [Using ARLocationManager in Code](https://www.nianticspatial.com/docs/nsdk/how-to/vps/location_ar_code/)