Проектирование для смешанной реальностиDesigning for Mixed Reality

Создайте приложение, которое хорошо выглядит в смешанной реальности, и воспользуйтесь преимуществами новых методов ввода.Design your app to look good in Mixed Reality, and take advantage of new input methods.

ОбзорOverview

Смешанная реальность — это результат смешивания физического мира с цифровым миром.Mixed Reality is the result of blending the physical world with the digital world. На одном конце спектра смешанной реальности находятся такие устройства, как HoloLens (устройство, сочетающее созданное компьютером содержимое с реальным миром), а на другом — полностью иммерсивный режим виртуальной реальности (доступный при использовании гарнитуры смешанной реальности).The spectrum of mixed reality experiences includes at one extreme devices such as the HoloLens (a device that mixes computer generated content with the real world), and at the other a completely immersive view of Virtual Reality (as viewed with a Windows Mixed Reality headset). Ознакомьтесь с типами приложений смешанной реальности, чтобы увидеть примеры различных взаимодействий.See Types of mixed reality apps for examples of how experiences will vary.

Почти все существующие приложения UWP выполняются в среде смешанной реальности в качестве двухмерных приложений без изменений, однако взаимодействие с пользователем можно улучшить, выполнив некоторые рекомендации, представленные в этом разделе.Almost all existing UWP apps will run in the Mixed Reality environment as 2D apps with no changes, although the experience for the user can be improved by following some of the guidance in this topic.

Режим смешанной реальности

Как гарнитура HoloLens, так и гарнитура смешанной реальности поддерживают приложений, работающих на платформе UWP, в двух различных типах взаимодействия.Both the HoloLens and Windows Mixed Reality headsets support applications running on the UWP platform, and both support two distinct types of experience.

Двухмерное и иммерсивное взаимодействия2D vs. Immersive Experience

Иммерсивные приложения занимают все пространство видимого пользователю дисплея, размещая его в центре представления, созданного приложением.An immersive app takes over the entire display visible to the user, placing her at the center of a view created by the app. Например иммерсивная игра может поместить пользователя на поверхность другой планеты, а приложение, представляющее собой туристический путеводитель, может поместить его в обстановку южноамериканской деревни.For example, an immersive game might place the user on the surface of an alien planet, or a tour guide app might place the user in a South American village. Для создания иммерсивного приложения требуется трехмерная графика или захваченное стереографическое видео.Creating an immersive app requires 3D graphics or captured stereographic video. Иммерсивные приложения часто разрабатываются с помощью игровых движков сторонних производителей, таких как Unity или даже DirectX.Immersive apps are often developed using a 3rd party game engine such as Unity, or with DirectX.

При создании иммерсивного приложения следует посетить центр разработки Windows Mixed Reality для получения дополнительных сведений.If you are creating immersive apps, you should visit the Windows Mixed Reality Dev Center for more information.

Двухмерное приложение выполняется как традиционное плоское окно в представлении пользователя.A 2D app runs as a traditional flat window within the user's view. На устройстве HoloLens это означает, что представление закреплено на стене или в точке пространства гостиной или офиса пользователя в реальном мире.On the HoloLens, that means a view pinned to the wall or a point in space in the users own real-world living room or office. При использовании гарнитуры смешанной реальности приложение закреплено на стене в смешанной реальности в домашних условиях (иногда называемой Дом на обрыве).In a Windows Mixed Reality headset, the app is pinned to a wall in the mixed reality home (sometimes called the Cliff House).

Несколько приложений, работающих в смешанной реальности

Эти двухмерные приложения не занимают все пространство представления, а размещаются внутри него.These 2D apps do not take over the entire view: they are placed within it. В одной среде могут существовать сразу несколько двухмерных приложений.Multiple 2D apps can exist in the environment at once.

Далее в этом разделе рассматриваются вопросы разработки для двухмерного взаимодействия.The remainder of this topic discusses design considerations for the 2D experience.

Запуск двухмерных приложенийLaunching 2D apps

Меню "Пуск" смешанной реальности

Все приложения запускаются из меню "Пуск", а также существует возможность создания трехмерных объектов, выступающих в качестве средства запуска приложений.All apps are launched from the Start Menu, but it's also possible to create a 3D object to act as an app launcher. Посмотрите это видео для получения дополнительных сведений.See this video for details.

Обзор методов ввода для двухмерных приложенийThe 2D App Input Overview

На платформах HoloLens и Mixed Reality поддерживаются клавиатуры и мыши.Keyboards and mice are supported on both HoloLens and Mixed Reality platforms. Клавиатуру и мышь можно связать с HoloLens напрямую через Bluetooth.You can pair a keyboard and mouse directly with the HoloLens over Bluetooth. Приложения смешанной реальности поддерживают мыши и клавиатуры, подключенные к главному компьютеру.Mixed Reality apps support the mouse and keyboard connected to the host computer. Оба устройства могут быть полезными в ситуациях, когда необходима точность управления.Both may be useful in situations when a fine-level of control is necessary.

Также поддерживаются другие, более естественные методы ввода, которые могут быть особенно удобны, если пользователь не сидит за столом с реальной клавиатурой перед собой или когда требуется точное управление.Other, more natural, input methods are also supported, and these may be particularly useful when the user isn't sitting at a desk with a real keyboard in front of them, or when fine control is needed.

Без какого-либо дополнительного оборудования или кодирования приложения будет использовать взгляд — направление, в котором смотрит пользователь, — в качестве указателя мыши при работе с двухмерными приложениями.Without any extra hardware or coding, apps will use gaze - the vector your user is looking along - as a mouse pointer when working with 2D apps. Эта функция реализована таким образом, будто указатель мыши перемещается по определенной поверхности в виртуальной сцене.It is implemented as if a mouse pointer was hovering over something in the virtual scene.

При стандартном взаимодействии, когда пользователь смотрит на элемент управления в приложении, это приводит к выделению этого элемента.In a typical interaction, your user will look at a control in your app, causing it to highlight. Затем пользователь вызывает действие с помощью жеста (на устройстве HoloLens), контроллера или голосовой команды.The user will when trigger an action, using either a gesture (on the HoloLens), or a contoller or by giving a voice command. Если пользователь выбирает поле ввода текста, появляется программная клавиатура.If the user selects a text input field, the software keyboard will appear.

Всплывающая клавиатура в смешанной реальности

Важно отметить, что все варианты взаимодействия происходят автоматически без написания дополнительного кода с вашей стороны, как следствие выполнения приложения на платформе UWP.It's important to note that all these interactions will happen automatically with no extra coding on your part, as a consequence of running on the UWP platform. Входные данные от HoloLens и гарнитуры смешанной реальности будут передаваться двухмерному приложению в качестве сенсорного ввода.Input from the HoloLens and Mixed Reality headset will appear as touch input to the 2D app. Это означает, что многие приложения UWP будут выполняться в смешанной реальности по умолчанию и будут пригодными для использования.This means that many UWP apps will run and be usable in Mixed Reality, by default.

При этом с помощью некоторой дополнительной работы взаимодействие можно значительно улучшить.That said, with some extra work, the experience can be improved greatly. Например, голосовое управление может быть особенно эффективным.For example, voice control can be especially effective. Среды HoloLens и смешанной реальности поддерживают голосовые команды для запуска приложений и взаимодействия с ними, поэтому включения такой поддержки станет естественным расширением этого подхода.Both HoloLens and Mixed Reality environments support voice commands for launching and interacting with apps, and including voice support will appear as a natural extension of this approach. Дополнительные сведения о добавлении поддержки голосовых команд в ваше приложение UWP см. в разделе Речевые взаимодействия.See Speech interactions for more information on adding voice support to your UWP app.

Выбор верного контроллераSelecting the right controller

Контроллер движений Mixed Reality

Специально для использования в смешанной реальности было разработано несколько инновационных методов ввода, в частности:Several novel input methods have been designed especially for use with Mixed Reality, specifically:

Эти контроллеры обеспечивают естественное и точное взаимодействие с виртуальными объектами.These controllers make interacting with virtual objects seem natural and precise. Некоторые взаимодействия вы получаете без дополнительных затрат.Some of the interactions you get for free. Например, жест выбора HoloLens или нажатие клавиши или триггера Windows контроллера движения приведет к созданию ответного ввода, который вы ожидаете, опять же, без написания кода для вашей части.For example, the HoloLens select gesture or clicking on the Motion Controller's Windows key or trigger will generate the input response you would expect, again, with no coding on your part.

В других случаях потребуется добавить код, чтобы воспользоваться преимуществами дополнительной информации и входных данных, которые становятся доступными.At other times, you will want to add code to take advantage of the extra information and inputs that are made available. Например, контроллеры движений можно использовать для управления объектами с высоким уровнем точности, если вы написали код, который учитывает их положение и нажатия кнопок.For example, the Motion Controllers can be used to manipulate objects with a fine level of control, if you write code that takes their position and button presses into account.

Примечание

В целом, руководящий принцип состоит в том, чтобы всегда предоставлять пользователю максимально естественные и удобные методы ввода из возможных.In summary: the guiding principal should be to always provide the user with as natural and frictionless an input method as possible.

Аспекты проектирования двухмерных приложений: функции2D App Design considerations: Functionality

При создании приложения UWP, которое потенциально будет использоваться на платформе смешанной реальности, следует иметь в виду несколько аспектов.When creating a UWP app that will potentially be used on a Mixed Reality platform, there are several things to keep in mind.

  • Перетаскивание может не работать должным образом при использовании контроллеров движений, геймпадов или жестов.Drag and drop may not work well when used with Motion Controllers, gamepads or gestures. Если в вашем приложении активно используется перетаскивание, необходимо предоставить альтернативный способ поддержки этого действия, такой как отображение диалогового окна для подтверждения перемещения объектов в новое место.If your application depends heavily on drag and drop, you will need to provide an alternative method of supporting this action, such as presenting a dialog confirming if objects to be moved to a new location.

  • Учитывайте изменения звука.Be aware how sound changes. Если ваше приложение воспроизводит звуковые эффекты, источником звука будет казаться место закрепления вашего приложения в виртуальном мире.If your app generates sound effects, the source of the sound will appear to be your app's pinned location in the virtual world. По мере того, как пользователь удаляется от приложения, громкость звука будет уменьшаться.As the user moves away from the app, sound will diminish. Дополнительные сведения см. в статье Пространственный звук.See Spatial sound for more information.

  • Учитывайте поле зрения и предоставляйте возможности.Consider the field of view and provide affordances. Не все устройства предоставляют такое же большое поле зрения, как монитор компьютера.Not every device will provide as large a field of view as a computer monitor. Полные сведения см. в разделе Голографический кадр.See Holographic frame for complete details. Кроме того, пользователь может находиться на определенном расстоянии от работающего приложения.Furthermore, the user may be some distance away from a running app. То есть приложение может отображаться закрепленным на стене в другом месте мира (реального или виртуального).That is, the app may appear pinned to the wall at a different location in the world (real or virtual). Вашем приложению может потребоваться привлечь внимание пользователя или учесть, что не все представление отображается постоянно.Your app may need to get the users attention, or take into account that the entire view is not visible at all times. Доступны всплывающие уведомления, однако еще одним способом привлечь внимание пользователя может быть воспроизведение звукового или речевого оповещения.Toast notifications are available, but another way to get the user's attention might be to generate a sound or speech alert.

  • Двухмерное приложение автоматически получает панель приложения, которая позволяет пользователю перемещать и масштабировать приложение в виртуальной среде.A 2D app is automatically given an app bar to allow the user to move and scale them in the virtual environment. Размер представления можно изменять по вертикали или пропорционально.The views can be resized vertically, or resized maintaining the same aspect ratio.

Аспекты проектирования двухмерных приложений: взаимодействие с пользователем и пользовательский интерфейс2D app design considerations: UI/UX

  • Элементы управления XAML, которые реализуют систему проектирования Fluent Design, например представление навигации и эффекты, такие как акрил, особенно хорошо работают в двухмерных приложениях смешанной реальности.XAML controls which implement the Fluent Design System such as the Navigation view, and effects such as Acrylic all work especially well in 2D Mixed Reality apps.

  • Протестируйте размер текста и окон вашего приложение на устройстве смешанной реальности или по крайней мере в симуляторе имитаторе Windows Mixed Reality.Test your app's text and windows size in a Mixed Reality device, or at the very least in the Mixed Reality Simulator. Размер окна вашего приложения по умолчанию составляет 853×480 эффективных пикселей.Your app will have a default windows size of 853x480 effective pixels. Используйте более крупный размеры шрифтов (рекомендуется размер приблизительно 32 пункта) и ознакомьтесь с разделом Обновление существующих универсальных приложения для Hololens.Use larger font sizes (a point size of approximately 32 is recommended), and read Updating your existing universal app for Hololens. Подробно эта тема рассматривается в статье Оформление текста.The article Typography covers this topic in detail. При работе в Visual Studio доступен параметр редактора разработки XAML для двухмерных приложений для HoloLens 57", который обеспечивает представление с правильным масштабом и размерами.When working in Visual Studio, there is a XAML design editor setting for a 57" HoloLens 2D App which provides a view with the correct scale and dimensions.

Текст, отображаемый в приложениях смешанной реальности, должен быть крупным.

  • Ваш взгляд является мышью.Your gaze is your mouse. Когда пользователь смотрит на какой-либо объект, вызывается событие сенсорного наведения, поэтому при взгляд на объект может инициировать случайное появление всплывающего окна или другие нежелательные взаимодействия.When the user looks at something, it acts as a touch hover event, so simply looking at an object may trigger an inadvertent pop-up or other unwanted interaction. Может потребоваться определить, что приложение в данный момент работает в смешанной реальности, и изменить это поведение.You may need to detect if the app is currently running in Mixed Reality and change this behavior. См. раздел Поддержка среды выполнения ниже.See Runtime support, below.

  • Когда пользователь смотрит на определенный объект или указывает на него с помощью контроллера движения, вызывается событие сенсорного наведения.When a user gazes towards something or points with a motion controller, a touch hover event will occur. Оно состоит из PointerPoint где PointerTypeTouch, но IsInContact имеет значение false.This consists of a PointerPoint where PointerType is Touch, but IsInContact is false. При возникновении некоторой формы фиксации (например, при нажатии кнопки геймпада A, устройства Clicker, триггера контроллера движения, или при распознавания голосовой команды "Выбрать") вызывается событие сенсорное нажатие с PointerPoint, где значение IsInContact становятся true.When some form of commit occurs (for example, gamepad A button is pressed, a clicker device is pressed, a motion controller trigger pressed, or voice recognition heads "Select"), a touch press occurs, with the PointerPoint having IsInContact become true. Подробные сведения об этих событиях ввода см. в разделе Взаимодействие с помощью сенсорного ввода.See Touch interactions for more information on these input events.

  • Помните, что взгляд не обеспечивает такую же точность, как указатель мыши.Remember, gaze is not as accurate as mouse pointing. Маленькие элементы для взаимодействия с помощью мыши или кнопки могут привести к неудобству для пользователей, поэтому измените размер элементов управления соответствующим образом.Smaller mouse targets or buttons may cause frustration for your users, so resize controls accordingly. Если элементы управления предназначены для сенсорного ввода, они будут работать в смешанной реальности, но иногда целесообразно увеличить некоторые кнопки во время выполнения.If they are designed for touch, they will work in Mixed Reality, but you may decide to enlarge some buttons at runtime. См. раздел Обновление существующих универсальных приложений для Hololens.See Updating your existing universal app for Hololens.

  • HoloLens определяет черный цвет как отсутствие света.The HoloLens defines the color black as the absence of light. Он просто не отображается, а на этом месте показывается "реальный мир".It's simply not rendered, allowing the "real world" so show through. Не нужно использовать в приложение черный цвет, если это может привести к путанице.Your application should not use black if this is would cause confusion. При использовании гарнитуры смешанной реальности, черный цвет отображается как есть.In a Mixed Reality headset, black is black.

  • HoloLens не поддерживает цветовые темы в приложениях, и устанавливает по умолчанию синюю тему, чтобы обеспечить максимально удобство работы пользователей.The HoloLens does not support color themes in apps, and defaults to blue to ensure the best experience for users. Дополнительные советы по выбору доступны в этом разделе, где описывается использование цветов и материалов в проектах смешанной реальности.For more advice about selecting colors, you should consult this topic which discusses the use of color and material in Mixed Reality designs.

Прочие моменты, которые следует принять во вниманиеOther points to consider

  • Несмотря на то, что мост для классических приложений может помочь перенести существующих классические приложения (Win32) в Windows 10 и Microsoft Store, в настоящее время он не позволяет создавать приложения, работающие на устройствах HoloLens и в смешанной реальности.Although the Desktop Bridge can help bring existing (Win32) desktop apps to Windows 10 and the Microsoft Store, it cannot create apps that run on HoloLens or in Mixed Reality at this time.

Поддержка времени выполненияRuntime support

Ваше приложение может определить, работает ли оно на устройстве смешанной реальности во время выполнения, и использовать это как возможность изменить размер элементов управления или другими способами оптимизировать приложение для использования с помощью гарнитуры.It is possible for your app to determine if it is running on a Mixed Reality device at runtime, and use this as an opportunity to resize controls or in other ways optimize the app for use on a headset.

Вот небольшой код, который изменяет размер текста в элементе управления XAML TextBlock только в том случае, если приложение используется на устройстве смешанной реальности.Here's a short piece of code that resizes the text inside a XAML TextBlock control only if the app is being used on a Mixed Reality device.


bool isViewingInMR = Windows.ApplicationModel.Preview.Holographic.HolographicApplicationPreview.IsCurrentViewPresentedOnHolographicDisplay();

            if (isViewingInMR)
            {
                // Running on headset, resize the XAML text
                textBlock.Text = "I'm running in Mixed Reality!";
                textBlock.FontSize = 32;
            }
            else
            {
                // Running on desktop
                textBlock.Text = "I'm running on the desktop.";
                textBlock.FontSize = 14;
            }