C# Programming

WPF初音ミク XAML 化計画

開発環境: Visual Studio 2008

1.目的

3Dミクを躍らせるツールを見ていたら、3DミクのAutoCadデータがアップされているのに気がつきました。 ということは、ZAM 3D にインポートできるわけで・・・ ということは、VS 2008 にエクスポートできるわけで・・・ ということは、コンパイルすると動いてしまうわけで、簡単に紹介します。

2.参考書

(1) http://fenyo-ru.hp.infoseek.co.jp/dlc.htm

3.初音ミクの 3Dデータ

 

3.1 Miku 3D の元データ→ ZAM 3D

http://fenyo-ru.hp.infoseek.co.jp/dlc.htm の作者様より、商用以外でのXAML へのデータ変換とアップロードのお許しをいただきました。

ここでアップロードされているデータのうち、AutoCAD のxdf 形式を ZAM 3D にインポートすることができます。

3.2  ZAM 3D →VS 2005

この状態で、ZAM 3Dのメニューより Export を選択し、Visual Studio 2005 のプロジェクト形式で Export します。

3.3 VS 2005 → VS 2008

エクスポートした Visual Studio 2005 のプロジェクトファイルを Visual Studio 2008 で開くと、自動的に変換を行ってくれます。

Miku-fenyo-ru.hp.infoseek.co.jp.zip  2.03MB

ただし、このデータだと、まゆと口の周辺のレンダリングがうまく行われずに、次のようになってしまいます。もとのレンダリングソフトから、AutoCAD のdxf フォーマットでエクスポートし、さらにそれを XAML にエクスポートする際に、劣化してしまうのでしょう。残念です。

4. キオ式ミク

同様に、キオ式ミクで試してみました。結構厄介です。

データのXAML化の方法とその検討結果とその前後を参照してください。

Kio2.lwo の LightWave 用データを Blender にインポートし、そこから dxf フォーマットへエクスポートし、それを ZAM 3D へインポートしました。

4,1 カメラワーク

ターゲットカメラがあるので、それをパンしてみる。
スライダーを3つ追加して、次の3つのカメラの設定にリンクさせる。

  • 望遠・広角
    値の設定先: ターゲットカメラの FieldOfView
    値のレンジ:  だいたい 30〜100ぐらい

  • 水平方向回転
    値の設定先: ターゲットカメラの Transform
    値のレンジ:  -180°〜180°

  • 垂直方向回転
    値の設定先: ターゲットカメラの Transform
    値のレンジ:  -180°〜180°

実装例は次の通り。

        private void SliderH_ValueChanged(object sender, RoutedPropertyChangedEventArgs e)
        {
            Transform3DGroup tg = new Transform3DGroup();
            tg.Children.Add(new RotateTransform3D(new AxisAngleRotation3D(new Vector3D(0, 1, 0), this.SliderH.Value)));
            tg.Children.Add(new RotateTransform3D(new AxisAngleRotation3D(new Vector3D(1, 0, 0), this.SliderV.Value)));

            this.Target_CameraOR20.Transform = tg;
        }

        private void SliderV_ValueChanged(object sender, RoutedPropertyChangedEventArgs e)
        {
            Transform3DGroup tg = new Transform3DGroup();
            tg.Children.Add(new RotateTransform3D(new AxisAngleRotation3D(new Vector3D(0, 1, 0), this.SliderH.Value)));
            tg.Children.Add(new RotateTransform3D(new AxisAngleRotation3D(new Vector3D(1, 0, 0), this.SliderV.Value)));

            this.Target_CameraOR20.Transform = tg;
        }

        private void sliderZoom_ValueChanged(object sender, RoutedPropertyChangedEventArgs e)
        {
            this.Target_CameraOR20.FieldOfView = this.slider.Value;
        }

4,2 カメラワークのデモ

この方法で、初音ミクを回してみます。

ソースコード一式   Miku Kio V1.zip   4.3MB

注意:  ここで使用している初音ミク 3D XAML データの利用に関しては、キオ式アニキャラ3D の使用条件に従ってください。

5.初音ミク XAML化計画

以下、C# 研究室へのリンクです。

初音ミク XAML化計画 3/8

初音ミク XAML化計画 3/12

初音ミク XAML化計画 3/13

初音ミク XAML化計画 3/17

初音ミク XAML化計画〜クオータニオンって何? 3/19

初音ミク XAML化計画〜初音ミクをグリングリンするには、ベクトルの外積とクオータニオン 3/23

初音ミク XAML化計画〜 Trackball.cs を組み込んで、初音ミクをグリングリン回す 3/24

初音ミク XAML化計画〜初音ミクは重い 3/29

初音ミク XAML化計画〜キーボード入力で口と目を動かす 3/30

WPF Morphing してみる 5/6

初音ミクをモーフィングしてみるデモ  Morphing V1.exe