Spatial Mapping in Unity 日本語訳
11/14時点で途中です
Spatial mapping in Unity
Namespace : UnityEngine.VR.WSA.SurfaceObserver
このトピックは、どのようにSpatical Mapping があなたのunity projectの中で使うのかを説明します。 モノを置いたり、閉鎖したり(?)、室内の解析などをするために、ホロレンズ周辺の表面の三角メッシュを生成します。
Unityは、Spatial Mappingに関してフルサポートしています。開発者に、次のように提供されています
- Spatial Mapping コンポーネントはMixedReality Toolkit に存在します。これは、簡単で、すぐにSpatical Mappingを始めることができます
- 低レベルSpatial mapping API はすべての制御と、洗練されたアプリの特定のカスタマイズができます
Spatial Mapping をあなたのアプリの中で使用する場合、Spaial Perception(空間知覚) 能力は、AppxManifestをセットすることが必要です
Spatial Perception の設定
Spatical mapping データを使えるようにするために、Spatical mapping capability を有効にします
- unity エディタから、Player settingを開きます。
- windows Store タブをクリックします
- Publishing Setting を開きます。Capabilities の中のSpatialPerception をチェックします
注意:もしあなたがすでにVisual studio solutionにUnity Project をエキスポートしていたら、新しいフォルダにエキスポートするか、Visual Studio で、AppxManifestをセットしてください
Spatial mapping は、MaxVersionTested のleast 10.0.10586.0を必要とします
- Visual Studioにて、ソリューションエクスプローラのpackage.appxmanifest を右クリックし、ViewCodeをクリックする
- TargetDeviceFamilyを見つけて、MaxVersionTested = "10.0.10240" を、10.0.10586にする
- Package.appxmanifest を保存する
ユニティのビルドインSpatical mapping コンポーネントを使う
Unity は2つの簡単にSpatial Mapping をアプリに実装できるコンポーネントを提供しています。Spatial Mapping Renderer と、Spatial Mapping Colider です
Spatial Mapping Renderer
Spatial Mapping Rendererは、Spatial Mapping メッシュを可視化します
Spatial Mapping Colider
ホログラフィックコンテンツ(もしくはキャラクター)とのインタラクション、例えば物理をSpacial Mapping と使えます
ビルドインSpacial Mapping component を使う
おそらくあなたは、ビジュアライズと表面との物理的なインタラクションを行うために、二つともアプリに追加するでしょう。Unityアプリの中で、二つのコンポーネントを使うために: ‘ 1. あなたがspacial surface meshes を見つけたい場所の中央のgameObject を選ぶ 2. インスペクターviewで、Add Component > AR > Spacial Mapping Colider or Spacial Mapping Renderer を選ぶ
Unity documentation site にて、さらに詳しく、どのようにこれらのコンポーネントを使うのかを紹介しています
ビルドインSpatical Mapping コンポーネントを超える
これらのコンポーネントは、ドラッグアンドドロップで簡単にSpacial Mappingを使うことができます。もしもっと先に行きたいとすると、2つの代表的な方法があります
- あなたの自己レベルメッシュ処理をして、Low level Spatial Mapping Script APIを見る
- Higher level mesh analysisをする。Mixed RealityToolKitの、SpacialUnderstangin library を見る
高レベルメッシュ解析 SpacialUnderstanding
Mixed RealityToolKit は、Unity APIsの上にビルドされた、ホログラムの開発に便利な設定コード集です
Spacial Understanding
ホログラムオブジェクトを実空間に置いたときに、しばしばそれはSpacial mappingのメッシュとサーフェスを越えることが望ましい。手続き的に置く動作をした時に、高レベルの環境把握が望ましい。これは、一般的に何が床であるのか、天井か、壁かを決めるときに必要です。さらに、この性能は、ホログラムを置くときに、一番望ましい実空間はどこなのかを決める事に対して最適化されます。
若いトチの実と破片を開発しているとき、Asobo studio は、この目的のための部屋の解析手法について、問題にぶつかりました。 各ゲームそれぞれのニーズがあると。でも、それらはSpacial Mapping technologyのコアの部分を共有していると。 HolotoolKit.SpacialUnderstanding library は、この技術をカプセル化しました。あなたが簡単に、壁の空のスペースを判定し、モノを天井に置く。そして、キャラクタが座るべき場所であるのかを無数の質問に対して判定する。
全てのソースコードがふくまれていて、あなたのニーズによってカスタマイズすることができ、コミュニティとともに改善していけます。C++をする人のコードは、UWP dllにラップされており、MixedRealityToolKitの中に含まれているプレファブをUnity に展開できます。
Understanding Modules
3つの基本的なインターフェースが、モジュール(シンプルなサーフェスや、空間クエリの地形、オブジェクトの形、制限ベースのオブジェクトを置くこと)によって示される。それぞれについては、下で説明します。さらに、3つの基本的なインターフェースである、レイキャスティングインタフェースはタグ付けされたサーフェスタイプや、すきのないプレイスペースのメッシュを回収するときに使われ、コピーできます。
MixedRealityToolKitforUnity wiki - 和訳
自分の勉強のために和訳します
原文
MixedRealitytoolkit-Unity wikiにようこそ!
- 現在の推奨するUnity ⇒ 2017.1.2f1
- 最小限必要なunity -> 5.6.3p4
- 最新のMixedReality Tool Kit -> 2017.1.1
開発者が簡単に作れるように、ウィキを使おう
- コンセプト: ホロレンズと、HoloToolKitのコンセプトをほかの読み物と一緒に理解しよう
- シナリオ:HoloToolKitコンポーネントがあなたの開発を助けるシナリオを列挙します
- デザイン:HoloToolKitコンポーネントに関連するデザインをシェアします
HoloToolKit Menu
HoloToolKitは簡単に様々な設定を行える、埋め込まれたメニューをunityに提供します
設定する
設定のサブメニューはホロレンズの開発における一般的なプロジェクトとシーンにおける変更を一括で行う機能を提供するものです 変更の詳細については、Unity Development Overviewを参照してください
- Hololens Scene Settingを適用する
このオプションは、一般的なシーンの調整、すなわち、メインカメラの位置、flagsを空にする、背景色などです
- Hololens Project Settings
このオプションは、一般的なプロジェクトのセッティング、すなわち、ビルドプラットフォームをD3Dにする、クオリティのデフォルト値をfastistにする、そして、Virtual Reality support for Hololensを有効にします。
- ShowHelp
Unity Development Overview を、あなたのデフォルトブラウザで表示します
- sharing Service
shating serviceを実行する機能を提供します
- Launch Sharing Service
この実行ファイルは、あなたのプロジェクトルートフォルダにあります。これは、Sharing Service Serverがローカルモードのときに立ち上がります
- Launch Session Manager
簡単に新しいセッションを作り、現在のセッションを見ることができます
- Launch Profiler
あなたがライブで見ているsharing service plofilerを立ち上げます
- UAudioTools
このサブメニューは、UAudioToolのための、全てのメニューを含みます
- Profiler
UAudio objectsにプロファイルを使います
Input
Hololens は、ユーザの視線、ジェスチャー、声、クリックを認識します
視線、カーソル、照準
基本的なことを理解するために、Gazedocumentation と、 Gaze in Unity を読んでください
私たちが実世界の様々な場所を見るように、人、床、もの、ライト、などたくさんの情報を処理します。Mixed reality scenario と、hologramをそこに追加した時に、私たちは、私たちの世界に更に情報を追加したことになります。したがって、大切なモノの情報をユーザーにフィードバックしたり、もしかすると必要に応じてハイライトさせることが非常に重要なです。
Holograms 210 Gaze academy tutorial はさらに詳しくこのコンセプトを紹介します
あなたはホログラムのカーソルを作り、そのカーソルを表示させる方法を知っています。このように、アプリケーションの文脈とユーザーの意図とをつなげます。例えば、もしあなたがホログラムショッピングアプリを作るとしたら、ユーザが商品を見たときに、おそらく”$”マークと値段を表示させるでしょう。そして、違う色もあることを表示させるでしょう。なぜなら、ユーザはその商品を見ているので、おそらく興味があるからです。開発者とデザイナーは、良いカーソルを作って、同様に機能もよくすることができます。
Cursor documentation で、デザインガイドライン と、ユーザーにフィードバックを与える方法を紹介します
ダーツで遊ぶとき、私たちは、小さなターゲットは当てるのに難しいと知っています。同じ理論がホログラムの視線について当てはまります。 ユーザは好ましくない頭の振れが自然に起こり、意図されない周辺環境の動きがあります。 あなたはユーザーのターゲット合わせを、いくつかのターゲット合わせテクニックを調べることができます。 HoloToolKitの中にある、GazeStabilizerは、その中の一つです。
詳細は、Gaze targeting セクションを読んで下さい
ジェスチャー
Gesture Design, Gestures, Gestures & Motion Controllers in Unity を、基本的なコンセプトを理解するために読んでください
HoloToolKit は、あなたにすぐに、基本的な GestureManager スクリプトを提供しています。これは、air -tapジェスチャーをセットアップします
Holograms 211 Gesture academy tutorial は、さらに詳細な、手の検知やフィードバックなどのコンセプトを紹介します。
声
Voice Design , Voice Input, Voice in Unity を、基本的なコンセプトを理解するために読んでください
HoloToolKitは、KeywordManagerを提供しています。これは、コードブロックが付随する簡単なボイスコマンドです
Holograms 212 Voice academy tutorial は、詳細なコンセプト、声のコンテキストの認知度、音声入力について説明しています
OpenCV2.4.9 を Mac にインストールしてテストする。 Xcode5,HomeBrew
こんにちは nanaju です。忘備録なのでかなり雑です。
先輩がごりごりopenCVをつかっていて、できたら便利そうだなぁと思い、導入してみました。
ちなみにプログラミングは初心者です。
先人の方のブログを見つつやったのですが、ところどころ違った方法でないと正しくいかなかったので、そこらへんをメモします。
お世話になったサイトさま
【OpenCV】OpenCV2.4.7をMacにインストールしてサンプルを動かしてみる - キリンを召還するブログ。
Homebrew でOpenCVをインストールする方法 - Qiita
Homebrew をインストールする
もう最初から、Homebrewってなんぞや!!って感じだったのですが、3つ目のリンクさまで詳しく書いてあって助かりました。
まずはこの通りにインストールしませう!
書いてある通りに!
最後に、
$brew doctor
を忘れずに。
私はXcodeの規約に同意してなかったので、warningされました。
OpenCVをインストールする
Homebrew でOpenCVをインストールする方法 - Qiita
この方に従ってみてください!
サンプルプログラム
【OpenCV】OpenCV2.4.7をMacにインストールしてサンプルを動かしてみる - キリンを召還するブログ。
このかたの記事の途中からのサンプルプログラムというところからやってみてください!
ですが、私はいろいろと引っかかりました....
1 Header Serch Pass どこだよ
Xcodeを初めて使ったので、わからず。 左上、デフォルトではbasicになってますがこれをallにしたら見つかります。
2/opt/local/include、/opt/local/lib が有効じゃない
これはちょっとハマりポイントだったのですが、
Finder で指定して移動しようとしても出てこない... え、もしかしてOpenCVインストールできてない??と思い HomeBrewで確認したら、ちゃんと入ってる。
そこで、このちょっと後にでてくる、ライブラリ名をそのまま ターミナルで検索してみました。
そしたら、あった。確かにちょっとlib ディレクトリがある場所が違いますね。
lib ディレクトリがあるなら include ディレクトリもあるでしょー
という訳で、ありまして、
この
Header Serch Pass で指定するディレクトリは、以下の画像のようになります。
3ライブラリファイルが探せない!!!
次に
Liblary Search Pass で ライブラリを指定するのですが、リンク指定したい、
ibopencv_core.2.4.9.dylib
libopencv_highgui.2.4.9.dylib
libopencv_imgproc.2.4.9.dylib
が+ボタンを押したリストにはまずブログ執筆者さまのように表示されないのですが、
Add other から直接ファイルを探しにいこうとしても、探せない...
ディレクトリを検索しても出ませんでした。
そこで、Add other から選択するのはあきらめて、
Finder からドラック&ドロップすることにしました。
Finder で、移動からフォルダへ移動を選択し、以下のようにパスを入力してそのまま
/lib に飛びます。
そして、その中から
ibopencv_core.2.4.9.dylib
libopencv_highgui.2.4.9.dylib
libopencv_imgproc.2.4.9.dylib
を探しだして、ドラック&ドロップして完了です。
これで、後は、
記事に書かれているサンプルプログラムを
main.cppに書いて Build するだけです! (再生マークね)
記事の中に、OS10.7用なので、Target 設定を変えてくださいとありますが、OS10.9では問題なく動作しました。
インカメか起動して自分の顔が映ります(笑)
はーやっとできた。
先輩方がやっているようなOpenCVを使った高度なアプリ作成までにはまだ時間がかかりそうですが、
どんどんやって行きたいと思います。
(ペンギンロボのAUV(自立制御型水中ロボット)化がしたい...)
KHR-3HVに 新しくサーボを追加して動かす方法
KHR-3HV という近藤科学のロボットが背中にしょっているマイコンで新しく付けるサーボモータをうごかします。
そもそも、何というコントローラをしょっているのか。
→RCB4というコントロールボードらしい。
pin配置はこんな感じ。
出典はhttp://robosavvy.com/forum/viewtopic.php?t=7862です。
rcb4リファレンスセット
http://kondo-robot.com/faq/rcb-4-reference-ver-2_0
こっちの方が最新
http://kondo-robot.com/faq/rcb-4-reference-ver-2_2
source/obj/release/RCB-4HV command Generator
なぜか、RCB-4HV command Generator と RCB-4HV command GeneratorLEがあり、リファレンスには、RCB-4HV command GeneratorLEと表記があるが、エラーでexeファイルを開くことができない。
RCB-4HV command Generatorwo
を開くと、ハンドルされていない例外があると表示される。
レジストリ値 [HKLM\Software\Microsoft\Fusion!EnableLog] (DWORD) を 1 に設定してください。と出てくる。
スタートでregedit.exeを見つけて、レジストリエディタをだす。
ここに、レジストリエディタの使い方があった。
http://esupport.trendmicro.com/solution/ja-jp/1309040.aspx
てか、そもそもレジストリって何?
http://www.lifehacker.jp/2010/03/100318registrywtf.html
良さそうなページがあったのですが、理解の範疇を越えました。
そしたら、実はこれはpcからコントロールする場合だったようで、
今回やりたいのはコントローラから制御だったので、
違う方法でできるとの事。
新しいサーボに新しくIDを振り分けて、使えるらしい。
ということで、付属のCDROMについてきたpdfを一通り読み漁ったけれども...!?
...無い。
無い...
そしたら実は近藤科学のHPにありました。><
追記 2014/04
KHRには、デフォルトのサーボから+5軸追加できるようになっています。
そこで、+5軸のサーボを追加して、シリアルの線を伸ばすことで、Heart to Heart でKHRの好きな位置につけたサーボモータが動かせるようになります。