本日の投稿:2015年12月17日


TVMLが再生できた

TVMLスクリプトが一応再生できるようになった。もちろん仕様の一部だけど、こんなのが走るようになった。TVMLスクリプトはコレ

コマンドにして10個ぐらいをサポート。TVMLの仕様自体は7、80個ぐらいあったと思う。ただ、今回、従来のTVML仕様にこだわる気はなく、作りながらTVMLの方も変えていってしまう予定。今のところ、少ししか変えてないが、一か所、従来と大きな違いがある。

それは、CharacterデータをTVMLスクリプト内で読み込むのを止めたこと。従来は、たとえば

character: openmodel (model=POONI, filename=”Characters/pooni/pooni”)

みたいにfilenameに外部データファイル名を指定して、それをオープンして、それを使っていた。上述の「Characters/pooni/pooni」は、実際にはUnityのプロジェクト内のResourcesフォルダ内に配置したキャラクタデータだったんだよね(あるいはどこぞに配置したAssetBundle)。今回、このやり方は止めて、キャラクタとセット(実際はカメラも照明も全部)をUnityEditor上で最初からScene上に配置しておき、これをもとにTVMLスクリプトを動かすようにした。

UnityEditor上では最初からこうなっている。

Untitled-1

キャラクタ、セットはプレハブをドラグアンドドロップして、Editor上で配置を行う。照明やカメラも配置調整して絵作りをしてしまう。その後、このシーンに対してTVMLスクリプトを再生して、こいつらに演技させるのである。そのため、今回TVMLに「assign」というコマンドを追加した。こういう風に書く。

character: assign (name=A, gameobject=”pooni”)

pooniという名前のゲームオブジェクトに、TVML内の「A」というキャラクタ名をアサインし、以後、これを使う。

character: talk (name=A, text=”こにゃにゃちわ”)

という風になる。ということは、UnityEditor上でシーンさえ作っておけば、以下の正味2行のTVMLを書けば、キャラクタを動かすことができる。

character: assign (name=A, gameobject=”pooni”)
character: talk (name=A, text=”こにゃにゃちわ”)

と、ここまで書いて気が付いたが、2行も要らないな。

character: talk (name=pooni, text=”こにゃにゃちわ”)

でしゃべった方がいいに決まってるわな。そうすっか。検討しておこう。しかし、こうなるともう既にオブジェクト指向表記そのものだね。

pooni.talk(“こにゃにゃちわ”)

と書いているのと意味的にまったく変わらない。それじゃあ、オブジェクト指向にすりゃいいじゃないか、という考え方も確かにある。現にNHKではだいぶ前に、結局、Pythonを使ってそのようにしたと聞いている。でも、まあ、TVML元祖のオレとしては、一応、TVML表記にこだわっておくことにしよう。

それから、このやり方は、従来のようなスタンドアロンなTVMLプレイヤーと比較したとき、UnityEditorを前提としてしまっているところに制限があり過ぎるように思えるかもしれない。でも、オレの考えではこっちの方がたぶん絶対にいい。ここで何がいいかクダクダは書かないが、この次のブログエントリーかなんかで、こんなショボいキャラと板セットじゃない、Unity5のGIやらPBSやらの機能をふんだんに使ったTVMLシーンでも掲載して、「ほれ、この方がいいっしょ?」とするつもり。

それでは、また!