2005/8/26

日本語/英語表示が切り替わるLED方向幕  VRMスクリプト禅問答
【怎麼生】
VRMoviesの動画56作目でE751系の方向幕に日本語/英語表記が交互に表示されていましたが、あれはどうすればできるんですか。

【説破】 4.0.2.1
日英それぞれの方向幕リソースを作り、自動切替表示をおこなうスクリプトを書く、ただそれだけの話です。方向幕についてはこちらの拙稿でも参考にして適当に作ってください。本稿ではスクリプトについてのみ言及します。

SetSignTexture命令は、実行すれば瞬時に方向幕を切り替えてくれます。要するに、(1)一定間隔で、(2)2種類(場合によってはもっと)のリソースを、(3)それぞれの車輌に設定する、スクリプトがあれば良いということになります。以下にサンプルを示します。

[編成スクリプト]

//方向幕管理変数
Var VarSignCase
set VarSignCase 0
//タイマーイベント設定
Var TimerID
SetEventTimer this MtdChangeResource TimerID {任意の切替タイミング(ミリ秒)}
//
//方向幕切替メソッド
//
BeginFunc MtdChangeResource
if VarSignCase
//VarSignCaseが1の場合
CallCar MtdCase1
set VarSignCase 0
else
//VarSignCaseが0の場合
CallCar MtdCase0
set VarSignCase 1
endif
EndFinc

[車輌スクリプト]
//
// VarSignCaseが0の場合のリソース設定メソッド
//
BeginFunc MtdCase0
SetSignTexture {号車とVarSignCaseが1の場合に対応したリソース番号}
EndFunc
//
// VarSignCaseが1の場合のリソース設定メソッド
//
BeginFunc MtdCase1
SetSignTexture {号車とVarSignCaseが1の場合に対応したリソース番号}
EndFunc
説明不要かとは思いますが念のため。
肝になるのは編成スクリプトのグローバル変数VarSignCaseです。この値をSetEventTimerによって等間隔に実行されるメソッドMtdChangeResourceの冒頭でチェックし(if VarSignCase〜endif)、0であれば車輌スクリプトのMtdCase0を実行(CallCar)してから値を1にする(set VarSignCase 1)、逆に1であればMtdCase1を実行してから値を0にする、という単純な仕掛けです。
MtdChangeResourceがタイマー実行されるたびにVarSignCaseの値が0と1を交互に繰り返すのは想像できますね。ここで例えば0を日本語幕、1を英語幕と考えてやれば、まさにこれが方向幕自動切替であることがご理解いただけると思います。

クリックすると元のサイズで表示します
<今回用意した方向幕>
何故か6輌分、八戸行もあったりして・・・

本稿では最もシンプルな「2種類の方向幕の自動切替」を題材にしていますが、少し手を加えれば2種類どころかリソース番号の許す範囲でアニメーションが可能になります。たとえば500系新幹線のLED方向幕の下半分で停車駅名が右から左へと流れていきますが、パラパラ漫画の容量で方向幕リソースを作っていけば、これをVRMで再現することも出来ます。それだけのLED幕を作る根気があれば、の話ですが。

2008/02/07 誤記修正 (誤)SetTimerEvent → (正)SetEventTimer
1

2005/8/26  22:45

投稿者:由羽
>パラパラ漫画の容量で方向幕リソースを作っていけば

どのくらい容量要るのかしら〜(w
いや、マジ、リソース設定が面倒なんじゃないかと。

#横着の為の努力は惜しまない主義ですが…orz

http://slashdot.jp/comments.pl?sid=166228&cid=516863

コメントを書く

この記事にはコメントを投稿できません




teacup.ブログ “AutoPage”
AutoPage最新お知らせ