Реализация средств запуска трехмерных приложений (приложения UWP)Implement 3D app launchers (UWP apps)

Примечание

Эта функция была добавлена как часть обновления 2017 в RS3 (Creator) для впечатляющих головных телефонов и поддерживается в HoloLens с обновлением Windows 10 от апреля 2018.This feature was added as part of the 2017 Fall Creators Update (RS3) for immersive headsets and is supported by HoloLens with the Windows 10 April 2018 Update. Убедитесь, что приложение предназначено для версии Windows SDK больше или равно 10.0.16299 на впечатляющих гарнитурах и 10.0.17125 в HoloLens.Make sure your application is targeting a version of the Windows SDK greater than or equal to 10.0.16299 on immersive Headsets and 10.0.17125 on HoloLens. Последнюю Windows SDK можно найти здесь.You can find the latest Windows SDK here.

Главная страница Windows Mixed Reality — это отправная точка, в которой пользователи начинают работу перед запуском приложений.The Windows Mixed Reality home is the starting point where users land before launching applications. При создании приложения UWP для Windows Mixed Reality приложения по умолчанию запускаются в виде двумерных планшетов с логотипом своего приложения.When creating a UWP application for Windows Mixed Reality, by default, apps are launched as 2D slates with their app's logo. При разработке функций для Windows Mixed Reality при необходимости можно определить трехмерное средство запуска для переопределения 2D-запуска по умолчанию для приложения.When developing experiences for Windows Mixed Reality, a 3D launcher can optionally be defined to override the default 2D launcher for your application. Как правило, для запуска впечатляющих приложений, которые выводят пользователей из дома Windows Mixed Reality, рекомендуется использовать трехмерные запуски.In general, 3D launchers are recommended for launching immersive applications that take users out of the Windows Mixed Reality home. Если приложение активировано на месте, предпочтительнее использовать по умолчанию 2D Launcher.The default 2D launcher is preferred when the app is activated in place. Можно также создать трехмерную глубину ссылки (секондаритиле) в виде трехмерного модуля запуска для содержимого в ДВУХМЕРНОМ приложении UWP.You can also create a 3D deep link (secondaryTile) as a 3D launcher to content within a 2D UWP app.

процесс создания средства запуска приложений 3D3D app launcher creation process

Создание средства запуска 3D-приложений состоит из трех этапов.There are three steps to creating a 3D app launcher:

  1. Проектирование и концепцияDesigning and concepting
  2. Моделирование и экспортModeling and exporting
  3. Интеграция этого приложения в приложение (в этой статье)Integrating it into your application (this article)

Трехмерные ресурсы, которые будут использоваться в качестве запуска для приложения, должны быть созданы с использованием руководств по разработке Windows Mixed Reality для обеспечения совместимости.3D assets to be used as launchers for your application should be authored using the Windows Mixed Reality authoring guidelines to ensure compatibility. Активы, которые не соответствуют этой спецификации разработки, не будут подготавливаться к просмотру на домашней странице Windows Mixed Reality.Assets that fail to meet this authoring specification won't be rendered in the Windows Mixed Reality home.

Настройка средства запуска 3DConfiguring the 3D launcher

При создании нового проекта в Visual Studio создается простая стандартная плитка, которая отображает имя и логотип приложения.When you create a new project in Visual Studio, it creates a simple default tile that displays your app's name and logo. Чтобы заменить это 2D-представление на настраиваемую трехмерную модель, измените манифест приложения, включив в него элемент "Микседреалитимодел" в определении плитки по умолчанию.To replace this 2D representation with a custom 3D model edit the app manifest of your application to include the “MixedRealityModel” element as part of your default tile definition. Чтобы вернуться к 2D-средству запуска, просто удалите определение Микседреалитимодел из манифеста.To revert to the 2D launcher just remove the MixedRealityModel definition from the manifest.

XMLXML

Сначала необходимо указать манифест пакета приложения в текущем проекте.First, locate the app package manifest in your current project. По умолчанию манифест будет называться Package. appxmanifest.By default, the manifest will be named Package.appxmanifest. Если вы используете Visual Studio, щелкните правой кнопкой мыши манифест в средстве просмотра решения и выберите Просмотреть источник , чтобы открыть XML-файл для редактирования.If you're using Visual Studio, then right-click the manifest in your solution viewer and select View source to open the xml for editing.

В верхней части манифеста Добавьте схему uap5 и включите ее как игнорируемое пространство имен:At the top of the manifest, add the uap5 schema and include it as an ignorable namespace:

<Package xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" 
         xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" 
         xmlns:uap2="http://schemas.microsoft.com/appx/manifest/uap/windows10/2" 
         xmlns:uap5="http://schemas.microsoft.com/appx/manifest/uap/windows10/5"
         IgnorableNamespaces="uap uap2 uap5 mp"
         xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10">

Затем укажите "Микседреалитимодел" в плитке по умолчанию для приложения:Next specify the "MixedRealityModel" in the default tile for your application:

<Applications>
    <Application Id="App"
      Executable="$targetnametoken$.exe"
      EntryPoint="ExampleApp.App">
      <uap:VisualElements
        DisplayName="ExampleApp"
        Square150x150Logo="Assets\Logo.png"
        Square44x44Logo="Assets\SmallLogo.png"
        Description="ExampleApp"
        BackgroundColor="#464646">
        <uap:DefaultTile Wide310x150Logo="Assets\WideLogo.png" >
          <uap5:MixedRealityModel Path="Assets\My3DTile.glb" />
        </uap:DefaultTile>
        <uap:SplashScreen Image="Assets\SplashScreen.png" />
      </uap:VisualElements>
    </Application>
</Applications>

Элемент Микседреалитимодел принимает путь к файлу, указывающий на трехмерный ресурс, хранящийся в пакете приложения.The MixedRealityModel element accepts a file path pointing to a 3D asset stored in your app package. Сейчас поддерживаются только объемные модели, доставляемые с помощью формата файла GLBA и созданные в соответствии с инструкциями по созданию трехмерных ресурсов Windows Mixed Reality .Currently only 3D models delivered using the .glb file format and authored against the Windows Mixed Reality 3D asset authoring instructions are supported. Ресурсы должны храниться в пакете приложения, и анимация в настоящее время не поддерживается.Assets must be stored in the app package and animation isn't currently supported. Если параметр "Path" оставлен пустым, то вместо 3D-запуска будет отображаться 2D.If the “Path” parameter is left blank Windows will show the 2D slate instead of the 3D launcher. Примечание . ресурс. GLBA должен быть помечен как "Content" в параметрах сборки перед сборкой и запуском приложения.Note: the .glb asset must be marked as "Content" in your build settings before building and running your app.

Выберите GLBA в обозревателе решений и в разделе "Свойства" пометьте его как "содержимое" в параметрах сборки.Select the .glb in your solution explorer and use the properties section to mark it as "Content" in the build settings
Выберите GLBA в обозревателе решений и в разделе "Свойства" пометьте его как "содержимое" в параметрах сборки.Select the .glb in your solution explorer and use the properties section to mark it as "Content" in the build settings

Ограничивающий прямоугольникBounding box

Ограничивающий прямоугольник можно использовать для добавления дополнительной области буфера вокруг объекта.A bounding box can be used to optionally add an extra buffer region around the object. Ограничивающий прямоугольник задается с помощью центральной точки и экстентов, которые указывают расстояние от центра ограничивающего прямоугольника до его границ вдоль каждой оси.The bounding box is specified using a center point and extents, which indicate the distance from the center of the bounding box to its edges along each axis. Единицы для ограничивающего прямоугольника можно сопоставить с 1 единицей измерения.Units for the bounding box can be mapped to 1 unit = 1 meter. Если ограничивающий прямоугольник не указан, он будет автоматически размещается в сетке объекта.If a bounding box isn't provided, then one will be automatically fitted to the mesh of the object. Если предоставленный ограничивающий прямоугольник меньше, чем модель, размер будет изменен в соответствии с сеткой.If the provided bounding box is smaller than the model, then it will be resized to fit the mesh.

Поддержка атрибута ограничивающего прямоугольника поступает вместе с обновлением Windows RS4 в качестве свойства элемента Микседреалитимодел.Support for the bounding box attribute will come with the Windows RS4 update as a property on the MixedRealityModel element. Чтобы сначала определить ограничивающий прямоугольник в верхней части манифеста приложения, добавьте схему uap6 и включите ее как игнорируемые пространства имен:To define a bounding box first at the top of the app manifest add the uap6 schema and include it as ignorable namespaces:

<Package xmlns:mp="http://schemas.microsoft.com/appx/2014/phone/manifest" 
         xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" 
         xmlns:uap2="http://schemas.microsoft.com/appx/manifest/uap/windows10/2" 
         xmlns:uap5="http://schemas.microsoft.com/appx/manifest/uap/windows10/5"
         xmlns:uap6="http://schemas.microsoft.com/appx/manifest/uap/windows10/6"
         IgnorableNamespaces="uap uap2 uap5 uap6 mp"
         xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10">

Затем на Микседреалитимодел задайте свойство Спатиалбаундингбокс, чтобы определить ограничивающий прямоугольник:Next, on the MixedRealityModel set the SpatialBoundingBox property to define the bounding box:

        <uap:DefaultTile Wide310x150Logo="Assets\WideLogo.png" >
          <uap5:MixedRealityModel Path="Assets\My3DTile.glb">
              <uap6:SpatialBoundingBox  Center=”1,-2,3” Extents=”1,2,3” />
          </uap5:MixedRealityModel>
        </uap:DefaultTile>

Использование UnityUsing Unity

При работе с Unity проект должен быть создан и открыт в Visual Studio, прежде чем можно будет изменить манифест приложения.When working with Unity the project must be built and opened in Visual Studio before the App Manifest can be edited.

Примечание

При создании и развертывании нового решения Visual Studio из Unity необходимо переопределить трехмерное средство запуска в манифесте.The 3D launcher must be redefined in the manifest when building and deploying a new Visual Studio solution from Unity.

Примечание

Эта функция была добавлена в составе обновления 2017 (RS3) для "иммерсивное" (VR), а также в рамках обновления за Апрель 2018 (RS4) для HoloLens.This feature was added as part of the 2017 Fall Creators Update (RS3) for immersive (VR) headsets and as part of the April 2018 Update (RS4) for HoloLens. Убедитесь, что приложение предназначено для версии Windows SDK больше или равно 10.0.16299 на наушниках (VR) и 10.0.17125 на HoloLens.Make sure your application is targeting a version of the Windows SDK greater than or equal to 10.0.16299 on immersive (VR) headsets and 10.0.17125 on HoloLens. Последнюю Windows SDK можно найти здесь.You can find the latest Windows SDK here.

Важно!

Трехмерные глубокие ссылки (secondaryTiles) работают только с 2D-приложениями UWP.3D deep links (secondaryTiles) only work with 2D UWP apps. Однако можно создать средство запуска для 3D-приложения , чтобы запустить эксклюзивное приложение из домашней страницы Windows Mixed Reality.You can, however, create a 3D app launcher to launch an exclusive app from the Windows Mixed Reality home.

Вы можете улучшить приложения для Windows Mixed Reality, добавив возможность размещения трехмерных моделей из приложения на домашней странице Windows Mixed Reality в качестве глубоких ссылок на содержимое в двухмерном приложении, так же, как 2D-вторичные плитки в меню "Пуск" Windows.Your 2D applications can be enhanced for Windows Mixed Reality by adding the ability to place 3D models from your app into the Windows Mixed Reality home as deep links to content within your 2D app, just like 2D secondary tiles on the Windows Start menu. Например, можно создать 360 °, которые непосредственно связываются с приложением 360 ° Photo Viewer, или позволить пользователям размещать трехмерное содержимое из коллекции ресурсов, открывающей страницу сведений об авторе.For example, you can create 360° photospheres that link directly into a 360° photo viewer app, or let users place 3D content from a collection of assets that opens a details page about the author. Это всего лишь два способа расширить функциональные возможности 2D-приложения с помощью трехмерного содержимого.These are just a couple ways to expand the functionality of your 2D application with 3D content.

Создание трехмерного "Секондаритиле"Creating a 3D “secondaryTile”

Вы можете поместить трехмерное содержимое из приложения, используя "secondaryTiles", определив модель смешанной реальности во время создания.You can place 3D content from your application using “secondaryTiles” by defining a mixed reality model at creation time. Модели смешанной реальности создаются путем ссылки на трехмерный ресурс в пакете приложения и при необходимости определения ограничивающего прямоугольника.Mixed reality models are created by referencing a 3D asset in your app package and optionally defining a bounding box.

Примечание

Создание "secondaryTiles" из монопольного представления в настоящее время не поддерживается.Creating “secondaryTiles” from within an exclusive view is not currently supported.

using Windows.UI.StartScreen;
using Windows.Foundation.Numerics;
using Windows.Perception.Spatial;

// Initialize the tile
SecondaryTile tile = new SecondaryTile("myTileId")
{
    DisplayName = "My Tile",
    Arguments = "myArgs"
};

tile.VisualElements.Square150x150Logo = new Uri("ms-appx:///Assets/MyTile/Square150x150Logo.png");

//Assign 3D model (only ms-appx and ms-appdata are allowed)
TileMixedRealityModel model = tile.VisualElements.MixedRealityModel;
model.Uri = new Uri("ms-appx:///Assets/MyTile/MixedRealityModel.glb");
model.ActivationBehavior = TileMixedRealityModelActivationBehavior.Default;
model.BoundingBox = new SpatialBoundingBox
{
    Center = new Vector3 { X = 1, Y = 0, Z = 0 },
    Extents = new Vector3 { X = 3, Y = 5, Z = 4 }
};

// And place it
await tile.RequestCreateAsync();

Ограничивающий прямоугольникBounding box

Ограничивающий прямоугольник можно использовать для добавления дополнительной области буфера вокруг объекта.A bounding box can be used to add an extra buffer region around the object. Ограничивающий прямоугольник задается с помощью центральной точки и экстентов, которые указывают расстояние от центра ограничивающего прямоугольника до его границ вдоль каждой оси.The bounding box is specified using a center point and extents, which indicate the distance from the center of the bounding box to its edges along each axis. Единицы для ограничивающего прямоугольника можно сопоставить с 1 единицей измерения.Units for the bounding box can be mapped to 1 unit = 1 meter. Если ограничивающий прямоугольник не указан, он будет автоматически размещается в сетке объекта.If a bounding box isn't provided, one will be automatically fitted to the mesh of the object. Если предоставленный ограничивающий прямоугольник меньше, чем модель, размер будет изменен в соответствии с сеткой.If the provided bounding box is smaller than the model, it will be resized to fit the mesh.

Поведение при активацииActivation behavior

Примечание

Эта функция будет поддерживаться в рамках обновления Windows RS4.This feature will be supported as of the Windows RS4 update. Убедитесь, что приложение предназначено для версии Windows SDK больше или равно 10.0.17125, если вы планируете использовать эту функциюMake sure your application is targeting a version of the Windows SDK greater than or equal to 10.0.17125 if you plan to use this feature

Вы можете определить поведение при активации трехмерного Секондаритиле, чтобы управлять тем, как оно будет реагировать, когда пользователь выберет его.You can define the activation behavior for a 3D secondaryTile to control how it reacts when a user selects it. Это можно использовать для размещения трехмерных объектов на домашней странице Mixed Reality, которые являются исключительно информативными или декоративными.This can be used to place 3D objects in the Mixed Reality home that are purely informative or decorative. Поддерживаются следующие типы поведения активации:The following activation behavior types are supported:

  1. По умолчанию: когда пользователь выбирает 3D-Секондаритиле, что приложение активируетсяDefault: When a user selects the 3D secondaryTile the app is activated
  2. Нет: при выборе пользователем 3D Секондаритиле ничего не происходит, и приложение не активируется.None: When the user selects the 3D secondaryTile nothing happens and the app isn't activated.

Получение и обновление существующего "Секондаритиле"Obtaining and updating an existing “secondaryTile”

Разработчики могут вернуть список существующих вторичных плиток, включающих ранее указанные свойства.Developers can get back a list of their existing secondary tiles, which includes the properties that they previously specified. Они также могут обновлять свойства, изменяя значение и вызывая UpdateAsync ().They can also update the properties by changing the value and then calling UpdateAsync().

// Grab the existing secondary tile
SecondaryTile tile = (await SecondaryTile.FindAllAsync()).First();

Uri updatedUri = new Uri("ms-appdata:///local/MixedRealityUpdated.glb");

// See if the model needs updating
if (!tile.VisualElements.MixedRealityModel.Uri.Equals(updatedUri))
{
    // Update it
    tile.VisualElements.MixedRealityModel.Uri = updatedUri;

    // And apply the changes
    await tile.UpdateAsync();
}

Проверка того, что пользователь находится в Windows Mixed RealityChecking that the user is in Windows Mixed Reality

Трехмерные ссылки (secondaryTiles) можно создавать только тогда, когда представление отображается на гарнитуре Windows Mixed Reality.3D deep links (secondaryTiles) can only be created while the view is being displayed in a Windows Mixed Reality headset. Если представление не представлено на гарнитуре Windows Mixed Reality, рекомендуется правильно его обработать, либо скрыть точку входа, либо Показать сообщение об ошибке.When your view isn't being presented in a Windows Mixed Reality headset, we recommend gracefully handling this by either hiding the entry point or showing an error message. Это можно проверить, выполнив запрос к искуррентвиевпресентедонхолографик ().You can check this by querying IsCurrentViewPresentedOnHolographic().

Уведомления на плиткахTile notifications

Уведомления плитки сейчас не поддерживают отправку обновлений в 3D-ресурс.Tile notifications don't currently support sending an update with a 3D asset. Это означает, что разработчики не могут выполнять следующие действия:This means that developers can't do the following:

  • Push-уведомленияPush Notifications
  • Периодическое опросPeriodic Polling
  • Запланированные уведомленияScheduled Notifications

Дополнительные сведения о функциях и атрибутах других плиток, а также о том, как они используются для двумерных плиток, см. в документации по плитке для приложений UWP.For more information on the other tiles features and attributes and how they're used for 2D tiles, see the Tiles for UWP Apps documentation.

См. также разделSee also