これらのプレハブは、Windows Mixed Realityのレンダリング品質に合わせて最適化されています。 詳細については、Microsoft Windows デベロッパー センターのUnityのテキストに関するガイドラインを参照してください。
プレハブ
3DTextPrefab
3D Text Mesh プレハブ (Assets/MRTK/SDK/StandardAssets/Prefabs/Text) で、2 メートルの距離で倍率が最適化されています。 (以下の手順をお読みください)
UITextPrefab
UI Text Mesh プレハブ (Assets/MRTK/SDK/StandardAssets/Prefabs/Text) で、2 メートルの距離で倍率が最適化されています。 (以下の手順をお読みください)
フォント
Mixed Reality Toolkit に含まれるオープンソース フォント (Assets/MRTK/Core/StandardAssets/Fonts)。
重要
Text Prefab では、オープンソース フォント 'Selawik' が使用されます。 別のフォントで Text Prefab を使用するには、フォント ファイルをインポートし、次の手順に従ってください。 次の例は、テキスト プレハブで 'Segoe UI' フォントを使用する方法を示しています。
フォント テクスチャを 3DTextSegoeUI.mat マテリアルに割り当てます。
3DTextSegoeUI.mat マテリアルで、シェーダー Custom/3DTextShader.shader を選択します。
Segoe UI フォントと 3DTextSegoeUI マテリアルをプレハブ内のテキスト コンポーネントに割り当てます。
Unityでのフォントの操作
Unityのシーンに新しい 3D TextMesh を追加する場合、視覚的に明らかな 2 つの問題があります。 1 つは、フォントが非常に大きく、2 つ、フォントが非常にぼやけて表示されます。 また、インスペクターで既定の [フォント サイズ] の値が 0 に設定されていることにも注目してください。 この 0 の値を 13 に置き換えると、実際には 13 が既定値であるため、サイズに違いはありません。
Unityは、シーンに追加されるすべての新しい要素のサイズが 1 Unity 単位、または 100% Transform スケールであると想定しています。これは HoloLens で約 1 メートルに変換されます。 フォントの場合、3D TextMesh の境界ボックスは既定で高さ約 1 メートルです。
フォント スケールとフォント サイズ
ほとんどのビジュアル デザイナーは、ポイントを使用して、現実世界のフォント サイズとデザイン プログラムを定義します。 1 メートルに約 2835 (2,834.645666399962) ポイントがあります。 ポイント システムを 1 メートルに変換し、Unityの既定の TextMesh フォント サイズ 13 に基づいて、13 を 2835 で除算した単純な数学は 0.0046 (0.004586111116) に等しくなりますが、一部の数値は 0.005 に丸める必要がありますが、最初に適切な標準スケールを提供します。
いずれの場合も、Text オブジェクトまたはコンテナーをこれらの値にスケーリングすると、デザイン プログラムからのフォント サイズの 1 対 1 変換が可能になるだけでなく、アプリケーションまたはゲーム全体で一貫性を維持するための標準も提供されます。
UI テキスト
UI またはキャンバス ベースの Text 要素をシーンに追加する場合、サイズの不均衡は引き続き大きくなります。 2 つのサイズの違いは約 1000% です。これにより、UI ベースの Text コンポーネントのスケールファクターは 0.00046 (正確には 0.0004586111116) または丸められた値の 0.0005 になります。
免責事項: フォントの既定値は、そのフォントのテクスチャ サイズまたはフォントがUnityにインポートされた方法によって影響を受ける可能性があります。 これらのテストは、Unityの既定の Arial フォントと、他のインポートされたフォントに基づいて実行されました。
Text3DSelawik.mat
オクルージョンをサポートする 3DTextPrefab 用のマテリアル。 3DTextShader.shader が必要です
Text3DShader.shader
オクルージョンをサポートする 3DTextPrefab のシェーダー。