Testo in UnityText in Unity

Il testo è uno dei componenti più importanti nelle app olografiche.Text is one of the most important components in holographic apps. Per visualizzare il testo in Unity, sono disponibili tre tipi di componenti di testo che è possibile usare: testo dell'interfaccia utente, mesh di testo 3D e testo mesh Pro.To display text in Unity, there are three types of text components you can use—UI Text, 3D Text Mesh, and Text Mesh Pro. Per impostazione predefinita, il testo dell'interfaccia utente e la mesh del testo 3D appaiono sfocate e sono troppo grandi.By default, UI Text and 3D Text Mesh appear blurry and are too large. La modifica di alcune variabili comporta un testo più nitido e di qualità superiore con dimensioni gestibili in HoloLens.Changing a few variables results in sharper, higher-quality text with a manageable size in HoloLens. È possibile ottenere una migliore qualità di rendering applicando un fattore di scalabilità per ottenere dimensioni appropriate quando si usa il testo dell'interfaccia utente e i componenti mesh di testo 3D.You can achieve better rendering quality by applying a scaling factor to get proper dimensions when using the UI Text and 3D Text Mesh components.

Come ottenere testo nitido e belloHow to get sharp and beautiful text
Testo predefinito sfuocato in UnityBlurry default text in Unity

Uso del testo 3D di Unity (mesh di testo) e del testo dell'interfaccia utenteWorking with Unity's 3D Text (Text Mesh) and UI Text

Unity presuppone che tutti i nuovi elementi aggiunti a una scena siano un'unità di unità di misura o una scala di trasformazione del 100%.Unity assumes all new elements added to a scene are one Unity Unit in size, or 100% transform scale. Un'unità Unity si traduce in circa 1 contatore in HoloLens.One Unity unit translates to about 1 meter on HoloLens. Per i tipi di carattere, il rettangolo di delimitazione di un TextMesh 3D viene visualizzato per impostazione predefinita a circa 1 metro in altezza.For fonts, the bounding box for a 3D TextMesh comes in by default at about 1 meter in height.

Uso dei tipi di carattere in UnityWorking with Fonts in Unity
Il testo 3D di Unity predefinito (rete di testo) occupa un'unità Unity, ovvero 1 contatoreDefault Unity 3D Text (Text Mesh) occupies one Unity Unit, which is 1 meter


La maggior parte delle finestre di progettazione visiva utilizza punti per definire le dimensioni dei caratteri nel mondo reale.Most visual designers use points to define font sizes in the real world. Sono presenti circa 2835 (834.645666399962) punti in 1 contatore.There are about 2835 (2,834.645666399962) points in 1 meter. In base alla conversione del sistema del punto in 1 misuratore e le dimensioni del carattere della mesh di testo predefinite di Unity di 13, la matematica semplice di 13 divisa per 2835 equivale a 0,0046 (0.004586111116), che fornisce una scala standard corretta per iniziare (alcune potrebbero voler arrotondare a 0,005).Based on the point system conversion to 1 meter and Unity's default Text Mesh font size of 13, the simple math of 13 divided by 2835 equals 0.0046 (0.004586111116 to be exact) which provides a good standard scale to start with (some may wish to round to 0.005). Il ridimensionamento dell'oggetto o del contenitore di testo a questi valori non consentirà solo la conversione 1:1 delle dimensioni dei tipi di carattere in un programma di progettazione, ma fornisce anche uno standard che consente di mantenere la coerenza nell'intera esperienza.Scaling the text object or container to these values will not only allow for the 1:1 conversion of font sizes in a design program, but also provides a standard so you can maintain consistency throughout your experience.

Ridimensionamento dei valori per il testo 3D Unity e il testo dell'interfaccia utenteScaling values for the Unity 3D Text and UI Text
Ridimensionamento dei valori per il testo 3D Unity e il testo dell'interfaccia utenteScaling values for the Unity 3D Text and UI Text


Mesh di testo 3D Unity con valori ottimizzatiUnity 3D Text Mesh with optimized values
Mesh di testo 3D Unity con valori ottimizzatiUnity 3D Text Mesh with optimized values


Quando si aggiunge un'interfaccia utente o un elemento di testo basato su Canvas a una scena, la disparità delle dimensioni è ancora maggiore.When adding a UI or canvas-based text element to a scene, the size disparity is greater still. Le differenze nelle due dimensioni sono pari al 1000%, che porterebbe il fattore di scala per i componenti di testo basati su interfaccia utente a 0,00046 (0.0004586111116) o 0,0005 per il valore arrotondato.The differences in the two sizes are about 1000%, which would bring the scale factor for UI-based text components to 0.00046 (0.0004586111116 to be exact) or 0.0005 for the rounded value.

Testo dell'interfaccia utente Unity con valori ottimizzatiUnity UI Text with optimized values
Testo dell'interfaccia utente Unity con valori ottimizzatiUnity UI Text with optimized values


Nota

Il valore predefinito di qualsiasi tipo di carattere può essere influenzato dalla dimensione della trama del tipo di carattere o dalla modalità di importazione del tipo di carattere in Unity.The default value of any font may be affected by the texture size of that font or how the font was imported into Unity. Questi test sono stati eseguiti in base al tipo di carattere Arial predefinito in Unity, oltre a un altro tipo di carattere importato.These tests were performed based on the default Arial font in Unity, as well as one other imported font.

Uso di Text mesh ProWorking with Text Mesh Pro

Con la funzionalità text mesh di Unity Pro, è possibile proteggere la qualità del rendering del testo.With Unity's Text Mesh Pro, you can secure the text rendering quality. Supporta la delineatura di testo croccante indipendentemente dalla distanza utilizzando la tecnica SDF (signed distance Field) .It supports crisp text outlines regardless of the distance using the Signed Distance Field (SDF) technique. Usando lo stesso metodo di calcolo usato in precedenza per la mesh di testo 3D e il testo dell'interfaccia utente, è possibile trovare i valori di ridimensionamento appropriati da usare con i punti tipografici convenzionali.Using the same calculation method that we used above for the 3D Text Mesh and UI Text, we can find the proper scaling values to use with conventional typographic points. Poiché il tipo di carattere 3D di mesh Pro predefinito con dimensioni pari a 36 ha una dimensione di delimitazione di 2,5 unità Unity (2,5 m), è possibile usare un valore di ridimensionamento pari a 0,005 per ottenere la dimensione del punto.Since the default 3D Text Mesh Pro font with the size of 36 has a bounding size of 2.5 Unity units (2.5 m), we can use a scaling value of 0.005 to get the point size. Il testo Pro mesh nel menu dell'interfaccia utente ha una dimensione di delimitazione predefinita di 25 unità Unity (25 m).The Text Mesh Pro under the UI menu has a default bounding size of 25 Unity units (25 m). In questo modo si ottiene 0,0005 per il valore di scalabilità.This gives us 0.0005 for the scaling value.

Ridimensionamento dei valori per il testo 3D e l'interfaccia utente di UnityScaling values for the Unity 3D Text and UI
Ridimensionamento dei valori per il testo 3D e l'interfaccia utente di UnityScaling values for the Unity 3D Text and UI

Come si può immaginare, i tipi di dimensioni usati in un PC o un Tablet (in genere tra 12-32pt) sono piccoli a una distanza di 2 metri.As you can expect, type sizes that we use on a PC or a tablet device (typically between 12–32pt) look small at a distance of 2 meters. Dipende dalle caratteristiche di ogni tipo di carattere, ma in generale l'angolo di visualizzazione minimo consigliato e l'altezza del tipo di carattere per la leggibilità sono circa 0,35 °-0,4 °/12.21-13.97 mm in base agli studi di ricerca degli utenti.It depends on the characteristics of each font, but in general the recommended minimum viewing angle and the font height for legibility are around 0.35°-0.4°/12.21-13.97 mm based on our user research studies. È circa 35-40 PT con il fattore di scala introdotto in precedenza.It's about 35-40 pt with the scaling factor introduced above.

Per l'interazione near a 0,45 m (45 cm), l'angolo di visualizzazione del tipo di carattere leggibile minimo e l'altezza sono 0.4 °-0,5 °/3.14 – 3,9 mm.For the near interaction at 0.45 m (45 cm), the minimum legible font's viewing angle and the height are 0.4°-0.5° / 3.14–3.9mm. È circa 9-12 PT con il fattore di scala introdotto in precedenza.It's about 9-12 pt with the scaling factor introduced above.

Contenuto dell'intervallo di interazione near-and-distante nell'intervallo di interazione near and lontanoNear and far interaction range Content at near and far interaction range

Dimensioni minime del carattere leggibiliThe minimum legible font size

DistanzaDistance Angolo di visualizzazioneViewing angle Altezza testoText height Dimensioni del carattereFont size
45 cm (distanza di manipolazione diretta)45 cm (direct manipulation distance) 0.4 °-0,5 °0.4°-0.5° 3.14 – 3,9 mm3.14–3.9mm 8,9 – 11.13 PT8.9–11.13pt
2 m2 m 0,35 °-0,4 °0.35°-0.4° 12.21 – 13.97 mm12.21–13.97mm 34.63-39.58 PT34.63-39.58 pt

Dimensioni del carattere facilmente leggibiliThe comfortably legible font size

DistanzaDistance Angolo di visualizzazioneViewing angle Altezza testoText height Dimensioni del carattereFont size
45 cm (distanza di manipolazione diretta)45 cm (direct manipulation distance) 0,65 °-0,8 °0.65°-0.8° 5.1-6,3 mm5.1-6.3 mm 14.47-17,8 PT14.47-17.8 pt
2 m2 m 0.6 °-0,75 °0.6°-0.75° 20,9-26.2 mm20.9-26.2 mm 59.4-74.2 PT59.4-74.2 pt

Segoe UI (il tipo di carattere predefinito per Windows) funziona correttamente nella maggior parte dei casi.Segoe UI (the default font for Windows) works well in most cases. Tuttavia, evitare di usare famiglie di caratteri chiaro o semichiaro in piccole dimensioni poiché i tratti verticali sottili vibrano e diminuiscono la leggibilità.However, avoid using light or semi light font families in small size since thin vertical strokes will vibrate and it will degrade the legibility. I tipi di carattere moderni con uno spessore del tratto sufficiente funzionano correttamente.Modern fonts with enough stroke thickness work well. Ad esempio, Helvetica e Arial sembrano splendidi e sono leggibili in HoloLens con pesi regolari o in grassetto.For example, Helvetica and Arial look gorgeous and are legible in HoloLens with regular or bold weights.

Visualizzazione angolo, angolo e altezza del testoViewing Angle Viewing distance, angle, and text height

Testo con Mixed Reality toolkit V2Text with Mixed Reality Toolkit v2

Qualità rendering testo nitido con dimensione correttaSharp text rendering quality with proper dimension

In base a questi fattori di scalabilità, sono stati creati prefabbricati di testo con testo dell'interfaccia utente e mesh di testo 3D.Based on these scaling factors, we have created text prefabs with UI Text and 3D Text Mesh. Gli sviluppatori possono usare questi prefabbricati per ottenere testo nitido e dimensioni del carattere coerenti.Developers can use these prefabs to get sharp text and consistent font size.

Qualità rendering testo nitido con dimensione correttaSharp text rendering quality with proper dimension
Qualità rendering testo nitido con dimensione correttaSharp text rendering quality with proper dimension

Shader con supporto occlusioneShader with occlusion support

Il materiale del tipo di carattere predefinito di Unity non supporta l'occlusione.Unity's default font material doesn't support occlusion. Per questo motivo, per impostazione predefinita verrà visualizzato il testo dietro gli oggetti.Because of this, you'll see the text behind the objects by default. È stato incluso un semplice shader che supporta l'occlusione.We've included a simple shader that supports the occlusion. L'immagine seguente mostra il testo con il materiale carattere predefinito (a sinistra) e il testo con occlusione corretta (destra).The image below shows the text with default font material (left) and the text with proper occlusion (right).

Shader con supporto occlusioneShader with occlusion support
Shader con supporto occlusioneShader with occlusion support

Successivo checkpoint di sviluppoNext Development Checkpoint

Se si sta seguendo il percorso di sviluppo di Unity, si sta per esplorare i blocchi predefiniti di MRTK core.If you're following the Unity development journey we've laid out, you're in the midst of exploring the MRTK core building blocks. Da qui è possibile passare al blocco predefinito successivo:From here, you can continue to the next building block:

In alternativa, passare alle API e alle funzionalità della piattaforma di realtà mista:Or jump to Mixed Reality platform capabilities and APIs:

È sempre possibile tornare ai checkpoint per lo sviluppo con Unity in qualsiasi momento.You can always go back to the Unity development checkpoints at any time.

Vedere ancheSee also