TVMLZは”Z”、つまり、アルファベットの最後で、この後は無し、ってことで。
NHKでの開発コードはtvmlxで、ま、それに似てるんだけどTVMLZってことでよろしく。
You may also like
TVMLのエンジンをUnity5で新規にスクラッチで作り始めた。ほとんど、いや、完全に趣味である。 始めたきっかけだが、学校の授業でClean codeっていう「いかにきれいなコードを書くか」という、自分におよそふさわしくないテーマで講義をしているのだが、そこで使うちょっとした課題を作ったのが始まりだった。昔作ったキャラを引っ張り出してきて、Unity5の上に登場させ、ごく基本的なアニメーションをC#で書いて仕込んだ。このコードを学生に渡し、コードをきれいにしなさい、とやったわけだ。A4でほんの一枚以下のC#のコードだ。 キャラが動いて声を発するのが面白くて、ちょこっといじってこんなのを作った。 このコードはひと月ほど放置されていたのだが、ちょっとヒマができた時になんとなく取り出し、以前に買っておいた、Unity5で動くTTS(音声合成)と自動リップシンクソフトをやはり引っ張り出し、つないで、セリフをしゃべらせてみた。 コードに打ち込んだセリフをこいつが初めてしゃべったとき、思わず微笑んでしまった。すぐに、およそ20年近く前、同じようなCGキャラが初めて合成音でしゃべったときのことがフラッシュバックした。あれが最初の感動だったな、と思い、しばらく感慨にふけった。 と、まあ、そういうわけで、ヒマができたときだけ、非常にノロノロと、このコードをあれこれいじり始め、いろいろ考えてはみたのだが、結局、このままTVMLエンジンをゼロから作ってみるか、と思うようになった。そして、今に至る。 当面、ビジョンは無い。途中で放置する可能性も大である。というわけだが、自分はなぐさみで文を書くのも趣味なのでこのようなブログとともに開発してみようかな、と思っているのである。
一応、こんな風にしゃべっている。TVMLは何はともあれしゃべるのが基本なんで、最初はこれでしょう。 このキャラはPooniと言う。TVMLオリジナルキャラはBobだが、その子供にKidというキャラがいて、その現代版がPooni。デザインは家のカミさん。黄色いうんち色のおむつをしているのでPooniと言う名前なのである。あと知っている人は知っているが、このボブマリキャラはポリゴンが見えているところに特徴があるのだが、このPooniはそれが無くてスムーズ。Unity5になってデフォルトのシェーダーがPhong shadingになり、プラスチックの質感とかきれいに出るんで、ポリゴン頭はやめー! スムーズ路線に切り替えた。そのうちスムーズBobも出すことにしよう。 そういや、この前スウェーデンの授業でなんかのついでにこのPooniと、BoinというキャラとFoggというキャラの寸劇を見せたら学生の一人が超笑い転げていたが、そんなに面白いか、これが。 開発ブログなんでテクニカルノートを書こう。 音声合成はRTVoice(会社:crosstales)という売り物でUnity Asset Storeで見つけて買った。たしか二千円ぐらい。このRTVoiceは別に自分でTTSエンジンを持っているわけではなく、使っているマシンにプリインストールされているTTSエンジンをサーチして、それをUnityから使えるようにしている。オレの今のマシンはWindows10で、Windows10には英語のTTSが最初からあり、それで言語設定を日本語にするとどうやら日本語TTSが一つ入るようで、現在はその「日本女性」の声でしゃべっている。 それからリップシンクは、今回、やはりAsset storeで買ったSALSA(会社:Crazy Minnow Studio)というソフトを使っている。これも二千円ぐらい。Unity上で鳴っている音をリアルタイム処理して、3段階のリップシンクデータを自動的に出力する、という簡単なもの。受け取った僕のコード側では、この不連続な3つのデータにローパスフィルタにかけ、スムージングし、滑らかなリップシンクデータに変換して使っている。 このSALSAだが、アナウンスによるともうすぐ、Unity上キャラに表情をリアルタイムで自由に与えられるパッケージも出すそうで、それが出たらそれを組み込んで表情を変えていろいろやってみたい。もちろん、このバカキャラのままやるつもりだが。 あ、あと、見ての通りセリフの字幕も付けている。フォントはゴシックだと味気ないので、cinecaption227というシネマ調のフォントをどっかから落としてきて、それを使った。 というわけで、第一報でした。
今までも何度かやった経験はあるのだが、Unityで外部DLLのライブラリをコールする方法について、書いておく。 今回、いくらやっても動かず、5時間ぐらい格闘してしまったので、また同じことにならないように備忘録として、また、初めてやる人の参考として簡単にまとめておく。 DLLはVisual StudioのC++でビルドして作り、これをUnityにインポートして、Unity ScriptからC++のファンクションコールする、という流れである。今回、あまりに動かないんで、最後の最後、もっとも簡単なコードにして確認した。もちろん、この簡単コードはUnityのマニュアルにもあって、それとそれほど変わるところは無いんだが。 DLL側のコード extern “C” __declspec(dllexport) int Add(int a, int b) { return(a + b); } Visual Studio 2015使用。C++のWin32アプリでDLLを選んでプロジェクトを作る(名前をdlltestとしよう) […]
TVML SDKの会員制限を外したので、誰でもDLできて使えます。ダウンロードページの一番下からどうぞ。 使用上の注意もそこに書いてますんで、そういう感じにてよろしくお願いします。 ソースコードもそのまま入れてるんで、いかようにでもご自由にどうぞ。 tvmlzっていう別プロジェクトもあるんですが、そっちも2年ぐらい止まってるかなあ。とはいえ、そっちは現用で使ってて、vizclassっていうアプリ(ビデオレクチャーを作るツール)はそれで作ってるし、vizclassは今でも英語の講義作成用に使ってるんで、まだ現用なんですよね。 ほんとはtvmlzもフリー公開したいんですが、未完成なんでまだ公開できる状態じゃないのね。完成はいつになるか分かりません・・・ よろしく!