口を動かすには、モーフィングをプログラムでやればできないことはないと思うけど、そこまでやる元気はない。とりあえず六角のデータで複数の顔の表情をインポートして、そのWPFの切り替える方法でどこまでいくか試してみた。
テスト実行用クリックワンス
http://uchukamen.com/WPF/MikuClickOnce/publish.htm
操作方法
- 右クリックでドラッグ→回転
- 左シフトを押しながら右クリックでドラッグ→移動
- ホィール→拡大縮小
- 左コントロールを押して右クリック→回転、位置のリセット
- キー
A…あ、I…い、U….う、E…え、O…お
1…スマイル その1(にこっ)
2…スマイル その2(笑)
3…スマイル その3 (ウィンク) - 方向矢印で目の上下左右
実装的には、こんな感じで、いくつかの表情を遠くの空間に置いておく。表情のTransform を切り替えてあげるだけで、一瞬で顔を切り替えてしまう方法。ここで、 off は、遠くの空間、trans は顔の場所の Transform。
private void Grid_KeyDown(object sender, System.Windows.Input.KeyEventArgs e)
{
if (e.Key == System.Windows.Input.Key.A)
{
faceNow.Transform = off;
faceNow = faceA;
faceA.Transform = trans;
}
・・・以下、同様
}
やっていることは単純だけれど、とりあえず何らかの事象を受けて、表情などを変えることができる。モーフィングに比べればかなり硬いけれど、使えないことはない。
ということで、WPF をつかった新時代にふさわしいインターフェースの名前は・・・
- Miku Interface
- Moe Interface
- Vocaloid Interface
- Humanoid Interface
そうそう、これをつくりながら、Nexus 6 を作りたかったんだよな…と・・・
どうも、ちらちらとごみがはいる。どうしてだろう・・・
たしかにXAMLが、VS 的にも重すぎるけれど・・・
WPFでスキニング-http://blogs.msdn.com/hiroyuk/archive/2007/06/29/3595054.aspx
ミクの関節を見ていると悲しくなってくる。そこまでやりますか・・・なんか、どんどん道を外れていくような・・・だったら、最初からDirectXでなのかなぁ・・・
>実装的には、こんな感じで、いくつかの表情を遠くの空間に置いておく。表情のTransform を切り替えてあげるだけで、一瞬で顔を切り替えてしまう方法。
>ここで、 off は、遠くの空間、trans は顔の場所の Transform。
ちょっと強引w
関節はどうにかしないとですねぇ。
IKも欲しいですねぇ。
確かに元のデータは重いですねぇ。
もう何日かしたらノート用の軽いXAML公開します。
>ちょっと強引w
ちょっとじゃなくて、かなり強引w
>関節はどうにかしないとですねぇ。
>IKも欲しいですねぇ。
そうなんですよね。
IKもミクの場合には必要ですね。
>確かに元のデータは重いですねぇ。
>もう何日かしたらノート用の軽いXAML公開します。
おおお。どうすれば軽くなるのかそのあたりのヒント&チップスもお願いします。
Visual Studio には、もうすこし頑張ってもらいたいですね。