Текст в Unity

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

Как получить резкий и красивый текст
Размытый текст по умолчанию в Unity

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

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

Работа со шрифтами в Unity
3D-текст (сетка текста) по умолчанию в Unity занимает одну единицу Unity, которая составляет 1 метр


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

Масштабирование значений для 3D-текста и текста пользовательского интерфейса Unity
Масштабирование значений для 3D-текста и текста пользовательского интерфейса Unity


Сетка 3D-текста Unity с оптимизированными значениями
Сетка 3D-текста Unity с оптимизированными значениями


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

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


Примечание

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

Работа с Text Mesh Pro

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

Масштабирование значений для текста и пользовательского интерфейса Unity 3D
Масштабирование значений для текста и пользовательского интерфейса Unity 3D

Как и следовало ожидать, размеры типов, которые мы используем на пк или планшете (обычно от 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 пт с коэффициентом масштабирования, представленным выше.

Содержимое ближнего и дальнего диапазонов взаимодействияв ближнем и дальнем диапазоне взаимодействия

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

Расстояние Угол обзора Высота текста Размер шрифта
45 см (расстояние прямой манипуляции) 0.4°-0.5° 3,14–3,9 мм 8.9–11.13pt
2 м 0.35°-0.4° 12,21–13,97 мм 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 пт

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

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

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

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

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

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

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

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

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

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

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

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

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

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