あいてぃーとふぼふ

Kinectでドロイド君を動かそう!(その1)

今回からしばらくの間、「Kinect for Windows」を利用して、思い通りに3Dモデルを動かすサンプルの開発に挑戦してみたいと思います。いわゆるひとつの「モーションキャプチャー」的なサンプルです。できればホントは「窓辺さんの3Dモデル」を動かしたかったんですが…お高いので代わりのモデルを用意することにしました(´・ω・`)

ハイエンド・ドロイド!

ということで今回は、窓辺さんの代わりに「ドロイド君」の3Dモデルを動かすことにします!(*`Д´*)ノ でも、どうせなら普通のドロイド君では物足りません。そこで今回は、驚異の7000ポリゴンオーバーで作成したハイエンドなドロイド君…つまり「ハイエンド・ドロイド」を利用します~!なんということでしょう!曲面やエッジの成形にポリゴンを贅沢に使用しています。しかもこのドロイド君…スゴイのはポリゴン数だけではありませんよ?( ̄ー ̄)

スキニング・ドロイド!

何と!こいつ…動くぞKinectから取得できる骨格情報を参考に、ボーンを仕込んで動くようにしてみました。個人的なこだわりポイントは、頭と胴体の間に「首」となるポリゴンを仕込んだことです。これによって頭を動かすと首が口のように見えるので、なんだかとってもチャーミング♪最終的にKinectでこのポーズが取れれば目標達成です!

使えるものは流用すべし!

ご覧のようにこのドロイド君は、肘や膝が人間の肌みたいに「グニャリ」と動きます。こういう3Dモデルのことを「スキニングモデル」というんです。C#でスキニングモデルを扱う場合は、AppHubで公開されているXNAの「スキニング モデル」というサンプルを参考にすると便利です。今回もこのサンプルを一部参考にして、Kinectで3Dモデルを動かすサンプルを開発していきたいと思います。

意外と情報が少ない?

しかし…この手のサンプルってネットで全然公開されていないんですね。ネタがありきたりすぎるかと思っていましたが、意外とそうでもないみたいです。単純に骨格を描画しているサンプルはよく見かけるんですが、あれってあくまで2D画像として骨格を描画しているので、実はとっても簡単なんです。SDKのAPIには、骨格と画像をマッピングするAPIも用意されていますしね。けれど、骨格を3Dモデルにマッピングさせようとすると、一筋縄ではいきません。行列とか行列とか行列とか…考えただけでも面倒くさそうです…ノ乙(、ン、;)

なお、サンプルが完成した暁には、3Dモデルとソースコードを同人誌のオマケとして配布する予定ですので、在庫の撲滅にご協力ください♪