2007/2/3

誰か教えてください  電波ゆんゆん
いい歳こいて、知らないことが多いモンですから。お恥ずかしながら、どなたか博識な方に是非ともご教示願いたいと思うんですが・・・

続きを読む
0

2007/2/3

【m4g】走行音(α1)は、結論から言うと駄目っぽい  VRM4サウンド三昧
一昨日言ってたコンセプト立証目的のスクロールを作ってみたんですが、またしても玉砕です。

[Download] 【m4g/1.0】走行音(α1)

※このスクロールは技術実験を目的としたもので、一般的なVRMユーザーに役立つものではありません。意味のわからない人はダウンロードしないことをお奨めします。

表題にも書いたように、駄目っぽいです。が、テクニカルには面白いので、とりあえず公開しておきます。以下、何が駄目っぽいのか、という観点から、このスクロールについて解説します。

・こんなに音声リソースを作るヤツはいない

“走行音(α1)”を組み込むと、速度に応じて走行音(SetWaveHigh/Lowで割り当てられる音)を切り換えれるようになります。低速(電圧0.4未満)3段階、高速(同0.4以上)3段階の計6段階で、低速と高速の境界線以外の電圧は変更可能です。つまり、通常は低/高速の2種で済む走行音の音声リソースを、三倍の6種用意することが求められます。で、挑戦しましたが、挫折しました。moko氏が言ってたように「実装されても面倒くさくてやる気しないかも」の世界。

・さらに、こんなに音声リソースを作るヤツはいない

6種でもしんどいのに、“走行音(α1)"では、走行速度の変化から惰行/力行/制動を判断し、それに応じた音声リソースを割り当てることが出来ます。これも速度に応じて6段階あるので、6段階×3種=18音声リソースです。誰がやるんだ、そんなこと。

ちなみに、動力車と付随車の音声を分ける方法として、今回は車両スクリプト冒頭でグローバル変数m4gVarTCarを宣言し、この値が1であれば付随車と判断して常に惰行音を採用する、というロジックを採用しています。スクロール組み込み直後は全車動力車状態なので、必要に応じて車両スクリプトを開き、冒頭のset m4gVarTCar 0の0を1に書き換えてください。

・惰行/力行/制動の判断は走行速度の変化だけでは駄目

これは作る前に気づくべきだったんですが。“走行音(α1)”では、一定時間(デフォルト33ミリ秒)毎に走行速度をチェックし、前回取得した速度との差が一定限度(可変)を超えた場合、これを力行/制動と判断するロジックを組んでみました。余談になりますが、45-50s氏のコレは「速度が変化した場合」になっているので、トラコンモードだと常にその状態になってしまってますね。

それはさておき。よくよく考えてみると、鉄道車両の力行/制動は、マスコン/ブレーキが作動している状態であって、これは速度の変化とイコールではありません。勾配区間では、マスコン/ブレーキが作動していても速度が拮抗するはずですから、どうにも不自然な感じです。

まぁ、現行のVRM4には、マスコンモードも含めて厳密な意味での力行/制動の概念が存在しません(つまり、鉄道模型と同じです)から、これを言い出すとキリがないことではあるのですが、一方で、そこにこだわらないのであれば、そもそも音声ギミックにこだわる理由の半分くらいが消えてしまうような気もします。

とまぁ、何の役にも立たないものが出来てしまったんですが、以下の成果は残りました。

・速度をリアルタイムに計測し、それに応じて走行音を切り換えることは可能である。
・速度変化のみから惰行/力行/制動の状態を判別するのには無理がある。
・単一のスクロールだけでも、こういう組み込みが出来る。

45-50s氏の作例も踏まえて考えると、速度に応じた走行音切替は、技術的には可能だけれども運用上の問題からは困難で、少なくとも今回やったような6段階はしんどそうです。力行/制動音は45-50s氏がやっているようにSetWavePowerのon/offくらいに留めるのが妥当のような気もします。逆に、ジョイント音をよりリアルにするためには、走行音切替のノウハウが活用できそうです。

何を以って力行/制動とみなすか、については、ちょっと研究が要りそうです。単純に考えると、鉄道の運転システムを模した操作体系をスクリプトで記述し、そこに音声の切替を載せるのがいいのかも知れませんが、やや目指していることに対してオーバースペック(リアルなサウンドが目的であって、リアルな運転を目指しているわけではない)な気もします。スクリプトで自動運転したらサウンドが破綻する、なんてのもナンセンスですし。

今回、強引に単一のスクロールですべてのスクリプトを賄う方法論をとってみましたが、これについても再考が必要っぽいです。が、長くなったので、これは後日に譲ります。あと、どーでもいい話ですが、abs命令(絶対値取得)がバグってるぽいです。本当にもう、どーでもいいですが。
0


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