Leap Motion SDK v2 betaが公開されました
Leap Motionの開発者サイトでLeap Motion SDK v2 Betaが公開されました。「Skeletal Tacking Beta」という名前の通りの拡張が行われています。

ベータなのにしっかり日本語訳されているところがすごいですね。

既存バージョンは自動的にアンインストールされてからインストールが始まります。

今回の最大の特徴は、指先検知なLeapだったはずは指の関節が取れるようになった点でしょう。しかもハード改修なしでソフトウェアのバージョンアップだけで対応しています。

この追加に伴いFingerクラスにBoneメソッドが追加になっていて、そこからBoneクラスとして検知したボーンの情報を取得できるようになっています。
v1と比較すると既存の名前空間はほぼそのままに拡張が行われていますので、v2対応の日本語訳も近々公開予定です。
TMCN tech cafe vol.01 「Leap in the Cloud」のイベントレポートが掲載されました
2014/04/21-23に開催されたTMCN tech cafe vol.01 「Leap in the Cloud」のイベントレポートがbuildinsiderに掲載されました。
Leap Motionで誰もがつまずく「3D認識」の課題とは? ― 3 daysカフェでのセッションより - Build Insider
Tokyo Motioncontrol Network tech-cafe Vol.01
まるでコミケのようにLeapを学び遊ぶ3日間通しイベントやりまーす。
最後はLeapからクラウドへ!も学べちゃいますよ(クラウド側は事前に準備しておきますので知識不要!)。
http://kokucheese.com/event/index/157654/
ぜひ、1日だけでもいいのでお越しいただけるようにスケジュールを確保して頂けると嬉しいです。
--------------------------------------------------------------------
[開催概要]
Title: Tokyo Motioncontrol Network tech-cafe Vol.01
Leap in the Cloud / LeapMotionで学ぶ3Dセンサー開発(仮)
日時 :
Day1 2014年04月21日
Day2 2014年04月22日
Day3 2014年04月23日
18:30開場 / 本編19:00〜22:00
※全日程参加する必要はありません。
また、途中参加・途中退出可能(予定)
開催場所:
(株)トーメンエレクトロニクス 8Fセミナールーム
(東京都港区港南1-8-27 日新ビル)
参加費: 1,000円(税込)
※3Days共通、出席すればするほどお得!
持ち物: PC(必須)、LeapMotionセンサー(任意)
※PCにはLeapMotion用SDKをインストールして持参ください。
※LeapMotionセンサーをお持ちでない方も、
現地貸し出し可能です。(一人1台回らない可能性あり)
定員: 65人(先着順)
プログラム:
1) セミナー
4/21(月) Day 1 : あなたが知らないLeapMotionの基礎
4/22(火) Day 2 : 誰もがつまづく3D認識の課題
4/23(水) Day 3:LeapMotionの可能性は雲の中に
2) ハンズオン/Q&A (各自による開発と講師によるアドバイス)
※事前登録のメルマガにて課題を配信する予定です。
課題には事前に目を通して、作業をした上でご参加頂くと
より楽しめると思います。
※セミナーは各日別途内容です。
※セミナー中も、開発をしたい方は作業可能です。
--------------------------------------------------------------------
セミナー部分の登壇者には初音も含まれています。
Leap Motion必須のWindowsストアアプリが審査に通りました。
Leap Simon Says:
http://apps.microsoft.com/windows/ja-jp/app/leap-simon-says/74b15f30-6f6b-423a-beec-a4b91f865ff5
第一話:http://hatsune.hatenablog.jp/entry/2013/11/04/145301
第二話:http://hatsune.hatenablog.jp/entry/2013/11/06/090944
第三話:http://hatsune.hatenablog.jp/entry/2013/11/07/115052
そして最終話です。
最後の最後に残ったネックは、127.0.0.1を使うために使用する機能に「インターネット(クライアント)」を加えている事と、年齢区分で3歳以上にしている点でした。
つまり要件6.2です。
年齢区分とレーティング機関:http://msdn.microsoft.com/en-us/library/windows/apps/xaml/hh694080.aspx
更に区分をゲームとしていると、CEROなどのレーティング機関からの証明書も必要だとのことです。
最終的には12歳以上とすることでクリアしました。
ストアアプリとして提供するためのまとめ
- Leap Motion対応アプリは、DLLを直接使用するのではなく、Leap Motion WebSocket Serverと連携して動作するように作成
- 必要な機能として「インターネット(クライアント)」を付与
- Leap Motionからのデータがないときに、「Leap Motionと接続が必要」な点とローカルループバック許可のガイドを表示
- 上記のガイドは申請時のアプリの詳細、審査担当者へのコメントにも記載
- 年齢区分は12歳以上にするのが無難
実際のコードについては少しだけブラッシュアップして近日中に公開します。その際は、VB.NETだけではなくC#版も公開予定です。
Leap Motion使うためのベースとしてお使いいただけると思います。
なお、アプリの説明とローカルループバック許可の詳しい手順を記載したページも設置しましたので、合わせて参照いただければ幸いです。
Leap対応アプリがWACKチェッククリアして審査リジェクト(1回目)
前回⇒http://hatsune.hatenablog.jp/entry/2013/11/06/090944
前々回⇒http://hatsune.hatenablog.jp/entry/2013/11/04/145301
認定レポート
- 総合結果: 不合格
- セキュリティ テスト: 合格
- 技術的な適合性: 合格
- コンテンツの適合性: 不合格
お客様のアプリは、要件 1.2 を満たしていません。
- Leap Motionが必要だと記載されていない
- 審査担当者へのコメントで「本アプリの検証にはLeap Motion Deviceが必要」とあるがアプリのDescriptionページに記載がない。
⇒
ちゃんと説明文にも記載しているのですごく不思議な指摘なので、再提出にあたり、審査担当者へのコメントでフォロー。
もしかしたら「検証には」って用語が悪いのかもしれないので「アプリの説明にあるように本アプリの動作には」に変更。
お客様のアプリは、要件 6.2 を満たしていません。
- アプリのコンテンツ (広告も含む) が、選択された年齢区分に合わない。
⇒
審査担当者向けコメントで、ネットワーク許可はローカルループバックなので動作している端末でのみ動作しているので、3歳以上という年齢区分でも安心して使ってもらえると説明。
お客様のアプリは、要件 6.8 を満たしていません。
- 日本語版なのに Simon Says って英語使っている。
⇒
審査担当者向けコメントで、デザイン上英語使っている部分があるよと実例つけて説明。
さて、どうなることやら。
Leap対応アプリがWACKチェッククリアして審査中
「Windows 8 Clinicの特別診療科目-相談科」にも相談して回答いただきましたが、やはり、leap.dllやleapCSharp.dllを使う方法はこの2つがWACKを通るようにしてもらうしかないようです。どこかにソース公開されていたらいのですが。
対策3:WebSocketでつなげる
ということで、まあこれなら大丈夫だろうと考えていた方法で対応します。ほんとはなんか負けた感じがして嫌なのですが。
その方法とは、Leap Motionが標準装備しているWeb ServiceにWebSocketでつないでJSONでもらった位置情報をLeapSharp.NET.4.0.dllのライブラリからの戻り値のように加工してしまう方法です。
この方法であれば、leap.dllもleapCSharp.dllもその先のVC++ 2010ラインタイムも関係なくなります。
予想通りWACKも無事通り、ストア申請の自動チェックも問題なくクリアしています。

ここから先は、審査担当者へのコメントに「本アプリの動作にはLeap Motionが必要です。また、127.0.0.1へのループバック通信を行います。」と記載して専用デバイスが必要であることを伝えています。
さて、ここでもう1点注意しなければならないのは、Package.appxmanifestでの指定です。機能タブで「インターネット(クライアント)」のチェックがあることを確認してください。デフォルトでチェックされているので意図的に外していなければ大丈夫です。
さて肝心のWebSocketでのやりとりですが次のようなコードで行っています。
Public Async Function Connection() As Task
Try
Client = New MessageWebSocket
Client.Control.MessageType = SocketMessageType.Utf8
Await Client.ConnectAsync(New Uri("ws://127.0.0.1:6437/"))
Me.MessageWriter = New DataWriter(Client.OutputStream)
Catch ex As Exception
End Try
End Function
審査が完了したら改めてお知らせします。