2023年6月30日金曜日

Unityで作成したiOSアプリをvisioOS Simulatorで動かしてみた。

お疲れ様です。ZuQ9->Nnです。
WWDC2023で発表された、注目の新デバイス Apple Vision Proの開発環境が提供されました。
Apple Vision Proの開発環境は、Xcode、SwiftUI、RealityKit、ARKitの他、Unityがアナウンスされています。

Unity関連情報では、Bring your Unity VR app to a fully immersive spaceおよび Create immersive Unity appsという動画が公開されています。
この動画をチェックしてみたのですが、結局、具体的なUnityでのApple Vision Proのアプリ開発が理解できませんでした。。
このブログ記事を書いている2023年6月30日の現時点では、 結局のところUnityを用いたApple Vision Pro、visionOSアプリの開発は具体的な方法が無いようです。
この理解が間違っているなら、ご指摘して頂きたいです。

しかし、Apple Vision Pro、visionOSでは、iOSのアプリがそのまま動くのハズなので、
ひょっとしたら、UnityでiOSのSimulator向けに出力すればvisioOS Simulatorでもそのまま動くのでは?と思い試してみました。
今回の開発環境は下記です。
  • Unity 2022.3.3f1(Apple Silicon)
  • Xcode 15.0 bata2(15A516b)
  • macOS Ventura 13.4.1
  • ハードウェアは、M2 MacBook Air

今回は、アプリが起動することが確認できれば良いので、とりあえず、Cubeをひとつ表示するアプリを作成します。
これは、必須では無いのですが、プロジェクトを開くときに、UnityでiOSを選択しておけば、Swithc Platformを行う手間が省けて便利です。

Unityが起動したら、Hierarchyから、+ > 3D Object > Cubeを選択して、Cubeを配置
Cubeの配置が終わったら、Unityのメニューバー Edit > Project SettingsでProject Settingsを開き、iOSのタブを選択
Playerから Other SettingsのTarget SDKをSimulator SDKに変更
最後に、Unityのメニューバー File > Build SettingsでBuild Settingsを選択、Add Open ScenesでScenes/SampleSceneを追加
PlatformがiOSになっているのを確認後、Run in Xcdoe を v15.0 / Applications / Xcode-beta.appを選択、
Build And Runボタンを押下する
アプリの保存のダイアログが開き、New Folderで新規フォルダ作成してChooseボタンを押せば、Xcode15.0 bataが自動で起動します。これで、Unity側の作業は終了。

Xcodeがひらいたら、左のNavigationよりUnity-iPhoneを選択、TARGETSのUnity-iPhoneを選択、Build Settingsのタブ、All、Levelsを選択後、Base SDKのUnity-iPhoneをvisionOSに変更
つづいて、TARGETSのUnityFrameworkを選択、Base SDKのUnityFrameworkをvisionOSに変更
次に、XcodeのメニューバーからProduct > Destioation > Destinations Archtectures > Show Bothを選択
(これは、僕のMacがApple Siliconだったから必要だった、Intel Macの人は必要ないかも)
ふたたび、TARGETSからUnity-iPhoneを選択、GeleralのSupproted Destinationsの + を押して、 Apple Vision > Apple VisionでvisionOS Simulatorを追加
追加されたvisionOS SImulatorを選択
Xcodeのメニュー、Debug > Attach to Process by PID or Nameを選択、出現したダイアログにProductNameを入れて、Attachボタンを押すとvisionOS Simulatorが起動します。
アプリは自動起動しないので、visionOS Simulatorのアプリのアイコンをクリックします。起動は、こんな感じです。

いかがだったでしょうか?
個人的には、iOSアプリが、そのまま動くのは、予想以上にインバクトが強かったです。
すでにアプリをStoreにリリースしている人は、その時点でかなりのアドバンテージがあると言えますね。
今回の検証は、visionOSに正式に対応したUnityがリリースされれば、意味なくなるようには思えたのですが、なんとなく気になったので。。
くれぐれも、UnityでvisionOS用のアプリを作成した訳では無い点を勘違いしないでください。

2021年6月18日金曜日

Tokyo HoloLens ミートアップ vol.26でLTをしました

お疲れ様です。ZuQ9->Nnです。

2021年6月16日(水)Tokyo HoloLens ミートアップ vol.26が開催されました。
当初は、一般参加を予定していました。
たまたま、気になって調べ始めていた、SpatialAwarenessのSurfaceMeshesToPlanesについて
いったんまとまったので、ブログ記事にしようかとも悩んだのですが、
タイミング的に思い切って勉強会でのLT発表に切り替えて参加しました。
TLの資料はこちらです

今回は、オンラインということもあり、こちらも折角なので
リアルおっさんよりも、普段利用している幼女のアバターでのLTにしました。
アバターはある程度、好評なようでした。
プレゼンも、事前準備をしたためか、そこまでオタオタもせず、無事終えることができました。

アバターは、たまたま、普段から利用していましたが。
配信ソフトを利用する環境設定は、少し手間かなと。
アバター表示は、今回は、こちらのVMagicMirrorを利用しました。
アバターとデスクトップの映像を Obs Studioの仮想カメラを用いてキャプチャーTeamsで利用という構成です。
正直、たった5分のLTのために、ここまでコストをかけるのはとの思いもわいてきましたがプレゼンそのものは気軽になるような感覚が強かったです
このあたりのバランスはそれぞれの人の環境にもよるかもしれません。

発表内容にもあるようにSpatialAwarenessのSurfaceMeshesToPlanesは
マルチプラットフォーム対応なので、(旧)HoloLensの実機でも動作しました。
LTの時間関係上、実機での動作動画をはしょってしまったので、こちらにアップしておきます。



昔のHoloLens、久々に触ったこともあり、HoloLens 2との操作の違いもあり
Boomをすっかり忘れてしまって、あれ?どうやんだっけとかw
エビデンスの動画一つに四苦八苦していまいました。

Tokyo HoloLens ミートアップでのLTは、かなり久々というか
アウトプットそのものも、かなり久々で
量も少ないうえ、内容もイマイチかなぁとも悩んだのですが
何もしないより、少しを積み重ねていくほうがマシかなと。。。。
コロナの中において、業務でも、今、出来る自分のベストって何?
と悩ましい日々を送っており、今後のためにも、この体験が自分のプラスに出来ればと思います。
今後も機会があればチャレンジかな。意識しすぎて、辛くなりすぎない程度にと考えています。

2020年7月12日日曜日

HoloLens 2でも、勝ちまくりモテまくり?手から札束を出して札束風呂にしてみた。

お疲れ様です。ZuQ9->Nnです。

2020年7月2日に、HoloLens 2が日本でも、マイクロソフトWebサイトから
個人開発者でも購入可能になり、さっそく購入しました。
僕は2020年7月7日に受け取りました。

初代HoloLensを購入したとき、思い付きでつくた
こちらの札束風呂アプリ。。

勝ちまくりモテまくり? HoloLensを買ったのでバスタブに札束を敷き詰めてみた

お疲れ様です。ZuQ9->Nnです。 HoloLensを発作的に購入してしまいました。 ただ購入して遊ぶだけでは物足りず、 折角、開発者なので、それらしいことをと 思いついたのがこのネタです。 基本的にはHoloToolkit-Unityの Input > Tests > Secene InputManagerTest.unityのSceneで利用している InputHandleCallbackFX.csをもとに作成しました。 個人的には、もっと、あふれださせたかったんですが、オブジェクトを あまりに多く作り出すため、アプリが頻繁に落ちてしまいました。 この辺は、まだまだ修行不足ですね。。 ゆーじ さんの、このネタと、若干かぶってしまいましたが。 すでに作りこんでしまっていたのでもったいなかったのと なぜだか、どうしてもやっておきたい衝動を抑えきれませんでした。 GitHubにもアップしたので参考にどうぞ。 ちなみに、GitHubのリポジトリ名は「 勝ちまくりモテまくり」を ローマ字表記にしたもので このキーワードで画像検索をするとよく雑誌でみかける画像がでてきます。 このネタ、リアルでやるとすると、いくらかかるんだろう。。 実際やるには、ちょっと敷居が高くても バーチャルなら結構簡単にできるってネタは HoloLensのようなデバイスのアプリとして 向いているのではと思います。 今後もできる限り技術情報を発信していきたいですが 僕のことだからすぐ飽きちゃうかも ゆるりと楽しんでいくとします。

また、作ってみようかなと思い立ったのでやってみました。
とは言え、まったく同じものを作るのもつまらないかなと。。

HoloLens 2はもちろん、Air Tapも可能なのですが、
なんといってもハンドトラッキングが使えるのが特徴です。

なので、今回は、手から札束を出すというアプローチを試みました。
実装は、空のGameObject(名前は、SpawnPointにしました)に
MRTKで提供されている。HandConstraintPalmUpをアタッチメントして作成。


ただ、このままだと手のひらが画面に映ったときに札束がでてしまいます。
今回は、手を風呂のほう、つまりカメラから見えなくなったときに
札束をだしたかったので、onHandDeactivateのタイミングで札束を出すようにしました。。。

しかし、onHandDeactivateは何も表示されていない場合もイベントが起きるらしく
onHandActivateでフラグを立てて、最初はイベントが起きても
札束が出ないように制御しました。あと、Orbitalもアタッチしないと
手を動かしたときに、手の位置から札束がだせなかったりと。。
こんな簡単なアプリをつくるだけでも色々ハマりがあり勉強になるものですね。

ちなみに、アプリに用いた、札束のアセットはこちらです

Money Pack | 3D | Unity Asset Store

Elevate your workflow with Money Pack asset from Perfect Games. Find this & other great 3D options on the Unity Asset Store.
そして完成したアプリを実機で動かしたのがこちらです。


今回は、デプロイに手間取りました。Visual Studioにまでは出力できるのですが
実機にデプロイするときに、何度も、タイムアウトになってデプロイが失敗する現象がおきてしまって。原因はちょっとわかりません。。Releaseでデプロイしようとすると各自にタイムアウトになってしまいます。。誰が、何が原因かを教えていただければ。。

僕の場合はですが、とりあえずの回避方法はペアリングを一度外して実機を再起動とかすると再びデプロイの成功率がよくなりました。。(これが正しいのかは不明です。)

やはり、いつものパターンでアウトプットが滞っているのでなんとかしたいです。。
せめて、こんな感じのネタアプリが連発できたらなと。。

ゆるりとモチベーションを維持しつつ、続けていければと思っています。

2020年2月13日木曜日

EyeTrackingTargetを試してみた【MRTKv2.2 】

お疲れ様です。ZuQ9->Nnです。
これは、2020/02/08(土)から2020/02/09(日)に開催されたOsaka HoloLens "2" ハッカソン2020の準備のため

EyeTrackingネタをやろうと決めたときに調べた調査メモのようなものです。

EyeTrackingはずっと実機じゃないと使えないと思っていたのですが、
Unity上でもシミレーションできると知って試してみました。

今回の環境はUnity2019.
Microsoft Mixed Reality Toolkit v2.2.0 です。

Microsoft.MixedReality.Toolkit.Unity.Foundation.2.2.0.unitypackageのインポート
UnityのMixed Relaity ToolkitメニューからAdd to Scene and Configureを選択する等はいつも通り
わからない方は、以前の記事を参考にしてください。
EyeTrackingを利用するにはProfileの設定が必要です。

Hierarchyから、MixedRealityToolkitを選択し、Inpsectorを表示
InpsectorからCopy & Cutomizeをクリック

Cloning Profileのダイアログが出ますので、Profile Nameを決定してCloneボタンをクリック
Profile Nameは何でも良いのですが、今回はTextMixedRealityToolkitConfigurationProfileとしました。

InpsectorのProfileがTextMixedRealityToolkitConfigurationProfileに切り替わっていることを確認し
Profileの中からInputを選択 DefaultMixedRealityInputSystemProfileの横のCloneボタンをクリック

Cloning Profileのダイアログが出ますので、Profile Nameを決定してCloneボタンをクリック
Profile Nameは何でも良いのですが、今回はTestMixedRealityToolkitInputSystemProfileとしました。

InpsectorのProfileがTestMixedRealityToolkitInputSystemProfileに切り替わっていることを確認し
Input Data Providersの + Add Data Providerをクリック、New Data providerが追加されますので
▼マークをクリックして展開します。

New Data providerのTypeのドロップダウンから
Microsoft.MixedReality.Toolkit.WindowsMixedReality.Input > WindowsMixedRealityEyeGazeDataProviderを選択

Input Data Providersから Input Simulation Serveiceの▼マークをクリックして展開 DefultMixeRealityInputSimulationProfileのCloneボタンをクリック

Cloning profileのダイアログが出ますので、Profile Nameを決定してCloneボタンをクリック
Profile Nameは何でも良いのですが、今回はTestMixedRealityToolkitInputSimulationProfileとしました。

InpsectorのProfileがTextMixedRealityToolkitInputSystemProfileに切り替わっていることを確認し
Simulate Eye PositionのチェックをOnにします。


最後に、Hierarchyから、MixedRealityPlayspaceの下のMain Cameraを選択
InpsectorからUse Eye TrackingのチェックをOnにします。

これで、EyeTrackingのためのProfileの設定は完了です。
今回はEyeTrackingを利用して、視界に入ったらCubeの色を変えるようなサンプルを作成します。

HierarchyからCreate > 3D Object > CubeでCubeを作成

Cubeの座標を適当にCameraに写る位置に移動させます。(このサンプルでは x:0 y:0 z:2)

Hierarchyから、Cubeを選択、InpsectorからAdd Component > New Scriptを選択して新しいScriptを追加します。

Script名は特に何でも良いのですが、今回はEyeTrackingTestとしました。

 EyeTrackingTestの中身はこんな感じです。 Hierarchyから、Cubeを選択、InpsectorからAdd Component > EyeTrackingTargetを選択してアタッチメント
InpsectorからEyeTrackingTargetのイベントを設定します。
EyeTrackingTargetのイベントと、そのイベントの後、どのような動きになるかを関連づけます。
Hierarchyから、Cubeを選択、InpsectorのEyeTrackingTarget、On Look At Startに Runtime OnlyにはCube、Functionには、EyeTrackingTestのAfterOnLookStartを設定

InpsectorのEyeTrackingTarget、On Look Awayに Runtime OnlyにはCube、Functionには、EyeTrackingTestのAfterOnLookAwayを設定

これでアプリは完成です。Unityで実行するとこんな感じです。
Unity上はHead Trackingと同じ扱いになります。
なので、実機に入れないと実際の動きは確認しきれません

EyeTrackingTarget.csについて
こちらは、MixedRealityToolkit-Unityで提供されているScriptです。

Class EyeTrackingTarget

A game object with the "EyeTrackingTarget" script attached reacts to being looked at independent of other available inputs. Assembly: cs.temp.dll.dll Syntax public class EyeTrackingTarget : InputSystemGlobalHandlerListener, IMixedRealityPointerHandler, IMixedRealitySpeechHandler, IMixedRealityBaseInputHandler, IEventSystemHandler EyeCursorSnapToTargetCenter If true, the eye cursor (if enabled) will snap to the center of this object.
文字どうり、EyeTrackingの対象となるオブジェクトにアタッチして利用します。
定義されているイベントに、そのイベントの後の処理を関連づけることで、制御を行っていきます。
イベントは下記

* OnDwell
Event is triggered when the target has been looked at for a given predefined duration (dwellTimeInSec).
ユーザーがdwellTimeInSecで指定された一定時間ターゲットを見ていた場合。
 InpsectorからdwellTimeInSecが指定できるので、その秒数で指定された時間内でターゲットを見ていた時のようですが、 ちょっとよくわかりませんでした。

 * OnLookAtStart
 Event is triggered when the user starts to look at the target.
 ユーザーがターゲットに視線が入った時

* WhileLookingAtTarget
 Event is triggered when the user continues to look at the target.
ユーザーがターゲットを見続けたとき

*OnLookAway Event to be triggered when the user is looking away from the target.
ユーザーがターゲットから目をそらしたとき

* OnSelected
Event is triggered when the looked at target is selected
ターゲットが選択されたとき
これは、EyeTrackingで見つめて、かつ ハンドトラッキングのタップ、またはVoice Commandで対象のオブジェクトが選択された場合です。

目からビームでは、OnLookAtStartのタイミングで当たり判定を行いました。
そのため、必ずしもビームが当たらなくても視界に敵のターゲットが入った時点で
敵がダメージをくらい、うまい人だと、かなり長く遊べてしまいます。

WhileLookingAtTargetで3秒以上見つめたら、みたいな制御は必要だったかもしれません。

このようにEyeTrackingTarget.csを利用することで、
対象のオブジェクトに対する処理を書くだけでいいのは楽ですね。

しかし、きっちりとした制御を行うのは、
なにかしらもっと複雑な処理が必要になるかと思いますが
今のところ、僕の知識ではわかっていません。

EyeTrackingにつては他のデバイス含めて、
機会あるごとに積極的に使っていこうかと思っています。
何故かはわかりませんが、ハンドトラッキングよりも可能性が広がる気がしています

2020年2月12日水曜日

Osaka HoloLens "2" ハッカソン2020に参加 【二日目2020/02/09(日)】

お疲れ様です。ZuQ9->Nnです。
2020/02/08(土)から2020/02/09(日)に開催された
 Osaka HoloLens "2" ハッカソン2020 の二日目2020/02/09(日)レポです。

2020/02/08(土)で、なんとか目からビームのアプリを
実機で動くことに目途をつけて大阪の実家に戻り休むことにしました。

夜通しの開発も提供されてたのですが、一人作業になってしまうこと
日曜のハッカソンを乗り越えても、次の月曜からの仕事を考えると
ここは、無理に作業をせず、いかに休んで体力と集中力を保つかを重視しました。

会場に入って、とりあえず、実機での確認を行いました。
また、最終的な動画を撮れないことも考えて
バグがあっても動いているところさえと思い
保険的に、提出用の動画撮影も行いました。

棒状のオブジェクトから、LineRenderをメインに利用したアセットに切り替えたため
当たり判定がうまく行っていなかったり、音とパーティクルの素材 Prefabでは
Play on awakeのチェックが入りぱなしになっていたりと凡ミスも多く
動いてはいるものの。。不具合も結構ありました。

一番の苦戦は、やはり当たり判定です。当初はビームと一緒に
Shpereの球も出して、その当たり判定で倒せる実装にしたのですが
逆に球が全然当たらず、敵が倒せないようになってしまっていました。

しかし、一人作業の疲れからか、集中力がかなり落ち始めて
ずっと座っているのも。辛くなってきました。
頻繁に離籍しては休みを入れ、休憩を繰り返しました。

その間は、もう自分の焦りの気持ちとの闘い、
これは、最悪、バグ入りの動画を見せればいいとの保険の
ための動画をとっていたので、そちらを何回も見直すことで、
気持ちを落ち着けたり、先にプレゼンの資料だけを書いておいたり
その場で出来ることの作業を、少しづつ進めていきました。

エナジードリンクの差し入れもいただき
ようやく不具合も落ち着いたところで、お昼休憩
お昼はお弁当が用意されました。
また、ここで、HoloLens 2の実機の利用制限が出されました。
HoloLens 2は、一日目の利用により、バッテリーがかなり少なくなっていました。
あらかじめ予約することで、30分間利用できるルールになったので
予約をおこない、そこまでは、ひたすらにUnityでの確認を繰り返しました。

ここまで、不具合の修正と、動く最低限を目指しての
消極的対応だったので、せめてFirst Person Shotter系でよくみる、
十字の照準(CROSSFIREと言うみたいですw)等をつけてみて
実機での確認を待つばかり。。

ようやく実機での確認可能になってインストールをしてみたものの
ここで、先ほどいれた十字の照準(CROSSFIRE)が実機では
シェーダーがこわれてピンク色になり、またもや戻す羽目に。.. orz..

不具合の修正をおこない最終動画の撮影と、実機確認を行いました。
やはり、アイトラッキングの制御がカクカクだったのと
当たり判定が簡単になりすぎて、うまい人だと、
今度は、逆にゲームが終わらない感じに仕上がってしまいましたが
残念ながら、これ以上、手を加えるより、このままで評価をしてもらおうと
またもや、消極的な対応に戻しました。

1日目に行っていた、じゃんけんと、くじ引きの結果、
トップで発表することが決まっていたので、プレゼン資料のしあげと
配布用のパッケージ作成に時間を費やすことにしました。

15時に開発終了、その後、スポンサーのセッションが行われ
いよいよ最終発表。。最終発表の資料はこんな感じでした。
もう、なるべくポジティブなメッセージ性を発信しようと内容を何度か書き換えました。


途中でPCの操作を間違えてしまって焦ったり、
もはや自分では何を言っているのか頭が真っ白な感じでした。
発表終了して、次の人が来たので、慌ててしまい
審査員の人の総評の途中で舞台から捌けようとしたりと
もはや、何やってんだよって感じのテンパり具合。

発表前に、公平を期すために、この2日間での進捗で。。
とか言われて。アレやべ。事前に、プロトタイプ作ってきちゃったよ
ってのがやたらと気になり、 他の人の発表に心ここに在らずみたいな状態に

一応、全員の審査が終わってから、スタッフの方には
ごめんなさい、事前にある程度つくりました。てへぺろ☆(・ω<)って
正直に打ち明けました。あんまり、これは審査員は気にしてなかったみたいです。

発表のあと、試遊時間に、一人作業なので、自分のアプリの
アテンドを行うことに、となりのチームと合同でHoloLens 2を利用したこともあり
イマイチ、アプローチをうまくできず、試遊時間を活かしきれませんでした。

 試遊での課題は、やはりキャリブレーションでした。
また、自分のアプリをピン止めして直ぐに使えるようにすべきでした
どこにあるかをまず見つけてもらうのに苦労しました。

審査員によっては、簡単すぎたり、逆にキャリブレーションがうまくいかず
遊べなかったりとアイトラッキング故の問題点が多かった印象です。
最後に、Unityの@takashijona(常名)さんには、かなり楽しんでもらえたのでなんだか、ホッとしました。

他の開発者の作品で、個人的に気になっていた、音の可視化のアプリのみ体感させてもらいました。
実は、自分のネタを捨てて他人のネタをやるなら、これだなぁと思っていたアプリだったので。。

試遊を終え、審査結果発表。優勝のMVPは、AEDの訓練アプリ
ですよね。。僕が審査員なら絶対に選ぶよ。。って結果に。

その他各賞の発表が。。そしてなんと、主催コミュニティの一つHoloMagiciansさんから
賞をいただける、結果に、事前のプロトタイプ作成が気にかかりましたが
場の雰囲気を壊したくなかったので、素直にいただくことに。。
なんでも、EyeTrackingは絶対に役に立たないと思っていたが
そこを何とかしようとアプローチしたこと。
アプリとして完成して一応、一通り遊べるようになっていたことが評価されたようです。

賞をとれるとは思ってもみなかったので、かなり意外だったし
申し訳ない、こんなネタで。。とか、
嬉しさやら恐縮の気持ち、その他諸々が入り混じりました。

最後に、参加者スタッフで記念撮影、会場の片づけを行いました。
片づけの時間、他のチームの開発者さんから、刺激になりましたと言われたのが、なんとも印象的でした。

開発者だとやはり、EyeTrackingは利用してみたい欲求は高いみたいでした。
しかし、それを何に活かすか?って提案は中々できない、
ましてや真面目なビジネスシーンでは。。

だからこそ、こんなネタが許されるハッカソンのイベントで
目からビームというネタ一本で積極的に使えるように割り切ったのは
あながち悪い結果ばかりでは無かったようです。。

東京で次の日、普通に仕事があったので、新幹線の時間が
間に合わないとつらいなと思い、早々に会場を出てしまいました。。

これほど、大規模で、かなり大きな企業がスポンサーになっているイベントを
開催してくれたスタッフさんには感謝しかありません。中には、夜通しのイベントにも付き合ってた人もいたような感じなので本当にご苦労様でした。

なんどか、ハッカソンのイベントには参加したことがありますが
賞がもらえたこともあり、過去最高のハッカソンだったと思います。

ただ、100%全力で楽しめたか?と言われると、
色々な反省点や課題も多く残りました。。

また、これを次に活かせるのかとか思うとちょっと尻込みもあります。
まぁ、そこは、そんなにも思い詰めず、緩くしていこうかなと。。

とりあえず、主に発作的な欲求で参加したハッカソン。
今年はこれくらいのフットワークの軽さが維持できて
他のイベントにも積極的になれればと考えています。

おまけ。。
ハッカソンの後、気になってアイトラッキング関連を調べなおしたら。。
こちらのMicrosoftの公式ドキュメント

"お客様の目からレーザービームを撮影してください。 RoboRaid For HoloLens 2で試してみてください。"

との記述が。。。
どうやらすでにMicrosoftの公式アプリが、同じネタを実装していたようです。。
プレゼンでは、ひょっとして世界初では。。とかいっちゃったけど。。

全然、世界初でもなんでもなかったw

2020年2月10日月曜日

Osaka HoloLens "2" ハッカソン2020に参加 【一日目2020/02/08(土)】

お疲れ様です。ZuQ9->Nnです。

 2020/02/08(土)から2020/02/09(日)
Osaka HoloLens "2" ハッカソン2020 が開催されたので参加してきました。

Osaka HoloLens "2" ハッカソン2020 (2020/02/08 10:00〜)

スタッフ確保等兼ね合いで、少しだけ一般枠を増枠しました。 抽選が終了していますが、繰り上がりの可能性、(スタッフ増員等による)枠の増加/変動の可能性がありますので、 参加を希望する方は引き続き参加表明をお願いいたします。 また、逆に今後繰り上がり等で参加になった際に、参加が難しくなったという方はキャンセルの手続きをお願いいたします。 一般枠の定員が募集開始4時間ほどで埋まりましたが、抽選制&スタッフ人数次第では増枠(または他の枠との人数調整)の可能性有りなので、気にせずご応募ください。 当日はHoloLensやHoloLens 2等の開発が可能なイベントです。 メンターの対応などを考慮し、イベントでは以下の環境で進める予定です。 事前環境構築済みで参加していただくとよりスムーズに開発に入っていただけます。 Mac端末で参加予定の方への注意事項BootCampなどでWindows 10 OS環境をセットアップ済みの開発機を持参してください。 Bootcampで構築したWindows OSはUnity,Visual Studioをインストールするため最低でも100GB近いサイズは必要になります。ハッカソン当日開発に使う場合は常用できるディスクサイズを確保したものを用意してください 2020/01/20 HoloLensの開発環境に必要なセットアップ作業と確認方法を記載した資料を公開 2/1の環境構築ハンズオンはこの手順に従ってセットアップを実施します。 Mixed Reality Toolkit V2開発環境構築(2020/01版) Windows 10 Fall Creators Update(以降) OSのエディションについてはHome以上であれば問題ありません。 Unity 2019.1.10f1 以下のコンポーネントをセットアップ UWP Build Support(IL2CPP) UWP Build Support(.NET) Microsoft Visual Studio 2019(Community Edition可) Visual Studioインストール時に「ユニバーサルWindowsプラットフォーム開発」「Unityによるゲーム開発」選択 以下のオプション系もインストール Windows 10 SDK 10.0.17763 ⇒
きっかけは、2020/01/17(金)にHoloLens 2 HackDay2020 in Tokyo に参加したことです。
ここでアプリを作成し、やはり、楽しかったし、また、課題も見えてきました。

次にチャンスがあったら、もう少し上手く作業できるのでは?
あるいは、もっと面白いアプリを作れるんじゃないのか?
また、一人だと限界が早くなるけど、ほかの人と連携すると限界を少し伸ばせるのでは?
と、さまざまな、思いがこみ上げ、勢いで参加を決めました。
大阪には実家があるので、泊りのイベントでも、まぁ何とかなるだろう。そんな気持ちもありました。

いつまでも、他人がやったピザのネタに乗っかるのが、なんとなく嫌だったので
今回は、両手でピザのアプリは完全に封印しました。

HoloLens 2 HackDay2020 in Tokyo では、EyeTrackingをきちんと試せなかったので
絶対にEyeTrackingのネタで行こう。。そして、EyeTrackingを使うなら、目からビームのネタで行こう。
そう思い、事前にEyeTrackingに関して調査を行っていました。

以前、北海道に行ったとき、当日の移動でやらかしてしまったので
前日の2020/02/09(金)に、仕事終わりの直後に、新幹線で大阪に移動、実家で過ごすことにしました。

ハッカソン一日目、当日、茶屋町にあるMBSの会場に入りました。
あまりの会場の大きさと、まさしくテレビで見るような、いかにも
発表する舞台のある会場で、思っていた以上に、ガチな印象を持ちました。
参加人数は、参加者、スタッフを含めて50人くらいだったかと思います。

最初、Slackに入れなかったりトラブルも多少あったものの、
自己紹介を終えて、アイデアのある人の1分間ピッチが行われました。
ここで、せっかくなので目からビームのネタを披露しました。

まぁ、誰か一人くらいは、乗っかってくれるのでは?
そんな淡い期待があったものの、結局、誰一人として共感は得られませんでした。 orz...
ちょっと迷ったのですが、どうしても自分のアイデアを捨てれられなかった事
また、ほかに一人でやる方もおられたので、ボッチソンの道を選択しました。

Wi-Fiも提供され、いざというときの調査ができるようになり
とりあえず、お昼ご飯をとることにしました。
メンバーがいないため、結局お昼ご飯もボッチですることになってしまいましたw

昼から、@Miyaura さんによる、開発講座を聞いていると
EyeTrackingを使うには、目のキャリブレーションが必須という衝撃の事実が。。

なるほど、どうりで以前の Hack Dayではうまく動かなかったのか。。
という思いと、同時に、これは試遊の時のハードルが上がってしまうと感じました。
しかし、今更、後に戻ることもできず、突き進むことに。。

開発を 17時の中間発表まで、もくもくと開発、僕は事前にちょっと
プロトタイプを作ってきてたので、とりあえず実機でのEyeTrackingが
どのような体感になるかを確認、同時に、中間発表の動画を撮影しました。

ここで、勘違いが発覚します。てっきり両目の情報を扱えると思い込んでいましたが
実際に利用しているAPIでは両目から何かオブジェクトを操作する用ではありませんでした。

軽くその場で調べてみたのですが、すぐには見つけられませんでした。
なので、両目からビームを出すのは早々にあきらめることにしました。

最初は、棒状のオブジェクトをアイトラッキングで操作する予定でしたが、
そもそも勘違いをベースにコーディングしていたので
制御がヘンテコで、アイトラッキングでは操作が、ほとんどできなくて
あまりにも爽快感が得られず、なんか思っていたのと違う。。って結果に。

中間発表のプレゼン資料の作成も必要となり、
ここで、ボッチ開発の作業量の多さと、辛さを痛感させられることに
中間発表のプレゼンを書くことで、問題点を洗い出し一度頭を整理することに集中しました。

提供されたお菓子も堪能しながら、

プレゼン資料作成に飽きたら、少し開発作業をしたりと
とりあえず、何かしら手を止めない状況にしました。
そして、出来上がった中間発表の資料はこちら。

そして中間発表。。この時、審査員から、何故、HoloLens、HoloLens 2を
使う必要があるのか。。ってことも考えて。。との指示が。。
その場の思い付きで、なんか、「手や言葉の不自由な人にも出来る」。。
とか、言ってしまい、最後の締まで言葉が思いつかず、
おもいっきりグダグダな感じになってしまいました。

中間発表を元に、アプリの改修を始めたのですが、
いったん、目からビームをTrail Rendererにして出してみても
かえって邪魔になってしまったり、ロックオンのようなUIの作成が
思った以上に難しく、容易には実装出来きず苦戦してしまいました。

そして、決定的なのは、NavMeshでの制御を基本に考えていたので
ステージそのものをstaticにしてしまったこと。。
これによって変更すると、すぐにNavMeshが破綻して
今まで動いていた内容がすべてダメになってしまう結果となってしまいました。

流石に、ここで、何も動かないのはマズイと思いgitからもとに戻して
アイトラッキングの制御周りのコードの見直しと
きれいなビームのアセットに置き換えて、見栄えをよくする等
なるべく壊さずに、最終審査で実機で動くことを最低限にして
消極的な対応を行うことに切り替えました。

当初は考えていなかったBGMや効果音、爆破のパーティクル等
急遽、無料のアセットから選出して、なんとか実機で動く目途をつけて
1日目を終了しました。


2020年1月20日月曜日

【第39回】東ゲ部もくもく会に参加

お疲れ様です。ZuQ9->Nnです。



 2020/01/19(日)に

【第39回】東ゲ部もくもく会が開催されたので参加しました。

【第39回】東ゲ部もくもく会

関東ゲーム制作部こと、東ゲ部 のもくもく会です。 毎月第2日曜日に開催(を予定)しています。 各々ゲーム関係のやりたいこと、作業を持ち込み、ひたすらもくもくする会となっております。 職種、ツール、ジャンルは問いません。 アナログ、デジタルも問いません。 書籍を持ち込んで学習するもよし、ゲーム作りの作業をするもよし、アセットの作成をするもよし。 ゲームに関する作業であれば、なんでもOKです。 ...
場所は、茅場町のコワーキングスペース茅場町 Co-Edo
特に僕は、ガチでゲーム開発をしているわけではないんですが、
実は、かなり前から、タイミングが合えば参加していました。

基本的には、ゲームそのものでなくても、ゲームに関連するツールや
またデジタルゲームではなく、アナログのボードゲーム等の開発関連?なら
特におとがめなしで参加できるようです。。
僕は本当に、いつも、あんまりゲーム関連の作業してなくてすんません。って感じです。

僕は、毎回、そん時に気になった作業をしてたので
実際、まったくゲームに関係なくても、きちんとモクモク作業をしていたり
よほど行動が怪しくない限りは参加可能なようです。。

今回は、HoloLens 2 Hack Dayのイベントで作成したピザアプリを
もう少し改良していました。ただ、HoloLens 2は現状、所有してなかったので
折角つくっても実機で動かせないとテンションがさがるので
Oculus Questのハンドトラッキングで動く、簡単なゲームのようなものを作成しました。

実機まで動く形になったのがこちら。

内容は、Fruit Ninja VR のように
飛んでくるオブジェクトを切る感じです。

結局、ゲームのクリアとゲームオーバーを決めきれず
悩んでいるうちに制限時間終了。。

実際に実機で動かして自分で遊んでみたのですが、
まず、掴んだピザがすぐに外れてしまい、
とても操作できたもんじゃないですね。。

ここらへん実機でないと確かめられないので大変だなと。

本当に、個人でゲーム系のアプリを普段から作成され
展示会なんかで発表される方々には尊敬しかできません。

最後に、各自の進捗発表があるのですが、そこで主催の@Usuiさんに
ピザアプリちょっとやってみたいかも。。
と言われたのがちょっと嬉しかったので、
なんとか遊べる形までにはしたいです。。
来週別のモクモク会があるので、そこで続きをやりたい。