テキスト プレハブ — 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' フォントを使用する方法を示しています。

Segoe UI フォント ファイルのインポート

  1. フォント テクスチャを 3DTextSegoeUI.mat 素材に割り当てます。

    フォント テクスチャの割り当て

  2. 3DTextSegoeUI.mat 素材で、シェーダー Custom/3DTextShader.shader を選択します。

    シェーダーの割り当て

  3. 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 が必要です

既定のフォント マテリアルと 3DTextSegoeUI マテリアル

Text3DShader.shader

オクルージョンをサポートする 3DTextPrefab のシェーダー。