テキスト プレハブ — MRTK2
これらのプレハブは、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 メートルの距離で拡大縮小係数が最適化されています。 (以下の手順をお読みください)
フォント
オープンソース フォント (Assets/MRTK/Core/StandardAssets/Fonts)。Mixed Reality ツールキットに含まれています。
重要
テキスト プレハブでは、オープン ソース フォント 'Selawik' が使用されます。 別のフォントでテキスト プレハブを使用するには、フォント ファイルをインポートし、以下の手順に従ってください。 以下の例は、テキスト プレハブで 'Segoe UI' フォントを使用する方法を示しています。
フォント テクスチャを 3DTextSegoeUI.mat 素材に割り当てます。
3DTextSegoeUI.mat 素材で、シェーダー Custom/3DTextShader.shader を選択します。
Segoe UI フォントと 3DTextSegoeUI 素材を、プレハブのテキスト コンポーネントに割り当てます。
Unity でのフォントの操作
Unity のシーンに新しい 3D TextMesh を追加するとき、視覚的に明らかな 2 つの問題があります。 1 つはフォントが非常に大きく表示され、もう 1 つはフォントが非常にぼやけて表示されます。 しかも興味深いことに、既定のフォント サイズの値がインスペクターでは 0 に設定されています。 この 0 の値を 13 に置き換えてもサイズに違いが現れないのは、13 が実際には既定値であるからです。
Unity では、シーンに追加されるすべての新しい要素が 1 Unity ユニットのサイズ (つまり 100% 変換スケール) であると想定され、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 フォントと、インポートしたもう 1 つのフォントで実施しました。
Text3DSelawik.mat
オクルージョンをサポートする 3DTextPrefab の素材。 3DTextShader.shader が必要です
Text3DShader.shader
オクルージョンをサポートする 3DTextPrefab のシェーダー。