Building holographic apps with Unity抜粋

Holographic development documentationのBuilding holographic apps with Unityの、気になる部分をメモ。

Unity development overview

Sceneの設定

  • Main CameraのPositionを(0,0,0)にする。
  • Main CameraのClear FlagsをSolid Colorにする。
  • Main CameraのBackgroundを#00000000にする。
  • Main CameraのClipping Planes - Nearを0.85にする。

プロジェクトの設定

  • 使うAPIによって、Player SettingsのPublishing SettingsにあるCapabilitiesをチェックする。
  • Build SettingsのPlatformをWindows Storeにする。
  • Build SettingsのSDKをUniversal 10にする。
  • Build SettingsのUWP Build TypeをD3Dにする。
  • Project SettingsのQualityの、Windows StoreのDefaultをFastestにする。
  • Holographic viewで表示させる場合は、Player SettingsのOther SettingsにあるVirtual Reality Supportedをチェックする。

Recommended settings for Unity

スプラッシュ画面

  • Unity Proライセンスが無い場合は、常にUnityスプラッシュ画面が表示される。変更できない。

ラッキングロス

Performance recommendations for Unity

後日、書く

Exporting and building a Unity Visual Studio solution

  • UWP Build Typeは、D3Dが推奨。システムキーボードを使う場合はXAML
  • Unity C# Projectsをチェックすると、Visual Studioのリモートデバッガが使えて、さらにスクリプトが編集できる。Unityとはファイルが分離されているので、Unityを編集したときは、再エクスポートが必要。
  • Configurationは、Debug,Master,Releaseの3種類。最適化とプロファイラに違いがある。

Best practices working with Unity and Visual Studio

まとめ

設定しておくと良さそうな項目は次のとおり。

  • Build Settings.Platform = Windows Store
  • Build Settings.SDK = Universal 10
  • Build Settings.UWP Build Type = D3D
  • Project Settings.Quality.Windows Store.Default = Fastest
  • (Holographic view) Player Settings.Other Settings.Virtual Reality Supported = checked
  • Main Camera.Position = (0,0,0)
  • Main Camera.Clear Flags = Solid Color
  • Main Camera.Background = #00000000
  • Main Camera.Clipping Planes - Near = 0.85

HoloLens開発はじめました

HoloLensのアプリケーション開発のために、Unityはじめます。

公式のDevelopment overviewによると、

2D apps can use any tools for building Universal Windows Apps suited for environments like Windows Phone, PC and tablets. These apps are experienced as 2D projections and can work across multiple device types.

Holographic apps need tools designed to take advantage of the Windows Holographic APIs. In particular, if building an app we recommend using Unity. Developers interested in building their own engine can use DirectX and other Windows APIs.

Holographic appsは、UnityもしくはDirectX

くうさんによるとこれでも出来るらしい。

github.com

DirectXはちょっと辛そうなので、Unityで。

ざざっとネットを漁った感じだと、大きく2つのことをマスターしないといけないようです。

  • Unityのこと
  • Holographic appsのこと

それぞれについて、参考書を頼りにやっていきたいと思います。

Unity5の教科書

http://amzn.asia/3P6jwtKamzn.asia

他のUnity5本と比べて、仕組みを理解してもらうことを主眼に、丁寧に構成されていると感じました。C#プログラミングの説明が少ないのも好印象。

Develop Microsoft HoloLens Apps Now

www.apress.com

現時点、本だとこれしか見当たらない。

chibi:bitの開発環境

chibi:bitの開発環境を一通り確認しましょう。

f:id:matsujirushix:20170203220846j:plain

chibi:bit開発環境

chibi:bitの公式な開発環境chibibit/ideです。 ここでは、ブロックとJavaScriptの2種類でプログラミングでき、画面上でchibi:bitをシミュレートして動作確認することができます。 また、ブロックとJavaScriptを相互変換(ブロック→JavaScriptJavaScript→ブロック)も可能です。 f:id:matsujirushix:20170203221255p:plain

micro:bit開発環境

chibi:bitは、BBC micro:bitの互換機なので、micro:bitの開発環境を使ってプログラミングしても問題ありません。 micro:bitの開発環境は、現在、5種類(+モバイルアプリ)もあります(!)

こちらのWebページから、使いたい開発環境の"Start with this editor"をクリックします。 簡単に扱えそうなものから順に見ていきましょう。

Touch Develop

タッチパネル操作しやすい開発環境です。 見た目はテキスト入力ですが、左下に並んだボタンをクリックしてプログラミングします。関数電卓のような操作感です。 f:id:matsujirushix:20170203223508p:plain

Block Editor

ブロックでプログラミングする開発環境です。 Touch Developに変換することができます。 f:id:matsujirushix:20170203224149p:plain

JavaScript

JavaScriptでプログラミングする開発環境です。 JavaScriptとはいえ、テキストエディタではなく、マウスでポチポチと操作します。 f:id:matsujirushix:20170203224804p:plain

Python

MicroPythonでプログラミングする開発環境です。テキスト入力です。 f:id:matsujirushix:20170203225326p:plain

Microsoft PXT

ブロックとJavaScriptの2種類でプログラミングする開発環境です。 chibi:bit開発環境と同じ。(というか、Microsoft PXTがchibi:bit公式に、という流れですね。) f:id:matsujirushix:20170203225746p:plain

一通り眺めてみると、

これがベストっていうのは無く、、、 好きなものを使いましょうw

KH-270の改造メモ3

KH-270の改造メモです。

先回、ここまで実装しましたが、 f:id:matsujirushix:20170110223843j:plain

トランジスタアレイを表裏反対にしたほうが電源の配線が楽だったなこれ。

電源の配線が微妙になりそうだったので、トランジスタアレイを載せ直した。

f:id:matsujirushix:20170114162409j:plain

2個のトランジスタアレイからそれぞれ入力7本出力7本、1個のトランジスタアレイから入力2本、出力2本の、計32本を結線。

f:id:matsujirushix:20170114163309j:plain

電源とI2Cを引きだしておき、編み機に収納。

f:id:matsujirushix:20170114163653j:plain

KH-270の改造メモ2

KH-270の改造メモです。

ソレノイドの駆動をmbedから制御できるよう、トランジスタアレイの入力部分にI2C-GPIOを差し込む。

www.switch-science.com

標準搭載のマイコンからの制御を無効にして、mbedからの制御だけにするなら比較的簡単なのだが、鹿ちゃん(←依頼主)からの無効化しないで圧力があり...

まず、トランジスタアレイを外す。

f:id:matsujirushix:20170110221337j:plain

I2C-GPIOをオモテに配置するスペースは無いので、ウラに貼り付けなければいけない。 ウラに貼り付けたときに、既存の配線と短絡しないよう、I2C-GPIOの裏面をポリイミドテープで絶縁する。さらに、厚手の両面テープを貼り付け。

f:id:matsujirushix:20170110222156j:plain

基板のウラに貼り付ける。

f:id:matsujirushix:20170110222336j:plain

ちょっと傾いて付いてしまったが、見なかったことに。

UEW0.26mmで、基板から出てくる制御信号を、I2C-GPIOに入力する。

f:id:matsujirushix:20170110222643j:plain

トランジスタアレイを載せやすいよう、L型ピンヘッダで嵩上げして、

f:id:matsujirushix:20170110223037j:plain

トランジスタアレイを載せる。

f:id:matsujirushix:20170110223231j:plain

トランジスタアレイを表裏反対にしたほうが電源の配線が楽だったなこれ。

UEW0.26mmで、I2C-GPIOの出力を、トランジスタアレイに入力する。

f:id:matsujirushix:20170110223843j:plain

この状態で、編み機に基板を収納してみたが、特に当たりは無かったので、一安心。

ここからは体力作業だー

Inkscape 0.92を動かしてみました

Inkscapeの新バージョンがリリースされたみたい。

窓の杜 on Twitter: "フリーのドローソフト「Inkscape」が2年ぶりの更新。グラデーションメッシュに対応 https://t.co/DqLlSjTYXb https://t.co/cPsxOuP2RB"

早速、動かしてみたいと思います。

ダウンロードサイトはこちら。

download | Inkscape

わたしはSurface Pro 2を使っているので、64bit-Windowsのinstaller(exe)をダウンロードしました。

で、インストールして起動。相変わらず起動には時間がかかりますが無事起動できました。

f:id:matsujirushix:20170106193744p:plain

以前のバージョン(前面)と比較すると、メニューの文字やアイコンがクッキリ表示になっています。これはうれしい。

f:id:matsujirushix:20170106195052p:plain

f:id:matsujirushix:20170106195152p:plain

所々、文字化けしていたのも、改善したようです。

■旧バージョン(0.91) f:id:matsujirushix:20170106195341p:plain

■新バージョン(0.92) f:id:matsujirushix:20170106195237p:plain

わたしが時々使うビットマップのトレースも問題なし。

f:id:matsujirushix:20170106204739p:plain

少し触っただけではありますが、新バージョンの方が良さそうでした。

3Dスキャン & 3Dプリントでオリジナルフィギュアを作ってみました

この記事を書いているときに、ファブラボ北加賀屋さんに同様の記事がアップされました。 そちらと合わせて読んでもらえると楽しめます。^^

Facebookで、

f:id:matsujirushix:20161228173013j:plain

f:id:matsujirushix:20161228173052p:plain

というコメントで盛り上がり、カネマツさんの「フチ子さん」を作ってみました。

3Dスキャン準備

3Dスキャンするために、次の機材を用意しました。

Kinect for Windows Developer セット

3Dスキャンするためのセンサーで、Xbox One KinectセンサーとXbox One Kinectセンサーアダプターのセット商品です。

www.microsoftstore.com

Kinectはv1とv2の2種類ありますが、深度の解像度が高いv2を使いました。機能の違いを詳しく知りたい人はコチラをご参照ください。

USB3.0接続できるパソコン

Xbox One Kinectセンサーを接続するパソコンです。 Surface Pro 2を使いました。

www.microsoft.com

最新のKinect for Windows SDK

パソコンに、Kinect for Windows SDK 2.0をインストールします。

Kinect 用のツールとリソース

Kinect for Windows SDK 2.0でした。2014年から変化なし。

プロジェクター

3Dスキャンしている様子をパソコンから離れていても確認できるよう、プロジェクターを用意すると良いです。

3Dスキャン

SDK Browser (Kinect for Windows) v2.0を起動して、下の方にあるKinect Fusion Explorer-WPFのRunをクリックして実行します。

3Dスキャンの様子が分かるように、パソコン画面をプロジェクターで映しながら、3人で実行しました。

  • スキャンされる人(カネマツさん)
  • スキャンする人
  • パソコン操作する人

スキャンする人がKinectを持って、上下に動かしながら、スキャンされる人の周りをゆっくりと周って測定します。

測定距離が外れたり、早く回り過ぎると、エラーになってしまうので、慣れるまで少し手間取りました。画面右上の赤外線画像を見ながらゆっくりと周ると良さそうです。 測定距離が近すぎても遠すぎてもダメなので、結構難しいです。根気よくやりましょう。

f:id:matsujirushix:20161228225202j:plain

リアルタイムにパソコン上にスキャン結果が表示されます。

f:id:matsujirushix:20161228225322j:plain

その後、Create Meshをクリックして、スキャン結果をSTLファイルで保存します。

STLファイルを3D Builderで確認すると、スキャンした結果に余分なもの(イス、テーブル)があったり、穴があいていたりして、そのままでは3Dプリントできません。また、「オブジェクトの定義が正しくありません」と、データに問題があることが表示されています。

f:id:matsujirushix:20170101171325p:plain

3Dデータ修復

3Dデータの修復には、Meshmixerを使いました。

メッシュを減らす

スキャンしたそのままのデータだと、メッシュが多すぎて処理が遅いので、メッシュを減らしましょう。

全て選択してから、Edit->Reduceで、メッシュの数を減らすことができます。

f:id:matsujirushix:20170101173008p:plain

余分なデータを削除

削除したい部分を選択(ぐるっと囲うとか、ブラシ使うとか)して、Delキーで削除します。

f:id:matsujirushix:20170101172401p:plain

自動修復

Analysis->Inspectorで、自動で修復します。

f:id:matsujirushix:20170101211326p:plain

f:id:matsujirushix:20170101211335p:plain

File->Exportを実行して、OBJファイルで保存します。

確認

再度、3D Builderで開いて、エラーが発生しないことを確認します。

問題なければ、向きと縮尺を変更して、STLファイルで保存します。

f:id:matsujirushix:20170101211807p:plain

3Dプリント

3Dプリンターで出力します。

f:id:matsujirushix:20170101212726j:plain

f:id:matsujirushix:20170101212737j:plain

まとめ

  • Kinect v2 + Meshmixer + 3D Builderで、3Dスキャンと修復ができる。
  • 3Dスキャンするには、広い場所が必要。
  • スキャン中、スキャンされる人は動いてはいけないので、姿勢をキープするのが大変。
  • 3Dスキャンの途中で頻繁にエラーが発生した。スムーズにスキャンできるようになるには、時間がかかる。

f:id:matsujirushix:20170101213900j:plain