Getting Started with Vuforia Engine for Windows 10 Development

This article explains how to start developing for Windows 10 with Vuforia Engine in both Unity and Visual Studio. Vuforia Engine supports the development of Universal Windows Platform (UWP) apps on select Intel and ARM based Windows 10 devices, including Microsoft Surface and HoloLens. The Engine SDK and Vuforia Samples use C# APIs for Unity development and C++ APIs for native development.

The Vuforia Engine Supported Versions page lists the operating systems and tools that are supported for developing apps with the Engine platform. Additional information about recommended devices can be found here. You can also use the Direct3D 12 programmable pipeline to create realtime 3D graphics for games as well as scientific and desktop applications.

For information about event logs generated by Vuforia Engine, refer to the Capturing and Viewing Event Logs with ETW article

Developing for Windows 10 in Unity

Before proceeding, familiarize yourself with the contents of the Getting Started with Vuforia Engine for Unity Development article. It contains information on installing Unity, activating Vuforia Engine within your project, and accessing Vuforia Engine features. 

When you build a UWP app in Unity, a Visual Studio project is generated and launched.  You can then build and run the project from Visual Studio. For information on packaging your app for all UWP devices, refer to the Getting Started with Windows UWP Apps article.

The HoloLens and Core samples, available in the Developer Portal or the Unity Asset Store, lay out the structure and organization of a Vuforia Windows 10 Unity project. The samples are complete Unity projects, including pre-configured scenes that implement Image Targets, Model Targets, and VuMarks. 

To gain a better understanding of how to develop for Windows 10 in Unity, start by performing the steps in the Working with the HoloLens Sample in Unity article.

Developing for Windows 10 in Visual Studio

This section explains how to set up the Vuforia Engine for UWP and the Vuforia Engine Sample in the latest supported Visual Studio version.

  1. Download the Vuforia Engine for UWP.
  2. Unpack the Vuforia Engine for UWP to a folder in your development environment.
  3. Download the Vuforia Engine Sample for UWP.
  4. Unpack the Vuforia Engine Sample for UWP in to the Samples folder located in the Vuforia Engine for UWP folder.
  5. In the extracted folder, open VuforiaSamples.sln  in the UWP  subfolder.
    The sample project loads in Visual Studio.

Building and Executing the Sample

  1. Use the License Manager to create a license key. Refer to the Vuforia License Manager article for more information.
  2. Add the license key to your project. Refer to the How to Add a License Key to Your Vuforia Engine App article for instructions. 
  1. In the Solution Platforms dropdown, select the correct platform for your target device.
  1. Build and run the sample.
    NOTE: If Visual Studio does not recognize the include path for the sample project, perform the following steps:
    1. In the Solution Explorer window, right-click the VuforiaSample project and select Properties.
    2. Expand the General menu.
    3. In the Include Directories field, add the path to the include directories.
  1.     Package your app for all UWP devices by following the instructions in the Packaging Universal Windows apps for Windows 10 article. 

Upon startup of the Vuforia Engine Sample app, a main menu is shown on your device, from which you can select between the Image Targets or Model Targets feature:

Select the Image Targets feature to get started.

You have successfully deployed your first application with Vuforia Engine!

Tap the screen once to trigger the camera to focus, or double-tap to go back to the main menu.

Modifying the Sample

Obtaining the Trackable State

The State object contains references to all current TrackableResults. You can obtain it from the Vuforia::StateUpdater, as shown in the prepareToRender() method in CrossPlatform/AppController.cpp.

mVuforiaState = Vuforia::TrackerManager::getInstance().getStateUpdater().updateState();

Querying Trackable Results

Once you have the State object, you can query the state of each TrackableResults to access its pose, determine its type, and obtain a reference to its associated Trackable instance.

This done in the getImageTargetResult method in CrossPlatform/AppController.cpp.

const auto& trackableResultList = mVuforiaState.getTrackableResults();
for (const auto* result : trackableResultList)
{
    if (result->isOfType(Vuforia::ImageTargetResult::getClassType()) && mTarget == IMAGE_TARGET_ID)
    {
        const Vuforia::ImageTargetResult* itResult = static_cast<const Vuforia::ImageTargetResult*>(result);
        const Vuforia::ImageTarget& target = itResult->getTrackable();
        …
    }
}