ソラマメブログ
QRコード
QRCODE
アクセスカウンタ
読者登録
メールアドレスを入力して登録する事で、このブログの新着エントリーをメールでお届けいたします。解除は→こちら
現在の読者数 1人
プロフィール
Hitomi Magne
Hitomi Magne
ヌーディスト件ダンサーです。Susukinoによく出没します
オーナーへメッセージ

2008年11月16日

黒板のスクリプトって…

すっかりおなじみになった黒板ですが、あれって、どうやってるのか考えると眠れなくなります。

XyzzyTextをもとにして日本語対応してるらしいけど、どうやって??
XyzzyTextの基本を少し。
一つの立方体プリムをぐにぐに変形させて、正面に立方体の6面のうち5面を並べます。この段階で「ぎゃー」っていいたくなるけど、これは序の口。
文字列を分解して頭から一文字ずつ表示するわけだけど、ここに文字を表示するためには、文字のテクスチャが必要です。一文字ずつテクスチャにしてたら、英数記号だけでもアップロード料金が100L$くらいかかっちゃうので、一枚のテクスチャに文字を並べたものを作ってるわけですね。テクスチャの表示位置や倍率を調整して、目的の文字だけを目的の面に表示するわけです。

1プリムに10文字表示可能なバージョンはまたえらいことをしていて、ありうる二文字の組み合わせを全部並べたテクスチャを作っているのですが、それはまた別の話。

英数字だけなら、そこそこ高解像度にしてもテクスチャ一枚とかでいけちゃうんです。実際はテクスチャの効率も考えて、あまり大きくないテクスチャ数枚に分けているようですが。

で、日本語を出すとなると、数千文字は必要なわけです。
SLで使えるテクスチャの最大サイズは1024×1024。
一文字のサイズを32×32ドットにすれば、1024文字一つのテクスチャに入ります。
JIS第一水準は約3000文字ですから、三枚のテクスチャでほぼカバーできます。
これくらいなら許容範囲ですけど、問題はLSLの文字コードがユニコードだってことなんですね。ユニコードって、日本と中国と韓国の漢字を全部並べていて、JIS漢字コードとは全然互換性ないんです。日本で分類されたJIS第一水準とかは適当に統合漢字の中にちらばっています。だからユニコードのままでテクスチャ作ろうとしたら漢字だけで約二万字、テクスチャ20枚位作ってアップロードする必要があります。

じゃあ、JISコードの配列のテクスチャ作ってユニコードからJISコードに変換すればいいんじゃないかと思うでしょうが、ユニコードからJISコードへの変換テーブルのサイズがでっかくなっちゃいます。Integerのリストを作ったとして、32ビットの数字を2万個入れるリストが必要なので、8万バイト、ってことは約72kb必要なわけです。Monoになって拡張されたといえ、スクリプト一個の使えるメモリは最大64kbですから、これじゃ足りません。

いったいどうやってるんだろう…


同じカテゴリー(LSL)の記事画像
追跡型チップジャーは重いか
UNICODE表示プリム高速版
電光掲示板とかホワイトボードとか
UNOCODEなんでも表示プリム
ラジオ:曲名の日本語表示
ラジオ作りにハマる
同じカテゴリー(LSL)の記事
 サーバのバグっぽい (2009-03-31 19:53)
 追跡型チップジャーは重いか (2009-01-20 18:03)
 UNICODE表示プリム高速版 (2008-11-25 14:46)
 文字コードを取得する方法。 (2008-11-21 15:25)
 電光掲示板とかホワイトボードとか (2008-11-20 23:47)
 UNOCODEなんでも表示プリム (2008-11-17 19:10)

Posted by Hitomi Magne at 14:35│Comments(0)LSL
上の画像に書かれている文字を入力して下さい
 
<ご注意>
書き込まれた内容は公開され、ブログの持ち主だけが削除できます。