2014年10月28日火曜日

iPhoneのスクリーンを録画する ー Yosemite , iOS8

iOS 8 と Mac OSX Yosemiteがリリースされました。

様々な隠し機能が、と話題になっていますが、パズドラをしている人であれば一度はしてみたくなるのがiPhoneのスクリーンの録画です。今回はこれについて紹介します。

有料ソフトでは今まででもWi-Fi経由のものがメジャーだったようですが、今回のアップデートからは有線ながら、無料で公式に録画することができるようになりました。



方法を簡単に示します。(以下、iOS 8 と Mac OSX Yosemiteが前提となります)


1. iPhoneを接続した状態で、MacのアプリケーションメニューからQuick Time Playerを開く
2. (上のメニュー)ファイル→新規ムービー収録を選択
3. 録画ボタン横の下矢印マークをタップし、****のiPhoneを選択

これだけで接続できるので、録画ボタンを押すと録画が開始されます。

録画終了後は、忘れずにファイル→保存として、はじめて保存されます。(これをしないとせっかくとった動画も消えてしまうのでご注意を!)

とても簡単ですね!うまくいけたら、YouTubeとかにプレイ動画あげてみたいものです・・・

これだけでは音声合成などはできないのですが、方法もあるようで、詳しくはこちらのサイトにわかりやすくまとめておられました。

2014年10月18日土曜日

Kinect for Windows v2 with Unity 〜導入編〜

前回の記事ではモデルデータとの同期についてとても軽く書きましたが、今回はもう少し戻った内容も含めて書きます。内容は一部重複しますが、2回に分けてご紹介したいと思います。

※後半も書こうとしたのですが、内容が前回の記事で紹介させていただいたブログとほぼ一致するため、公開をやめました。前回の記事をご参照ください。


※Kinect for Windows v2はv1とは異なり、Windowsの8以降にしか対応していません。Macや7以前のWindowsでの利用は基本的には不可能です。

Kinect for Windows v2はWindowsから開発のためのSDKがここで無料で頒布されています。もちろん経験があればそのまま利用したほうが効率のよいプログラムを記述できると思いますが、開発経験が少ないと、かなり難しいと思います。そこで便利なのがUnityです。

<Unityとは>
Unityはゲームエンジンであり、ゲームなどを作るときに非常に便利なアプリケーションです。例えば3Dゲームを作るとき、ソースコードを何も書かなくても、重力・摩擦・衝突など物理的なものや、非常に計算が難解な移動・姿勢の行列計算、またレンダリングなど、様々な処理を自動で行ってくれるようになります。これに移動プログラムなどだけを追加すれば十分ゲームになります。


2Dも3Dも作ることができます。また、作ったゲームをiOSやFlash、Windowsなど、様々な形式で出力することができます。

先ほどのリンクからたどると、ダウンロードできます。登録すればFree版は無料で利用できます(Kinectに必要なものを含む、一部プラグインが使えません)

Unityのインストールの仕方や初歩的な使い方については割愛し、既知のものとして以下の記事を記述します。

<Unity上でのKinect環境を整える>

まずKinectを利用するために、ここからKinect for Windows SDK 2.0 Public Previewをダウンロード&インストールします
そして同じサイトからもう一つ、”System Requirements”の+メニューから
上の図のピンクの部分、”Kinect for Windows SDK 2.0 Unity Pro Add-in”をダウンロードして、解凍しておきます。

準備は以上で完了です。

<Unity上でKinectを動かしてみる

何よりもまず、サンプルを使って動かしてみましょう。
先ほどダウンロード&展開したファイル内の¥¥KinectView¥¥MainScene.unityを開き、実行してみてください。kinectから出力された画像や距離データ、関節データを見ることができます。

エラーが出る場合、kinect周りの配線や”System Requirements”を満たしているかなど確認してみてください。

うまく表示されたでしょうか?

このサンプルプロジェクトにおいて、Scriptsフォルダの中身を見ると、
このようになっています。(Macなのはご愛嬌)

****Managerはkinectと通信をし、値を得るプログラムで、****Viewerはそのデータを表示するプログラムです。

自分で開発するときも、この****Managerのプログラムを利用すると便利です。

今回の記事はここまでで、次の記事でモデルデータへの対応について書きます。

2014年10月15日水曜日

Kinect for Windows v2 with Unity :モデルとの同期

さて、Kinect for Windows v2とUnityを利用して、3dモデル(今回はUnityちゃん)へのボーン対応が出来ましたので報告させていただきます。

2014年7月、Kinect for Windows v2がリリースされました。

もともとはXbox用のセンサーであったkinectも、PCでハックして使うユーザーが増え、kinect for Windowsが発売され、今回のKinect for Windows v2に至りました。

v1とv2の違いは、現状のネット上のドキュメントの量と、Windows 8以降にしか対応していない点です。(慣れてない人はv1を買ったほうが開発がしやすいかも?)ボーンが増えていますが、あまりわかりません。
Xbox用のkinectとkinect for windowsの違いは、最も大きいところは、商用利用できるかできないか、です。
購入される場合は、比較サイトなどでよく検討してからご購入ください。


さて、本題に戻ります。

こちらのサイトが大変参考になりました。
Unityを使ったキャラクターと人体の同期(前編)
Unityを使ったキャラクターと人体の同期(後編)

大体は上に貼らせていただいたリンクに書かれている通りにすればkinectからの出力通りに動かすことができます。ただしかなり違和感があり、その原因はつまり、ボーン設定がずれているためです。

以下のように設定してから実行してみてください。



いかがでしょうか?

WristとHandの両方にRightHandを割り当てていますが、Hand Rightの方は中指とかを設定した方がいいかもしれません。動かしてみた感覚では、プログラムそのままでは手首は対応していないように思いました(Wristすら回転していない)


Unity2Mikuを作った方はすごいですね。ほぼMicrosoft Kinect - Microsoft SDKで公開されているKinect Wrapper Package for Unity3Dと同じですが、Kinect v2用に書き換えられています。それをGithubに公開して頂いて、ありがたい限りです。


簡単に仕組みを説明すると、BodySourceManager(.cs)はkinectから身体のジョイント情報を読み出す関数が含まれるクラスです。これを利用すれば、自動的にジョイントの座標が吐き出されるため、これを利用してモデルに反映するプログラムがKinect2ModelControllerV2.csです。ここで、このデータはジョイントの座標そのものであるため、同じポーズであっても、kinectからの距離やその人の身長などによって大きく変わります。
それを補正するために使うのが回転です。ジョイント間のベクトルから向きを算出し、各ボーンがその向きを向くように回転させることにより、身体のモーションをモデルに反映しています。


踊ったりするととても楽しいですが、後ろを向くとやはりおかしくなります(仕方ないのか・・・)

綺麗に動かすコツは、離れることです。家では難しいですが、2~3m離れたほうがいいです。kinectのカメラを確認すると、全身写りきっていない場合など多いです!