UE4.17でのGearVR開発事始め + GearVRコントローラの使い方

GearVRの記事が少なすぎるのと、UE4でのGearVRコントローラの記事を全く見ないので書くことにしました。

まず、GearVR開発の環境構築ですが、Androidの構築に関してはリンクを載せておくので割愛します。ここまでは情報がいっぱいあるので・・・。

UnrealEngine公式のクイックスタート
Samsung Gear VR UE 4 のクイックスタート

また、おかずさんのブログの古い記事ですが、導入部分は今と変わらないので、参考になります
UE4でGear VR開発してみる 準備編

ぶっちゃけGearVRのアプリを開発するなら、フレームシンセンスさんのこちらを参考にすればとりあえずできます。
UE4+Gear VR開発メモ

簡潔に手順を説明すると、
①Androidの開発環境を構築
②Oculus公式からデバイスの署名ファイルをダウンロード
③上でダウンロードした署名ファイルを使いたいバージョンのエンジンの所定の場所に配置
④プロジェクトを作成し、プロジェクト設定のAndroidの設定で、【Configure the AndroidManifest for deployment to GearVR】に設定

特に問題がなければ、GearVRアプリケーションとして動くはずです。

また、Inputのバーチャルパッドを外すなども必要です。バーチャルパッドに関してはMozPacaさんがまとめてくださっていたので参考に。
UE4 バーチャルパッドについての備忘録

以上で、新旧GearVR共通のアプリ開発の準備が完了です。

ここからが本題のGearVRコントローラの使い方になります。GearVRコントローラは新型GearVRコントローラと同時に発売されたコントローラです。
ボタン配置的にはViveControllerとOculusRemoteを足して割った感じの印象を受けます。

GearVRの開発のできるUE4ではこのControllerを使用したアプリの開発をすることができます。

使用するためにはまず、本体とペアリングする必要があります。OculusHomeを立ち上げ、下部にある、もっと見るを選択します。
メニューの中から、リンクした機器のコントローラーに進むと、新しいコントローラーのペアリングという項目があります。
選択すると、ペアリングが始まるので、ナビゲーションに従ってペアリングをしてください。

準備ができたら開発を初めましょう。

では、解説を始める前に今回、4.17とバージョンを指定しているわけですが、4.16にはGearVRControllerComponentというGearVRController用のコンポーネントが存在していました。
4.17ではそれが消え、MotionControllerComponentにその機能が統合される形になりました。
4.15以前では確認できていません。

説明をはじめます。まず、最小構成のPawnを基底クラスとしたブループリントクラスを作成します。
Player.png

MotionControllerコンポーネントではHand列挙体変数をAnyHandに設定します。これで、プレイヤーの作成は終了です。レベル内に放り込んで、Actorの詳細設定からPlayer0でInputを取得するように設定してください。

次に、入力マッピングについてです。

戻るボタン
ReturnButton.png

静電パッド
SeidenPad.png

静電パッドのとこにある物理キー
ThumbButton.png

裏のトリガー
Trigger.png

デバッグ用のコードも混じっていて汚いので、文字でも残しておきます。

UE4での入力イベント

裏のやつ
Trigger :Rightだけ(利き手側

静電パッドの物理キー
ThumbRight・Left・Up・Down(利き手側

静電パッド
ThumbX(←マイナス プラス→
ThumbY(↑マイナス プラス↓ 利き手側

戻るっぽいやつ
Facebutton1 (左右両方に対応。同時にでた

戻るボタン以外は利き手の設定によって変わります。戻るボタンだけは、どちらの利き手でも右左両方のイベントが発生しました。
この違いには、気をつけてください。
スポンサーサイト

UE4.17のVRテンプレートをOculusRiftで使う際気をつけること

UE4には様々なテンプレートがありますが、その中のVRテンプレートを最新バージョンでOculusRiftを使う際の注意メモ書きです。

HMDLocomotionPawnとMotionControllerPawnのBeginPlayにEyeLevelを設定する部分があり、どちらもSwitch文で現在接続されてるHMDの種類を判別してそれぞれの設定をしていますが、実はOculusRiftという名前で4.17から返ってきていません。
hmdlocomotion.png

正確にはOculusHMDです。これを下記の様に修正しない場合、カメラが床に埋まり続けます。気をつけてください。
motioncontrollerpawn.png

Unreal Engine Meetup Nagoya #4 開催

本日、名古屋ゲーム制作部にて、UnrealEngineMeetupNagoya 4回目を開催しました。


今回から主催の一人で参加させていただきました。あとついでにLTにも登壇させていただきました。今回は主催もLTも初の挑戦だったので、とても心配でしたが、経験されている方にとても助けていただき、無事進行することができました。

LTの資料はSlideShare上げました。
https://www.slideshare.net/shiratori01/ue4-79188510

開会の挨拶のあと、まずはLTから始まります。

まずは僕のLTからで、内容は割愛しますが、マルチプレイヤーに関して少し勉強してたりしたので、軽くお話をさせていただきました。

二人目は大福さんのお話で、UE4でDIY~日曜大工感覚で始めるゲーム制作~というもので、つい先日にやっていた土日で音ゲーを作ろうをやって、UE4を使ってこんな感じで進めれば土日でゲームは一本形にできるという内容でした。
是非次の暇な土日にやってみようと思わせてもらえる内容でした。というかやります。

飛び入り参加の荻野さんは昨日にあった、Unreal Engine MeetUp Saitama #3で発表されていた、MacでUnrealEngineをソースコードビルドのやり方と苦労した部分の発表でした。中身を聞いてただの苦行なんだなという感想しかないです・・・。

最後に部長のたすさんが名古屋ゲーム制作部でこれからどういう勉強会をしてほしいかっていうのや、どういう日程でやってほしいかのアンケートを取ったあとに、休憩を挟み本題のMeetUpTimeに入りました。

MeetUpTimeに関しては過去の札幌や埼玉で開催されたスライド資料を見ていただけるとわかるのですが、簡潔に説明すると、数人のチームを作って全員で話したいことを決めて、一定時間(今回は20分)話し合ったあと、チームをシャッフルして~を繰り返すものになります。

全体的に活発に話が盛り上がっていて、20分では足りないくらいに思えるくらいでした。

大体3~4回くらい回して全体ででた話題がこちら。




総括して成功したと言えました。また11月にやります!

UE4で箱を回転させる

フリーになってから初の更新です。

今回はこんな感じにきれいに箱を転がしました。




とはいっても数学をあまりきちんと理解できてない人間なので、こちらのブログのスクリプトを参考にさせてもらい作りました。

[Unity] Cubeを転がすスクリプト

Input関数


input_all.png

Input関数はこんな感じです。基本的には二次元的な入力しかないので縦横方向への入力をもらって、回転させたい角度を作り、回転中フラグや入力値、初期位置、初期回転を設定しています。

また、入力を受け取った際に回転中かどうかを確認しているisRotationはこんな感じ。

is_Rotate.png

入力がきちんとあって、なおかつ回転中でなければ転がり始めます。

RotationCubeイベント



Input関数で初期設定後に走らせるイベントです。

RotateCubeEvent.png

タイムラインで線形補間用のアルファ値を作って回転と移動をUpdateRotation関数の中で行っています。
今回は0.5秒間に0から1へと変わるように設定しています。

UpdateRotation関数


今回やりたいことのメインとなる部分の処理になります。

UpdateRotation.png

細かい説明はできないので省きます。いい感じにX、Y、Z軸方向への移動と回転を行ってます。

移動距離を算出する関数はこれらです。

distanceX.png
distanceY.png
distanceZ.png

GetDistanceXとYはVerticalかHorizontalの変数以外は同じ処理を行っているので外部からわたしてやるともっとスッキリすると思います。

sinとかcosとかはこちらになります。

GetSine.png
GetCosine.png

最後に終了処理

EndRotation.png

もうちょっときちんと数学を勉強しようと思いました。

Androidでのプロジェクト設定

いつもAndroid向けのプロジェクトセッティングを忘れるので、ブログに残すことにします。
今回のやり方は、公式のドキュメントにもあるUE4をインストールした際についてくるCodeWorksを使ってSDKを用意するのではなく、VisualStudioをインストールした際についてくるSDKマネージャーを利用するやり方になります。

プロジェクト作成


設定は公式とかスクショにもあるとおりです。
ここでしてなかったり、既存のプロジェクトをスマホ対応させたい場合はこのあとの手順で設定変更をしましょう。
プロジェクト作成

プロジェクトが開いたら、ProjectSettingsを開きます。

プロジェクト作成時に上記の設定をしていない場合は、まずその設定をしましょう。
TargetHardWare.png

Platforms Android


次にPlatformsのAndroidを開きます。作成時はこんな感じです。
Platforms_Android_1.png

Configure Nowを押すとこんな感じに緑色になるので、設定をそれぞれ変更します。

AndroidPackageNameは
Company: 自分の名前とか所属してる会社名やらサークル名
Project: このプロジェクトの名前を設定しましょう

今回赤で丸をしていませんが2つ下にあるApplication Display Nameは空白だと、プロジェクトの名前がAndroidのホーム画面にでます。

Minimum SDK Version: サポートする最も低いAndroidのバージョン
Target SDK: ターゲットとするAndroidのバージョン
をそれぞれ指定します。当たり前ですが、SDKがないとビルドできないので、SDKマネージャーできちんと対応するAPIレベルのSDKを用意しましょう。

無駄に赤丸で囲んでいるOrientationはスマホの向きです。主に使うと思われるのは下記の2つだと思います。
Portrait: 縦向き
Landscape: 横向き

一応赤丸をつけている部分ですが、ビルドの際にサポートするハードの種類?だとおもいます。
スマホによってはarm64を入れているとビルドが通らなかったり通ったりで自分でもよく理解していません。誰かご教授お願いします。
Platforms_Android_2.png

これより下に行くとGooglePlayの対応やらのセッティングがありますが、なくてもビルドはできるので飛ばします。

Platforms Android SDK



SDKやNDK、jdkなどはここでパスを設定します。単純にブループリントで作ってビルドを通すだけならSDKとJDKだけでも問題ないです。C++つかうならNDK必要です。apache-antはJavaのビルドツール?らしいですが、どういう形でビルドする際に必要なのかはよくわかんなかったです。

NDK API Levelはandroid-対象とする最も低いAPIレベルを書いてやればOKです。
SDK API Levelは・・・よくわかんないです。とりあえず、初期値であるmatchndkにすると、NDK API Levelと同じレベルのSDKを自動で指定するようになります。最後に多少あがいたことを書いておくので、もし知ってる方は教えてくださると助かります。
Platform_AndroidSDK.png

というわけでこんな感じにプロジェクトを設定するとAndroid向けにビルドが通ります。

SDK API Levelの疑問


ちなみにSDK API Levelを色々いじるとこんな感じのエラーが出ます。
内容的にはtargetとしたidは存在しないので、android list targetsで対象のidを確認して指定し直してくれみたいな感じだと思います。
outputErrorLog.png

それでみると、こんな感じ。

3以上が存在しません。ちなみに、13まではビルドが普通に通り、14以降はだめでした。理由はよくわかんないので、知ってる人は教えてください。
android_list_target.png
プロフィール

shiratori00

Author:shiratori00
フリーでソフトウェア開発者してます

最新記事
最新コメント
月別アーカイブ
カテゴリ
Twitter on FC2
カウンター
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QR