Текст в Unity

Текст является одним из наиболее важных компонентов в голографических приложениях. Для отображения текста в Unity можно использовать три типа текстовых компонентов: текст пользовательского интерфейса, трехмерный текст Mesh и текстовый Mesh Pro. По умолчанию текст пользовательского интерфейса и трехмерный текст Mesh отображаются размытыми и слишком большими. Изменение нескольких переменных приводит к резкому повышению качества текста с управляемым размером в HoloLens. Вы можете добиться лучшего качества отрисовки, применяя коэффициент масштабирования, чтобы получить правильные измерения при использовании компонентов текста пользовательского интерфейса и трехмерного текста Mesh.

How to get sharp and beautiful text
Размытый текст по умолчанию в Unity

Работа с трехмерными текстами Unity (текстовые Mesh) и текстом пользовательского интерфейса

Unity предполагает, что все новые элементы, добавленные в сцену, имеют один размер единицы Unity или масштаб преобразования в 100 %. Одна единица Unity преобразуется примерно на 1 метр на HoloLens. Для шрифтов ограничивающий прямоугольник для трехмерного TextMesh по умолчанию имеет высоту около 1 метра.

Working with Fonts in Unity
По умолчанию 3D-текст (текстовый Mesh) занимает одну единицу Unity, которая составляет 1 метр


Большинство визуальных конструкторов используют точки для определения размеров шрифтов в реальном мире. Существует около 2835 (2834,64566639962) точек в 1 метре. Основываясь на преобразовании системы точек на 1 метр и тексте Unity по умолчанию Mesh размер шрифта 13, простая математика 13, разделенная на 2835, равна 0,0046 (0,00458611116), что обеспечивает хороший стандартный масштаб для начала (некоторые из них могут округить до 0,005). Масштабирование текстового объекта или контейнера до этих значений не только позволит преобразовывать шрифты размером 1:1 в программе разработки, но и стандарт, чтобы обеспечить согласованность во всем интерфейсе.

Scaling values for the Unity 3D Text and UI Text
Масштабирование значений для текста и текста пользовательского интерфейса Unity 3D


Unity 3D Text Mesh with optimized values
Unity 3D Text Mesh с оптимизированными значениями


При добавлении пользовательского интерфейса или текстового элемента на основе холста в сцену разница в размерах все еще больше. Различия в двух размерах составляет около 1000 %, что приведет к коэффициенту масштабирования для компонентов текста на основе пользовательского интерфейса до 0,00046 (0,000458611116, чтобы быть точным) или 0,0005 для округленного значения.

Unity UI Text with optimized values
Текст пользовательского интерфейса Unity с оптимизированными значениями


Примечание

Значение по умолчанию любого шрифта может повлиять на размер текстуры этого шрифта или способ импорта шрифта в Unity. Эти тесты были выполнены на основе шрифта Arial по умолчанию в Unity, а также другого импортированного шрифта.

Работа с текстовыми Mesh Pro

С помощью Mesh Pro текста Unity можно защитить качество отрисовки текста. Он поддерживает четкие контуры текста независимо от расстояния с помощью метода "Поле с подписанным расстоянием" (SDF). Используя тот же метод вычисления, который мы использовали выше для трехмерного текстового Mesh и текста пользовательского интерфейса, можно найти правильные значения масштабирования для использования с обычными типографическими точками. Так как шрифт трехмерного текста по умолчанию Mesh Pro размером 36 имеет ограничивающий размер 2,5 единиц Unity (2,5 м), можно использовать значение масштабирования 0,005, чтобы получить размер точки. Текстовый Mesh Pro в меню пользовательского интерфейса имеет размер по умолчанию в 25 единиц Unity (25 м). Это дает нам значение 0,0005 для масштабирования.

Scaling values for the Unity 3D Text and UI
Масштабирование значений для трехмерного текста и пользовательского интерфейса Unity

Как можно ожидать, размеры типов, которые мы используем на пк или планшетном устройстве (обычно от 12 до 32 пт), выглядят небольшими на расстоянии 2 метров. Это зависит от характеристик каждого шрифта, но в целом рекомендуемый минимальный угол просмотра и высота шрифта для удобочитаемости составляет около 0,35°-0,4°/12,21-13,97 мм на основе наших исследований пользователей. Это около 35-40 пт с коэффициентом масштабирования, представленным выше.

Для близкого взаимодействия в 0,45 м (45 см) минимальный угол просмотра читаемого шрифта и высота составляет 0,4°-0,5° / 3,14–3,9 мм. Это около 9-12 пт с коэффициентом масштабирования, представленным выше.

Near and far interaction rangeСодержимое в диапазоне близкого и дальнего взаимодействия

Минимальный размер удобочитаемого шрифта

Расстояние Угол просмотра Высота текста Размер шрифта
45 см (расстояние прямого манипулирования) 0.4°-0.5° 3.14–3.9mm 8.9–11.13pt
2 м 0.35°-0.4° 12.21–13.97mm 34.63-39.58 pt

Удобный удобочитаемый размер шрифта

Расстояние Угол просмотра Высота текста Размер шрифта
45 см (расстояние прямого манипулирования) 0.65°-0.8° 5.1-6,3 мм 14.47-17.8 pt
2 м 0.6°-0.75° 20,9-26,2 мм 59.4-74.2 pt

Пользовательский интерфейс Segoe (шрифт по умолчанию для Windows) хорошо работает в большинстве случаев. Тем не менее, избегайте использования легких или полусветных семейств шрифтов небольшого размера, так как тонкие вертикальные росчерки будут вибрировать, и это снизит удобочитаемость. Современные шрифты с достаточной толщиной росчерка хорошо работают. Например, Helvetica и Arial выглядят великолепно и являются удобочитаемыми в HoloLens с регулярными или смелыми весами.

Viewing AngleРасстояние просмотра, угол и высота текста

Текст с Смешанная реальность набор средств версии 2

Качество отрисовки резкого текста с правильным измерением

На основе этих факторов масштабирования мы создали префабы текста с помощью текста пользовательского интерфейса и трехмерного текста Mesh. Разработчики могут использовать эти префабы для получения резкого текста и согласованного размера шрифта.

Sharp text rendering quality with proper dimension
Качество отрисовки резкого текста с правильным измерением

Шейдер с поддержкой окклюзии

Материал шрифта по умолчанию Unity не поддерживает окклюзию. Из-за этого вы увидите текст за объектами по умолчанию. Мы включили простой шейдер, поддерживающий окклюзию. На рисунке ниже показан текст с материалом шрифта по умолчанию (слева) и текстом с правильным окклюзией (справа).

Shader with occlusion support
Шейдер с поддержкой окклюзии

Следующий этап разработки

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

Или перейдите к возможностям и API платформы смешанной реальности:

Вы можете в любой момент вернуться к этапам разработки для Unity.

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