ウンcodeプログラマの日常

CentOS・MacOSぶっ殺すマン PC中毒・プログラマ エロゲ・ギャルゲなどの制作もしています。最近はVRやAR技術ばかりやってます

Oculus Go の開発をやってみる(後編)

前回の続きです

Oculusの開発者登録をする

OculusGOを開発者モードにするには使っているアカウント(OculusもしくはFacebook)で開発者登録が必要です。

OculusDeveloperCenter

OculusDeveloperCenterに入ったらまずはFacebookアカウントかOculusアカウントでサインインします。
そしたら、画面上にあるManageを選択します。
f:id:MogamiTsuchikawa:20180511171231p:plain そうするとストアでの表示名を聞かれるのでお好きなお名前を。問題が起こるとコワイのでアルファベットのみで付けると良いでしょう
f:id:MogamiTsuchikawa:20180511171410p:plain
登録が完了するとこんな画面が出てきます。
f:id:MogamiTsuchikawa:20180511171518p:plain
これで開発者登録は完了です。

OculusGOを開発者モードにする。

スマートフォンにインストールしたOculusアプリを開きます。
f:id:MogamiTsuchikawa:20180511172123j:plain
設定を開きます。

f:id:MogamiTsuchikawa:20180511172204j:plainf:id:MogamiTsuchikawa:20180511172230j:plain

その他の設定を開いて開発者モードを選択します。

f:id:MogamiTsuchikawa:20180511172338j:plainf:id:MogamiTsuchikawa:20180511172402j:plain

はい!これでOculusの設定は完了!

OculusGOのドライバーをインストールする

OculusGOにアプリを送ったり削除したりをPCから操作するためのadbドライバーをインストールします。
この操作はWindowsのみで必要のようです。
まずはOculus公式サイトからドライバーをダウンロードします。
OculusGO adb driver
ダウンロードしたzipファイルを適当な場所に解凍します。
解凍できたら中に入っているandroid_winusb.infを右クリックしてインストールをクリックします。
f:id:MogamiTsuchikawa:20180512114617p:plain
インストールが完了したら、Windowsを一度再起動することをお勧めします。

Unityでアプリを実行する

Unityに戻ります。
いよいよアプリケーションを動かします。
もうビルドすれば動くのですが、動いても何か物がないと自分が回転したり出来ているかもわからないので、適当にcubeなどを設置します。
cubeはGameObject--3D Object--Cubeと選択することで追加が出来ます。
f:id:MogamiTsuchikawa:20180512115350p:plain

Cubeが設置できるとこんな感じになります。
f:id:MogamiTsuchikawa:20180512115428p:plain

File--SaveSceneを選択して保存します。
それが出来たら、OculusGOとPCがUSBケーブルでつながっていることを確認してFile--Build&Runを選択し実行します。
開始したらOculusGOをかぶりましょう。おそらくUSBデバックの許可についてのダイアログが出ているので許可してください。これでPC側のビルドがしっかりと成功すればアプリが実行されるはずです。

最後に

どうでしたか?
VRアプリケーションの開発と言っても普通のスマホアプリ開発とほぼ同じでそれ以外に特に難しいことはありません。
だからOculusGOのアプリを作ろうぜ☆
何か質問等あったら気軽にTwitterの方に聞いてもらってOKです。このブログのコメントでもかまいません。

投げ銭よろしくお願いします!!

BitCoin:3QsNSLWHxFHa3Bs2VfD17PGJz7TTgE6p15

MonaCoin:M9yBDmLNg8f19EsE63349iUuniivDdkqm6
頂いた投げ銭は開発資金の足しにしたりします!

Oculus Go の開発をやってみる(前編)

OculusGoの開発環境構築で色々つまずいたので、まとめておきます。
開発環境はWindows10 + Unityで構築します。
2018/5/10現在、これで行けることを確認済み

Oculus Go基礎知識

スタンドアローン(動作時にスマホやPCがいらない)
GearVRのアプリケーションの大半が動く 安い(32GBタイプは23000JPYほど。送料込みで注文して3日ほどで届く) OS: Android Nのカスタム(7.0か7.1かはよくわからない。そのうち追記します。) SoC:SnapDragon821 (二世代前のハイエンドSoC)
ROM:32GBor64GB

Unityのセットアップ

Unityのインストール自体は難しいものではありません。
OculusGOはAndroidがベースのOSで動いているのでインストールの際にAndroidを開発する項目にチェックしてインストールすれば良いです。
Androidのオプションを付けてもAndroidSDKJava DK(以後JDK)は自分で入れる必要があります。

AndroidSDKのインストール

AndroidSDKAndroidStudioをインストールと一緒にインストールされますが、最近のバージョンではUnity側で上手く設定できないのであえて古いバージョンのAndroidSDKを落とします。
ここから落としました。
AndroidSDKoffline
今回はバージョン25.2.5を選択しました。調べてみると26あたりから新しいやつになっているみたいで。古いバージョンですがマネージャーとかが古いだけなのでAndroid8など最新のandroidOSのSDKも使えます。
ダウンロードと解凍が終わったら任意のフォルダーに移動させます。自分はDドライブ直下に置きました。
フォルダーの中を見るとtoolsフォルダーがあるはずです。その中のandroid.batを右クリックして管理者として実行をクリックしてください。 管理者権限の確認画面が出てくるのではいを選択。 そうするとAndroidSDKの設定画面が現れます。
f:id:MogamiTsuchikawa:20180510173126p:plain Android 7.0 と7.1を選択してインストールします
f:id:MogamiTsuchikawa:20180510173303p:plain Accept Lisenceを選択してインストールを開始します。 終わったらAndroidSDK Managerには用はないので閉じます。

JDKのインストール

JDK ですが最新版の10だと動かなかったので8をインストールしていきます。
JDK 8 昔から思うんですけど、Java関連のソフトのダウンロード画面ってわかりにくい気がするんですよね。一番上に同意のRadioButtonがあってそれを押さないとダウンロード出来ないという。所見だと結構わからなくて
Windows x64のリンク押してもダウンロード出来ない!?」
とかなりません?自分だけかな?

Unityの本体の設定をしていく

ではunityを起動します。最初にライセンス認証とかありますが、そんなに難しくないので割愛。
プロジェクトを新規作成していきます。適当に名前を決めましょう。
f:id:MogamiTsuchikawa:20180510172403p:plain
androidのビルドの設定をしていきます。
EditのなかのPreferenceをクリックします。
f:id:MogamiTsuchikawa:20180510174208p:plain ExternalToolの中のSDK,JDKBrowseボタンを押して、先ほど置いたandroidSDKJDKの位置を選択します。JDKは標準ではCドライブのProgramFilesフォルダー内にあるはずです。
f:id:MogamiTsuchikawa:20180510174123p:plain ちなみにここの設定画面で通常使うエディタの設定が出来ます。自分はVisualStudioCodeを使っています。Windowsユーザーなら標準はVisualStudioになっているはずです。Codeの方が軽く使いやすいのでお勧めです。

プロジェクトの設定をしていく

最初にプロジェクトのターゲットプラットフォームをAndroidに変更します。 標準ではPC(Windows,MacOS,Linux)向けになっています
File--BuildSettings...を選択します。
f:id:MogamiTsuchikawa:20180510182234p:plain
そうするとBuildSettings画面が出るのでAndroidを選択してSwitchPlatformを押してAndroidに変更します。
f:id:MogamiTsuchikawa:20180510182328p:plain
変更が完了するとunityアイコンがAndroidの方に表示されます。
f:id:MogamiTsuchikawa:20180510182439p:plain

続いて、Player設定の方を変更していきます。 Edit--ProjectSetting--Playerを選択します。
f:id:MogamiTsuchikawa:20180510174648p:plain
Player設定画面が右端に表示されます(今までのようにウインドウでは表示されません。)
OtherSettingを選択し以下の部分を変更していきます。

PackageName : デフォルトの状態だとunityに怒られるので適当に変更します。自分はmogami.soft.comとかにしてみました
MinimumAPI Level : OculusGOはAndroidNなのでAndroid7(API level24)にします。 ちなみにここまでの作業はUnityの普通のandroidアプリを作る際と同じ手順です。

最後にPlayer設定の一番下にあるXR Settingsを弄ります。 まずはVirtual Reality Supportedチェックボックスにチェックを入れます。
そうするとVirtual Reality SDKsというボックスが出るので、+ボタンを押してOculusを選択します。
f:id:MogamiTsuchikawa:20180510184545p:plain
これでVR対応化完了です。めちゃ簡単ですね。

後編ではOculusGOのデベロッパーモードの仕方やデベロッパー登録、ADBドライバのインストールを紹介していきます。

後編はこちら

投げ銭よろしくお願いします!!

BitCoin:3QsNSLWHxFHa3Bs2VfD17PGJz7TTgE6p15

MonaCoin:M9yBDmLNg8f19EsE63349iUuniivDdkqm6
頂いた投げ銭は開発資金の足しにしたりします!

WindowsMRをまとめてみる

案外いろいろと種類があるWindowsMRについてまとめました。

①WindowsMRは三つに分けられる

WindowsMRというとARグラスとTVで報道されてしまうHoloLensを思い浮かべる方が多いと思います。他にも、ほぼVRと言っていいAcerDELLなど多くのPCメーカーが販売するPC向けWindowsMRヘッドマウントディスプレイ(以後WinMR HMD)もある。また、ほとんどの方があるけど多分全然使わない機能として「MixedRealityビュワー」というものもある。 「MixedRealityビュワー」は他の二つのWinMRと違い、専用の機器を必要としないので手軽に使える機能だ(しかし、説明動画を見るとすぐわかる通り、Windowsタブレットのアウトカメラを使うようにされた機能なので普通のノートPCだときついかな?)簡単に説明するとARカメラみたいなもの。

②まだ開発者版なHoloLens

発売してから結構時間が経っているが、HoloLensはまだ開発者版で改良型なども出ていない。 よくHoloLensはTVでARグラスと呼ばれているが、同じくARグラスであるGoogleGlassとは全然違う。(そういえばGoogleGlassプロジェクトどうなったんだろう?)GoogleGlassは使用者の視界にアプリケーションなどの映像を重ねるものだが、HoloLensでは使用者が見ている空間を認識し、あたかもそこに物があるように映像を重ねる。似ているように見えて全然違うのである。 自分は今度の4月のマイクロソフトの発表会「Build」にてAIなどを活用できるように専用の機能も搭載した改良型HoloLensが出るのではないかと期待している。

③最もお手軽なPCVRであるWinMR HMD

スマホVRなどと比べ圧倒的投入感と操作性を持つPCVR(PCを使ったVR)は2016年12月に発売されたOculusRiftから一般ユーザーが買える物になったが、当初は超高スペックPC+10万円の機材というかなり高額なものだった。 だが、最近は低価格かつセットアップの簡単なWindowsMR HMDの登場とグラフィックボードの進化により以前に比べだいぶ初期投資額が少なくなってきている。(WindowsMR HMDは5万円台の物からある)

(1)WindowsMR HMDとそれ以外のPCVRの比較

WindowsMRとそれ以外の主要PCVRを表にまとめてみた WindowsMR HMDが他のPCVRと大きく違うところは部屋にセンサーなどを設置する必要がない点である。スマホVRなどとは違いPCVRでは自分の立ち位置・傾き具合・コントローラーの位置を検出出来るようになっている。そのためにOculusRiftやHTC viveでは部屋にセンサーを設置する。だがWindowsMRではHMD本体に空間認識が可能な特殊なカメラがついているので外部にセンサーを設置する必要がなくなっている。そのため、センサーの設置の手間が省け、簡単に使うことが出来る(センサーの設置というと簡単に聞こえるかもしれないが、OculusではPCからUSBのコードを引かなければいけないし、viveでは高いところに設置&AC電源というかなり場所を選ぶので結構難しい。)その反面、向いている方向の逆側など本体のセンサーから死角になる位置ではコントローラの位置を検出できない。(が、ほぼ実用の面では問題ないと思う) また、WindowsMR HMDGeForceRadeonなどのグラフィックカードを搭載しないノートPCで使うことも出来る。

が、それは半分詐欺!

(2)WindowsMRが動作する環境

WindowsMRはUltraとノーマルの二つの動作モードがある。 よく、WindowsMRの宣伝で言われているintel内蔵グラフィックで動くのはノーマルなモードである。ノーマルなモードでは基本、VR空間内で大画面で普通の2Dアプリケーションを使うような事しかできない。つまり、仮想的な大画面でWebブラウジングをしたり動画鑑賞をするといった事は出来るが、VRゲームなどは出来ない。VRゲームなどをするにはUltraモードでやる必要がある。また、フレームレートは60Hzなので人によっては、酔う可能性が高い。(自分は酔った) Ultraモードはノーマルなモードで出来ることに加えてWindowsStoreにあるVRゲームやSteamで配信されているHTCvive向けのゲームをすることが出来る。さらにフレームレートは他のPCVRと同じ90Hzで使うことが出来る。その代わりGTX960やRX460といったある程度の性能のグラフィックボードが必要だ。また、Steamで配信されているゲームなどは他のPCVRの推奨グラフィックボードであるGTX1060で普通に動作するように作られているので、WindowsMRHMDでもそのようなゲームをする際はGTX1060などの高性能のグラフィックボードがないと動作は厳しい。 ノーマルとUltraで必要なスペックをまとめるとこうなる。(簡易的なので、動くかどうかは実際にPCでMixedRealityポータルを起動して判定して欲しい)    

Unityでandroidアプリを作る上での準備

学生LT関連で訪れた方向けの記事です。

 

非常に簡単にしか説明しません。基本言っていないところはデフォルトでOkということ。

 

*必要なもの

Unity

android SDK

Java JDK

開発者モードのandroid端末

 

ここ見ればソフトのセットアップわかります

qiita.com

 

では開発者モードのAndroid端末の用意の仕方を書きます。

 

まず、Android端末を用意します。

設定アプリを開き項目の一番下の「端末情報」をタップします。

その中から「ビルド番号」というものを探します。

ASUS機は「ソフトウェア情報」の中に「ビルド番号」がある)

「ビルド番号」を見つけたら、「ビルド番号」を10回タップします。

そうすると、「開発者オプションが有効になりました!」と出ますので、そこで設定の一覧に戻ります。そうすると「端末情報」の上に「開発者向けオプション」がでます。

「開発者向けオプション」をタップし、中にある「USBデバッグ」をONにします。

これでスマホ側の準備は完了です。

UnityをセットアップしたPCとUSBでつないだ状態でUnity側でBuildAndRunをするとスマホ側でUSBデバッグをするが良いか?というようなダイアログが出てくるのでOKしましょう。

これで準備は完了です。

 

今日のウンcode(VRゲーム作り始めました)

前から、Unityを使ってちょくちょくOculusやWindowsMR向けのVRアプリを遊び程度に作っていたが、WindowsMRの一般発売も始まり、いよいよ一般消費者にPCVRが広まる時代になってきたことを感じたので、販売できるレベルの内容の濃いVRゲームを開発することにした。

まだ、名前も決まっていないが、FPSな感じのシナリオゲームになる予定。今、シナリオも結構決まってきている。

FPSとか聞いて、BattlefieldCall of Dutyとかみたいな、オッサンだらけで泥だらけになりながら戦うゲームとか思うかもしれないがぜんぜん違う。メインキャラクタの半分は女性だし、舞台は海だ。(でも主人公は男です。)

詳しい内容は煮詰まり次第、タイトルや公開予定を含めホームページで公開予定。

 

宣伝?的なものは書いたので

ウンcodeな話を始める(´・ω・`)

今回のVRゲームはとOculusとWindowsMR向けなどに出すことを計画しているので、最初からマルチプラットフォームな設計にすることにした。そこで、障害になりそうな、各プラットフォームのメーカーが出しているSDKを極力使わないこととした。

UnityにはUnityEngine.XRというのがあり、OculusならヘッドトラッキングやOculusTouchなど必要なことの殆どがこれから利用できる。問題は公式資料(内容薄い&English)ぐらいしか参考になるものがないことだが。

 

とりあえず、開発一日目。ここまで作ってみた。(ゲーム内容のヒントになるものだらけw)


自作VRゲーム試作中 OculusTouchでMk45を動かす(2)

 

とりあえず、右手OculusTouchを用いてMk45 5inchi砲を撃つのだが、結構てこづった。

OculusTouchの座標を取得しようと

InputTracking.GetLocalPosition(XRNode.RightHand)

を利用したが、動作が変で、不思議に思い

同じ座標なはずの

GameObject.Find("Main Camera").transform.position

InputTracking.GetLocalPosition(XRNode.Head)

を比べたら、全然値が違うので、もしかしたら基準点が違うのかなとか思い、HMDの位置からの相対座標でOculusTouchとMk45を連動させることにした。

transform.position = GameObject.Find("Main Camera").transform.position + InputTracking.GetLocalPosition(XRNode.RightHand)- InputTracking.GetLocalPosition(XRNode.Head);

↑こんな感じに

この程度なら、コード一切書かなくてもSDK等を利用することでできてしまうが、今回はあえて、全てコーディングすることにした。後々、色々いじれるように。

明日は左手の実装と敵とか出して当たり判定ぐらいつけようと思う。それをしながらVR内での有効なUIを模索していく。あとMk45の射撃に爆炎をつけたりしようと思う。

今日のウンcode(WindowsMRの現状についてまとめてみる)

新しく書き直した物があります。

mogamitsuchikawa.hatenablog.jp

 

 

今月 10/17に配信が始まったWindows10FallCreatersUpdateで正式に始まったWindowsMR。

そんな始まったばかりのWindowsMRについてまとめてみる。

 

1.WindowsMR自体はHoloLensから始まっている。

HoloLensから始まっているので実はWindowsMR自体は結構前からある。

だが、HoloLensもDeveloperエディションなので、まだ正式リリースとは言えない。なので、今回のAcerHMDなどが製品第一号という感じになるだろう。

2.Mixed Reality??いやVRだろ?

WindowsMRのMRはMixedReality(複合現実)の略だ。

複合現実とは簡単に言うと強いAR(笑)

イメージで言うと、ARは現実に仮想を重ねる

MRは現実に仮想を溶け込ませる。

ポケモンGOはARだろう。ポケモンGOはただカメラの映像の上にポケモンを重ねている。もしカメラが物で塞がっていてもポケモンは画面に出続ける。

もし、ポケモンがまるで地面の上にいるように見えて、木の後ろに行ったら見えなくなるのなら、それはMRだと思う。いわゆる電脳コイルや最近やったSAOの劇場版の世界のデバイスのようなもの。

で、今回発売されたWindowsMRヘッドセット(以下WinMRHMD)はMRとはいえない気がする。AcerのパンフレットではガッツリMRと書いてあるが、現実空間が見えない時点でVRというしかないように思う。デバイスの構成的にもガッツリOculusやViveのようなものなので、言い逃れは難しい。

ちょっとMRと名乗るのは詐欺感がある(笑)

3.低スペックPCでも動く

WinMRの魅力はその敷居の低さ。Intel内蔵グラフィックでも動くというだけでなく、WinMRHMD自体の価格も安い(Acerの物で6万)

少し前ならOculusやViveなどのPC VRをやるには10万のヘッドセットに高性能なゲーミングPC(最低15万くらいのもの)が必要だった。

ここまで聞くと、Microsoftやるじゃん!とか思うかもしれないが、実は違う。世間一般が思うVRソフトをやるにはWindowsMR Ultraな環境が必要になる。

WindowsMRではマシンの性能により二段階のエディションがある。

 WindowsMR Intel内蔵グラフィックで動く 画面は60FPS

 WindowsMR Ultra GTX965MやGTX960以上で動く 90FPS 

WindowsMRにおいてサポートするのはWindowsStore上のUWPアプリのみと考えたほうがいい。リッチなグラフィックを使うMR対応UWPやSteamVRは基本WindowsUltraでなければ使えない。使えたとしてもフレームレートが安定せず確実に酔って、気分が悪くなる。VRにおいては90FPSを下回ると基本酔うと考えたほうがいい。ゲーマーなどはこういうフレームレートの低下にはある程度耐性があるが、一般人にはない。自分も90FPSを少しでも下回ると結構酔ったw

4.SteamVR対応

PCVRにおいて二台陣営の一つと言えるSteamVRが利用できる。すでにAcerHMDを使っている人はドライバーを当てることで使えるらしい。(追記)SteamにてWindowsMixedRealityForSteamVRが配信開始になりましたので、今はそちらが利用できます。

あとで試してみようと思う。SteamVR対応によって、コンテンツ不足による普及の障害にはならなそう(逆に言えばUWPのコンテンツが増えなさそう)

5.結構挙動がまだ怪しい&開発者を舐めている

まだ、始まったばかりということで仕方がないのだろうが、ハンドコントローラーに関しては動作が結構怪しい。通信にBlueToothを利用しているということも有り、いろいろなデバイスがある環境では、結構荒ぶるらしいw

でもDeveloperエディション時代に比べれば結構安定している。WindowsMRが原因でブルースクリーンが呼び出されることもないw

自分はDeveloperEditionを買ってその頃からWindowsMR開発に触れているが、DeveloperEditionにはハンドコントローラーがついていなかった。きっと後から単体発売するだろうと思っていたが、そういうこともなく、気づいたらハンドコントローラー付きの製品版が発売されていた。意味がわからん。Developer版は開発者に製品版をかうユーザーが出る前に対応したソフトをつくるためにあるものなのに、なんで製品版の方が早く出るのだろうか?

渋々、ハンドコントローラー(多分単体なら二万くらい)のために製品版(六万)を買った。意味がわからない。

ガチでなんとかしてくださいよ。マイクロソフトさん。本当に(´・ω・`)

今日のウンCODE (新開発環境開発開始)

C#_GO KAKITSUBATAをリリース後、次のバージョンZinniaを開発していたのだが、今まで貯めたウンcodeのせいで追加機能開発不可能(過去に書いたコードが意味不明で手がつけられない)なので、C#_GOの新バージョンの開発は断念しちゃいました...

そこで、C#_GOをきれいに全てWPFで書き直しつつ、C#以外の言語にも対応した簡易開発環境「Koyomin」の開発を始めることに(´・ω・`)

名前の由来は自分の出しているC#応援キャラクター「暦 櫻」です。なんとなく「こよみん」としたほうが、いい感じかな(Kotlinみたいに)と思ったので。

近いうちにまたクローズドベータをしたいなぁと思っています。

ちなみに初期のC#_GOと機能は同じですが圧倒的に動作が軽い気が(´・ω・`)

やはり、処理を効率化したりWPF化したのが良かったのかな?

f:id:MogamiTsuchikawa:20170902161502j:plain