« RenderScript の invoke は非同期実行 | メイン | Unity での日本語描画 その2 テクスチャ仮想多重化 »

2014年06月18日

Unity:: Unity での日本語描画 その1

    

標準的に用意されている方法は、TextMeshGUI Text の2つのようだ。
どちらもイマイチ。

ある程度の大きさのテクスチャをフォントキャッシュとして、必要な文字を順次書き出し、そこから板ポリに貼り付けて文字を表示していくと言うのが一般的な文字描画の方法だと思う。
が、Unity だとテクスチャを動的に書き換えるのは重くて使い物にならないと言う話だ。
UnityでTexture2Dへの描画は厳禁

Unity の機能ではなく各プラットフォームごとに書き換えるようにすれば、実用的な速度になるようだ。
その用途に以下のものがある。

unity-sysfont ( GitHub )

動的に作るのではなく、事前に用意した文字テクスチャを作る方法として Bitmap font generator を使う方法も。
参考 : その1 NGUI:ビットマップフォント表示~フォントテクスチャを作る

ただ、日本語の場合は文字数が多いので事前準備するとなるとテクスチャが何枚も必要になる。
動的書き換えが遅いと言っても、リアルタイムでの話だろうから、シーンの切れ目でこれから使うフォントテクスチャを動的に使うと言う手も考えられる。

PCFフォントを使って動的にテクスチャに書いていく方法を考えていたが、どうも遅いらしいと言うことで断念。
ちなみにPCFフォントファイルは、otf2bdf で TreeType フォントをテキスト形式のビットマップフォントに変換、bdftopcf で bdf からバイナリの pcf ビットマップフォントに変換できる。
コマンドで使う文字やサイズなども指定できるので、なかなか良さげだ。
まあ、今回はあまり使えなさそうだが。

全部決め手に欠ける。
unity-sysfont が一番良さそうだが、プラットフォームごとにプラグイン切り替えてと言う部分が少し引っかかる。

つづく。



投稿者 Takenori : 2014年06月18日 21:50




comments powered by Disqus
Total : Today : Yesterday : なかのひと