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

Примечание

Эта функция была добавлена в рамках 2017 Fall Creators Update (RS3) для иммерсивных гарнитур и поддерживается HoloLens с обновлением Windows 10 за апрель 2018 г. Убедитесь, что ваше приложение предназначено для версии Windows SDK, большей или равной 10.0.16299 на иммерсивных гарнитурах и 10.0.17125 на HoloLens. Последнюю версию Windows SDK можно найти здесь.

Windows Mixed Reality дома является отправной точкой, где пользователи приземлились перед запуском приложений. При создании приложения UWP для Windows Mixed Reality по умолчанию приложения запускаются в виде двухd-слотов с логотипом приложения. При разработке возможностей для Windows Mixed Reality при необходимости можно определить трехмерное средство запуска, чтобы переопределить стандартное двухмерное средство запуска для вашего приложения. Как правило, трехмерные средства запуска рекомендуются для запуска иммерсивных приложений, которые убирают пользователей из Windows Mixed Reality дома. Двухмерное средство запуска по умолчанию предпочтительнее при активации приложения на месте. Вы также можете создать трехмерную прямую ссылку (secondaryTile) в качестве средства запуска трехмерных данных к содержимому в 2D-приложении UWP.

Процесс создания средства запуска трехмерных приложений

Существует три шага для создания средства запуска трехмерных приложений:

  1. Проектирование и концепция
  2. Моделирование и экспорт
  3. Интеграция с приложением (эта статья)

Трехмерные ресурсы, используемые в качестве средств запуска приложения, должны создаваться с помощью Windows Mixed Reality рекомендаций по разработке для обеспечения совместимости. Ресурсы, которые не соответствуют этой спецификации разработки, не будут отображаться в Windows Mixed Reality домашней странице.

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

При создании нового проекта в Visual Studio создается простая стандартная плитка, которая отображает имя и логотип приложения. Чтобы заменить это двухмерное представление пользовательской трехмерной моделью, измените манифест приложения, включив элемент MixedRealityModel в определение плитки по умолчанию. Чтобы отменить изменения в двухмерное средство запуска, просто удалите определение MixedRealityModel из манифеста.

XML

Сначала найдите манифест пакета приложения в текущем проекте. По умолчанию манифест будет называться Package.appxmanifest. Если вы используете Visual Studio, щелкните правой кнопкой мыши манифест в средстве просмотра решений и выберите Просмотреть источник , чтобы открыть XML-файл для редактирования.

В верхней части манифеста добавьте схему uap5 и добавьте ее в качестве игнорируемого пространства имен:

<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">

Затем укажите MixedRealityModel в плитке по умолчанию для приложения:

<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>

Элемент MixedRealityModel принимает путь к файлу, указывающий на трехмерный ресурс, хранящийся в пакете приложения. В настоящее время поддерживаются только трехмерные модели, поставляемые в формате GLB и созданные в Windows Mixed Reality инструкции по созданию трехмерных ресурсов. Ресурсы должны храниться в пакете приложения, а анимация в настоящее время не поддерживается. Если оставить параметр Path пустым, вместо средства запуска 3D отобразится двухмерный сланец. Примечание. Перед сборкой и запуском приложения ресурс GLB должен быть помечен как "Содержимое" в параметрах сборки.

Выберите GLB-файл в обозревателе решений и используйте раздел свойств, чтобы пометить его как
Выберите GLB-файл в обозревателе решений и используйте раздел свойств, чтобы пометить его как "Содержимое" в параметрах сборки.

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

Ограничивающий прямоугольник можно использовать для дополнительного добавления дополнительной буферной области вокруг объекта. Ограничивающий прямоугольник указывается с помощью центральной точки и экстентов, которые указывают расстояние от центра ограничивающего прямоугольника до его краев вдоль каждой оси. Единицы измерения для ограничивающего прямоугольника можно сопоставить с 1 единицей = 1 метром. Если ограничивающий прямоугольник не указан, он автоматически устанавливается в сетку объекта . Если предоставленный ограничивающий прямоугольник меньше, чем модель, его размер будет изменен в соответствии с сеткой.

Поддержка атрибута ограничивающего прямоугольника будет поступать с обновлением Windows RS4 в качестве свойства в элементе MixedRealityModel. Чтобы сначала определить ограничивающий прямоугольник в верхней части манифеста приложения, добавьте схему uap6 и включите ее в качестве игнорируемых пространств имен:

<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">

Затем в MixedRealityModel задайте свойство SpatialBoundingBox, чтобы определить ограничивающий прямоугольник:

        <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>

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

При работе с Unity проект необходимо создать и открыть в Visual Studio, прежде чем можно будет изменить манифест приложения.

Примечание

При создании и развертывании нового решения Visual Studio из Unity необходимо переопределять средство запуска 3D в манифесте.

Примечание

Эта функция была добавлена в рамках 2017 Fall Creators Update (RS3) для иммерсивных гарнитур (VR) и в рамках обновления за апрель 2018 г. (RS4) для HoloLens. Убедитесь, что приложение предназначено для версии Windows SDK, большей или равной 10.0.16299 на иммерсивных гарнитурах (VR) и 10.0.17125 в HoloLens. Последнюю версию Windows SDK можно найти здесь.

Важно!

3D-прямые ссылки (secondaryTiles) работают только с 2D-приложениями UWP. Однако вы можете создать средство запуска трехмерных приложений, чтобы запустить эксклюзивное приложение из Windows Mixed Reality дома.

Трехмерные приложения можно улучшить для Windows Mixed Reality, добавив возможность размещать трехмерные модели из приложения в Windows Mixed Reality домашней странице в виде прямых ссылок на содержимое в двухd-приложении, как и вторичные плитки двухD в меню "Пуск" Windows. Например, можно создать фотосферы на 360 градусов, которые связываются непосредственно с приложением для просмотра фотографий на 360 градусов, или позволить пользователям размещать трехмерное содержимое из коллекции ресурсов, которая открывает страницу сведений об авторе. Это всего лишь несколько способов расширить функциональные возможности двухd-приложений с помощью трехмерного содержимого.

Создание трехмерного "secondaryTile"

Вы можете разместить трехмерное содержимое из приложения с помощью secondaryTiles, определив модель смешанной реальности во время создания. Модели смешанной реальности создаются путем ссылки на трехмерный ресурс в пакете приложения и при необходимости определения ограничивающего прямоугольника.

Примечание

Создание secondaryTiles из монопольного представления в настоящее время не поддерживается.

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();

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

Ограничивающий прямоугольник можно использовать для добавления дополнительной буферной области вокруг объекта. Ограничивающий прямоугольник указывается с помощью центральной точки и экстентов, которые указывают расстояние от центра ограничивающего прямоугольника до его краев вдоль каждой оси. Единицы измерения для ограничивающего прямоугольника можно сопоставить с 1 единицей = 1 метром. Если ограничивающий прямоугольник не указан, он будет автоматически установлен в сетку объекта. Если предоставленный ограничивающий прямоугольник меньше, чем модель, его размер будет изменен в соответствии с сеткой.

Поведение активации

Примечание

Эта функция будет поддерживаться после обновления Windows RS4. Если вы планируете использовать эту функцию, убедитесь, что ваше приложение предназначено для версии Windows SDK, большей или равной 10.0.17125.

Вы можете определить поведение активации для 3D secondaryTile, чтобы управлять тем, как он реагирует, когда пользователь выбирает его. Это можно использовать для размещения трехмерных объектов в Смешанная реальность дома, которые являются чисто информативными или декоративными. Поддерживаются следующие типы поведения активации:

  1. По умолчанию: когда пользователь выбирает трехмерный вторичный тип, приложение активируется.
  2. Нет: при выборе пользователем 3D secondaryTile ничего не происходит и приложение не активировано.

Получение и обновление существующего объекта secondaryTile

Разработчики могут получить список существующих вторичных плиток, который включает указанные ранее свойства. Они также могут обновить свойства, изменив значение и вызвав 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 Reality

Трехмерные прямые ссылки (secondaryTiles) можно создавать только при отображении представления в Windows Mixed Reality гарнитуре. Если представление не отображается в гарнитуре Windows Mixed Reality, рекомендуется корректно обрабатывать это, скрывая точку входа или отображая сообщение об ошибке. Вы можете проверка это, запросив IsCurrentViewPresentedOnHolographic().

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

Уведомления на плитках в настоящее время не поддерживают отправку обновления с помощью трехмерного ресурса. Это означает, что разработчики не могут выполнять следующие действия:

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

Дополнительные сведения о других функциях и атрибутах плиток и их использовании для двухd-плиток см. в документации по плиткам для приложений UWP.

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