全息应用中最重要的组件之一,你知道吗?

全息应用中最重要的组件之一,你知道吗?

本文内容

文本是全息应用程序中最重要的组件之一。 要在 Unity 中显示文本,可以使用三种类型的文本组件:UI Text、3D Text Mesh 和 Text Mesh Pro。 默认情况下,UI 文本和 3D 文本网格显得模糊且过大。 更改几个变量将在 HoloLens 中生成更清晰、质量更高且大小易于管理的文本。 使用 UI Text 和 3D Text Mesh 组件时,您可以通过应用缩放因子以获得合适的尺寸来获得更好的渲染质量。

How to get sharp and beautiful text

Unity 中的模糊默认文本

使用Unity的3D文字(Text Mesh)和UI文字

Unity 假定添加到场景中的所有新元素的大小都为一个 Unity 单位,或 100% 变换比例。 在 HoloLens 上,一个 Unity 单位相当于大约 1 米。 对于字体,3D Text Mesh 的边界框默认高约 1 米。

Working with Fonts in Unity

默认情况下,Unity 3D Text(Text Mesh)占用一个Unity单位,即1米

大多数视觉设计师使用点来定义现实世界中的字体大小。 1米范围内大约有2835(2,834.645666399962)个点。 根据点系统和 Unity 默认的 Text Mesh 字体大小 13 转换为 1 米,13 除以 2835 的简单数学等于 0.0046(准确地说是 0.6),这提供了一个很好的标准起始比率(有些人可能希望四舍五入为 0.005 ). 将文本对象或容器缩放到这些值不仅可以在设计器中实现字体大小的 1:1 转换,而且还为整个体验的一致性提供了一个标准。

Scaling values for the Unity 3D Text and UI Text

Unity 3D Text和UI Text的比例值

Unity 3D Text Mesh with optimized values

具有优化值的 Unity 3D 文本网格

在向场景中添加 UI 或基于画布的文本元素时,仍然存在较大的尺寸差异。 两种大小之间的差异约为 1000%,这将使基于 UI 的文本组件的比例因子为 0.00046(准确地说是 0.16)或四舍五入为 0.0005。

Unity UI Text with optimized values

具有优化值的 Unity UI 文本

注意

任何字体的默认值都会受到该字体的纹理大小或字体导入 Unity 的方式的影响。 这些测试是针对 Unity 中的默认 Arial 字体和另一种导入字体执行的。

使用 Text Mesh Pro

使用 Text Mesh Pro for Unity,您可以确保文本渲染质量。 它使用符号距离场 (SDF) 技术来支持清晰的文本轮廓,无论距离如何。 使用上面用于 3D Text Mesh 和 UI Text 的相同计算方法unity字体模糊,我们可以为传统打印的点找到合适的缩放值。 由于 36 号的默认 3D Text Mesh Pro 字体的边框大小为 2.5 个单位单位 (2.5 m),我们可以使用 0.005 的缩放值来获取磅值。 UI 菜单下的 Text Mesh Pro 默认边界大小为 25 个 Unity 单位(25 m)。 这为我们提供了 0.0005 的缩放值。

Scaling values for the Unity 3D Text and UI

Unity 3D文本和UI的比例值

推荐文字大小

正如您所料,我们在计算机或平板电脑上使用的字体大小(通常在 12-32 pt 之间)在 2 米的距离处看起来很小。 这取决于每种字体的特性,但根据我们的用户研究,通常推荐的最小清晰字体视角和高度约为 0.35°-0.4°/12.21-13.97 毫米。 使用上述比例因子时约为 35-40 pt。

对于 0.45 米(45 厘米)处的近距离交互,最小清晰字体角度和高度为 0.4°-0.5°/3.14-3.9 毫米。 使用上述比例因子时大约为 9-12 pt。

Near and far interaction range

近距离和远距离交互范围的内容

最小清晰字体大小距离视角文本高度字体大小

45 cm(直接控制距离)

0.4°-0.5°

3.14–3.9 毫米

8.9–11.13 分

2米

0.35°-0.4°

12.21–13.97mm

34.63-39.58pt

清晰的字体大小距离视角文本高度字体大小

45 cm(直接控制距离)

0.65°-0.8°

5.1-6.3 毫米

14.47-17.8 磅

2米

0.6°-0.75°

20.9-26.2 毫米

59.4-74.2pt

Segoe UI(Windows 的默认字体)在大多数情况下都能正常工作。 但是,请避免使用较小的浅色或半浅色字体系列,因为细的垂直笔划会产生振动并降低易读性。 具有足够笔划重量的现代字体效果很好。 例如,Helvetica 和 Arial 看起来很漂亮,并且在 HoloLens 上以常规或粗体字体清晰可辨。

Viewing Angle

查看距离、角度和文字高度

Mixed Reality Toolkit v2 的文本具有干净的文本渲染质量和适当的大小

基于这些比例因子unity字体模糊,我们创建了一个带有 UI 文本和 3D 文本网格的文本预制件。 开发人员可以使用这些预制件来获得清晰的文本和一致的字体大小。

Sharp text rendering quality with proper dimension

锐利的文本渲染质量和合适的大小

具有遮挡支持的着色器

Unity 的默认字体材质不支持遮挡。 因此,默认情况下游戏图片素材,您会看到对象后面的文本。 我们包含了一个支持遮挡的简单着色器。 下图显示了具有默认字体材料的文本(左)和具有适当底纹的文本(右)。

Shader with occlusion support

具有遮挡支持的着色器

下一个开发检查点

如果您遵循了我们计划的 Unity 开发之旅,那么您目前正在探索 MRTK 的核心构建块。 从这里开始3D场景,您可以继续学习基础知识的下一部分:

语音输入

或者跳转到混合现实平台功能和 API:

分享经验

您可以随时返回。