【ハニセレ・JG2版権キャラクリ】 大石泉祭り【モバマス】
Kinect for Windows v1.8 スケルトントラッキング(骨格認識) サンプルプログラム (C++) ~MSR_NuiApi.hは死んだ、NuiApi.hでの環境構築~
これ以上犠牲者を出さないように、めちゃくちゃ分かりやすく、引っかかりやすいタイトルで書きました。
2010年に発売されて以来、興味本位で購入したものの押し入れの奥でホコリ被っていそうなKinect v1。
いざ取り出して使ってみようとするも、サンプルプログラムは2010年~2012年のSDKの古いバージョンのサンプルばっかで動かねえよボケナスってブチ切れてインターネットの海を彷徨って時間を無駄に過ごしている人も多いのではないでしょうか。特にアカデミックな分野で 無 理 矢 理 使わされてる学生の方々。
この記事は以下のような方を対象としております。
・Kinect v1とv2とXBOXの三種のうち、v1(for Windows)を持っている
・C++でKinect v1のサンプル動かしたいけど設定めんどくてグラフィカルな表示はいらない
・MSR_NuiApi.hをNuiApi.hに書き換えたは良いものの設定が分からずC++のサンプルプログラムが動かせない
C#で動かしたい方は、書籍やネットに動くサンプルがたくさん転がっているのでそちらを参考にしてください。
少し小言を。
なんでC++かというと、C言語で書かれたハードウェア制御のプログラムを簡単に絡められる(文法同じだから脳死でできる)のと、DXライブラリで簡単に描画できるから。
「ワイ、おもろいコントローラー作ったで~、Kinectで身振り手振りも使って操作もしたいけん、そんでもってゲームに反映させたいんや!」って分野にはかなり需要がある。いわゆるインタラクション分野ですね。土下座ダンスがある某ダン○ボとかそういうイメージ。
すぐ実践できて参考になるC++のサンプルがネットにないのよね。まず、環境設定すら省いてるようなサイトしかヒットしない(書籍買えってこと)上に、バージョンもβとかv1.0のものばかりで書籍の環境設定すら現行のv1.8では役に立たない。
OpenNIやらOpenCVが必須だの本やサイトにあるけれど、初心者は新しい言葉が乱発してそれぞれの言葉と概念、その関係性が理解できないんですよ。
こういうデバイスに興味持った人はサンプルが動けばうおーすげー!とはなるのだけれども、プログラミング以前に環境の構築で躓いて時間を浪費してしまい、環境ができる頃には感動が冷めてしまう。TAとしても必要のない準備の時間は非常におもろくない。
ムシャクシャしてきたので自分用の覚書としてこの記事を書くまでに至ります。
ほいでは、前置きはこのくらいにしておいて、環境構築に移っていきます。
とりあえずインストールしとけってものは、たった2つです。
・Visual Studio 2015
Overview of Visual Studio 2015 Products
Visual C++ 2010 Expressが入ってるなら入れなくてもいい。
でも、どうせ色んな言語使うのならまとまってる2015使ったほうが楽です。
Download Kinect for Windows SDK v1.8 from Official Microsoft Download Center
これに付属(?)している開発ツールキットも動作確認に必須です。
全部インストール終わったらサンプルの動作確認をしてください。
C:\Program Files\Microsoft SDKs\Kinect\Developer Toolkit v1.8.0\bin\
この中に色々サンプルが転がってるので触ってみてください。動かない場合は
・Kinectの電源を入れ忘れてる
・ドライバがインストールされていない
などが考えられます。他のサイトに対処法がたくさん乗ってますので適宜参照してください。
DepthBasics-D2D.exeのような関節の点が今回組むプログラムの中で動いています。
SDKの動作確認ができたらプログラミング環境の構築に移ります。
①新規プロジェクトの作成
まずはVisual Studioを開き、
新規作成 > 新しいプロジェクト > C++ > Win32コンソールアプリケーション
と選択し新規プロジェクトを作成します。
プロジェクトの名前は「KinectTest」とでもしておきましょう。
OKを押すとアプリケーションウィザードが開きますので 次へ を押します。
ウィンドウ中央の "追加のオプション" の項目に 空のプロジェクト(E) がありますので、チェックボックを付けてから完了をクリックしてください。
②プロパティの設定
プロジェクト(P) > プロパティ (P) を選択し、プロパティページを開きます。
(Alt+F7で一発で開けるので慣れておくと楽ちんです。)
(2-1)インクルードディレクトリの設定
構成プロパティ>VC++ディレクトリ を開く。
"インクルードディレクトリ"にマウスを持って行くと▼が表示されるので<編集…>をクリック。
空欄をクリックし、[…]を選択。
C:\Program Files\Microsoft SDKs\Kinect\v1.8\inc\ [フォルダーの選択]
こうなっていればOKです。
(2-2)ライブラリディレクトリの設定
インクルードディレクトリの2つ下にあるライブラリディレクトリも同じように
C:\Program Files\Microsoft SDKs\Kinect\v1.8\lib\x86 [フォルダーの選択]
libまでではなく、 x86まで 入れてください。
(2-3)追加の依存ファイルの設定
構成プロパティ > リンカー > 入力 > (一番上にある) 追加の依存ファイル > 編集…
Kinect10.lib と記入してください。
以上で環境の構築は終了です。
次からは実際に使えるサンプルプログラムに移っていきます。
③サンプルプログラム
まずは以下のソースファイルをダウンロードして、自分の作ったプロジェクトと同じフォルダに入れてください。デフォなら
C:\Users\[ユーザ名]\Documents\Visual Studio 2015\Projects\KinectTest
に入れておけばOKです。
フォルダに入れ終わったらソリューションエクスプローラのソースフォルダを右クリックし、
追加 > 既存の項目(G) からKiectTest.cppを選択してください。
ソースはたったこれだけでOKです。楽勝な感じがします。
次に以下のソースファイルをダウンロードして、先ほどと同じフォルダに入れてください。
ソリューションエクスプローラのヘッダーのフォルダを右クリックし、
追加 > 既存の項目(G) からKinectSkeletonTracking.hを選択してください。
あとはビルドを実行し、Kinectの前で腕を振ってみてください。
このようにコンソールに表示されれば成功です。
身体を動かしてみて座標が対応して動いているのさえ分かれば、データ取得間隔を短くして平均値を取ってみたり、中央値取ったり、少しデータの使い方を工夫すれば腕のジェスチャ認識ができてしまいます。
実際に扱うデータはおそらくこの程度だと思いますので、単にデータを取得したいだけならOpenNIやらOpenCVは要らないと思います。
Kinect自体のプログラムは100行程度ですので、Kinectプログラミング自体がやろうとしていることの足を引っ張ることはないはずです。
ヘッダーファイルをいじって取得したい箇所を増やし、MMDなどのpmxモデルのボーンを対応させ、頂点と関節の関係を変換行列で組めばMMDのKinectトラッキングを自作できます。(憶測ですがDXライブラリ使っても1000行は軽く超えるはずなのでデータの使い方を工夫してモーションに無理矢理対応させたほうが何倍も楽にできるかもしれません。)
ネットに転がっているヘッダ名が"MSR_NuiApi.h"となっているものもKinect SDK内にある同名のヘッダファイルの"NuiApi.h"などに書き換え、環境も②の通りにすれば動くものがいくつかあったので今まで動かなかったサンプルをダメ元でやってみたら、もしかしたら動くかもしれませんね。
今日はこの辺で。質問などがあればコメントで受け付けます。
お腹空いた。家帰って飯食ってもう寝たい・・・(;´ω`)
デレステ講座(Live Groover Vocal burstイベントの走り方、獲得ポイントの目安について)
いよいよサイゲバンナムが本気を出してきましたね。
3日空けただけまだ良心があるけど、連続イベントとは修羅の国モバマスかよっ…
全属性にSRが一枚以上いてPro以上を安定してSランク取れる人に向けた記事です。
全属性Masterを安定してS出せるけど最後Master+選べるほどライフ残ってないよって方もどうぞ。
別に回復積まずともMaster+で回せるよ!という方は他のプレイヤーがどう走るかの参考程度に。
ルール説明
・選んだ難易度の曲をランダムで3曲+一定スコアでもう1曲
・曲目はその属性の曲と全属性からランダムに選ばれる
・ライフとコンボ数は全曲通して共用
(減ったら減ったまま次の曲、回復はスターを25個消費)
・獲得イベントptは難易度とスコアランクで一定
アイドル編成
ボーカル値の高いものが優先的に選ばれたおすすめ編成が最初に出てきますが、自分で組んだ編成に変更できます。
おすすめユニットで選ばれたVo編成、属性合ってないし回復も居ない・・・
上のユニット一覧から自分で設定したユニットに変更できます
今回のイベントでは
・Sランクが出せる
・途中で落ちない
の二点が重要ですので、ボーカル値よりも回復とスコアアップ、コンボボーナス系の3つを取り入れた編成でSランクを出せる総アピール値(応援入れて215,000↑出せるくらい)で組めれば十分です。
優先度は人によって変わりますが、周回の安定を優先すると以下のようになります。
・[最重要]Sランク出せること
・回復アイドル(安定性)
SR Cu緒方智絵里 Co北条加蓮 Pa赤城みりあ 、Rでも十分可
・コンボボーナス(続けばスコア大幅アップ)
イベントSR Cu[アタポン]安部菜々 Co[NB]高垣楓 Pa[絶叫]星輝子
・SR2枚以下とR混成の方は Vo値高いR再優先
あとはスコアアップ入れるなり、判定強化入れるなり好みのさじ加減で良いです。
走り方
まずは目標を設定しましょう。
ポイント報酬2枚取り、限定SR1枚取り、10000位圏内など、初日の今日中に明確な目標を立てましょう。焦って最終日にスターを割ってやっても大体間に合いません。
ProでSスコア4曲完走で379pt
MasterでSスコア完走で514pt
Master+で525pt
入ります。Master+クリアできるような方は自分で目標立てられる方だと思うので、今回はProとMasterのS完走でのそれぞれの目標に応じた走り方について考えていきます。
自然回復が4時間以上の朝(~8:00)・昼(12:00~)・夕(16:00~)・夜(20:00~)・夜(24:00~)の5つの時間区分を設けます。
今回はこの5つの自然回復時間を活用して走れると考えます。
初日の本日10/31の24:00から走るとすると自然回復では11/8の20時まで最大40回活用できる、という計算です。
表がこちらになります。
走れない時間は、時間があるときにその分のスターを割るものと考えてください。
一回あたり通しで10分はかからないですが、上位を狙うとなると取られる時間が多くなりますので、上手く時間を計算したり捻出してください。
スターの達成pt報酬は
100pt 50個
2000pt 50個
6000pt 50個
19,000pt 50個
24,000pt 50個
30,000pt 100個
40,000pt 100個
となっています。
期間中は毎日50個配布されるので+400個や、Sクリア報酬50個もカウントに入れておきましょう。
また、後半戦でまた新たなルールが追加される場合がありますのであくまでも同じペースの目安として参考にしてください。
●pt報酬2枚取り
ユッコ2枚取りは15,000ptとなっています。
ProでSの場合(一周完走379pt)
40回走ることになりますので、自然回復を全て活用することになります。
そんなことは普通に生活を送っていたらできないと思いますので、
"毎日"自然回復3回+時間あるときに2回石割り、または自然回復2回+3回石割りになります。
石の消費は800~1200個です。
pt報酬と配布とSクリアを合わせて600個スターが貰えますので実質200~600個消費することになります。
MasterでSの場合(一周完走514pt)
30回で達成ですので、毎日朝・昼・夜・夜中の4回、たまに1回サボりありがあっても大丈夫という計算になります。
石の消費は0ですが、あんずやエンゲルが怪しい方は少し消費するかもしれません。
600個のスターが貰えますので実質消費0で切り抜けられるかと思います。
●ランキングSR配布絶対安全圏内
これは2回のイベントでの目安ですが、25,000ptほどあれば5万位前後になれます。
SR2枚取りを目指したいのであればこれより少し頑張ると良いかもしれません。
ProでSの場合(一周完走379pt)
66回走ります。
朝・昼・夜・深夜+4か5回石割り程度のハードさです。
石消費は自然回復2~4回だと1700~2500個(実質1450~2250個)の消費になります。
これより上を目指すのであれば何回か苦手譜面で落ちてもMasterをできるようになった方がいいです。
MasterでSの場合(一周完走514pt)
49回走ります。
自然回復4回+1~2回
自然回復3回+3~4回
自然回復2回+4~5回
程度でしょう。
消費は850~1,650個(実質600~1400個)程度です。
●ランキング10,000位圏内
あくまで主観ですが、37,000pt程度貯めれば滑り込める程度だと考えています。
約50万人いるデレステプレイヤーの上位1万人がひしめく激戦区となり始めます。
MasterでSの場合(一周完走514pt)
72回走ります。
自然回復5+4回
自然回復4+5回
自然回復3+6回
自然回復2+7回
消費1,600~2,800(実質1,250~2,450個)程度です。
競り負けて10,000位未満となっても終了後に貰える250個のスターは変わりません。
Master+の場合(一周完走525pt)
71回になりますが、Masterとあまり差がありません。
●ランキング2,000位圏内
俺がゆかり担当Pだ!という方は是非ここを目指してください。
最終日はこの辺のボーダーの人が石を惜しみなく全力でカチ割って来ますので、焦らないように毎日確実にポイントを貯めていきましょう。
70,000ptもあればほぼ確実に入れるはずです。
MasterでSの場合(一周完走514pt)
137回走ります。
自然回復5+12~13回
自然回復4+13~14回
自然回復3+14~15回
自然回復2+15~16回
消費は4,850~6,450個(実質4,400~6,000個)です。
モバマスより全然安いです。リアル繁忙期でなければ楽勝ですね。
Master+の場合(一周完走525pt)
134回走ります。あんまり恩恵ないですね。
Masterなんて生ぬるい!難しい方が良いという方はこちらをどうぞ。
以上で今回のイベントの走り方についての講座を終わります!ご武運を!