Upload
-epic-games-japan
View
1.590
Download
2
Embed Size (px)
Citation preview
#UE4AllStudy#UE4AllStudy
猫でも分かるUE4を使ったARコンテンツの作り方 Ver 1.0.0
Epic Games Japan
岡田和也( @pafuhana1213 )
第2回UE4何でも勉強会 in 東京
#UE4AllStudy
UE4とApple ARKit
実際の開発で使用できるレベルでサポート済み!• Appleの発表会でUE4製デモが使用されたという実績
Wingnut AR ( WWDC 2017 ) The Machines( Apple Special Event )
#UE4AllStudy
UE4とGoogle ARCore
ARCore プレビュー版 をサポート済み• ARCore専用Componentも提供!
正式リリース時期は今の所未定…?(2017/12/19現在)
#UE4AllStudy
技術自体は前々からあったが…
実用化するには数多くの問題が…
• トラッキング処理の計算負荷と当時のスマホのスペックの問題
• デプスセンサーなどの特殊なデバイスを必要としていた
• などなど
PTAM (2007年)
#UE4AllStudy
ARKit, ARCoreが最高な理由 その1
誰もが持っている一般的なデバイスでマーカレス型ARを実現している
• 潜在的なユーザ数が桁違い
• さらに、時間が経つに連れユーザ数が増加
#UE4AllStudy
ARKit, ARCoreが最高な理由 その2
プラットフォーマ主導という安心感• OS・SDKに標準で組み込まれるというのは大きい
• Google / Appleパワーによる
急速な技術革新への期待
#UE4AllStudy
開発する上で必要なもの (ARKitの場合)
UE4.18.2 ( 2017/12/19現在 )
A9以降のプロセッサを搭載した
iOS11 端末• iPhone 6s 以降,
• iPad(第5世代), iPad Pro
#UE4AllStudy
開発する上で必要なもの (ARKitの場合)
BPオンリーで作る場合• Windows or Mac
• Apple Developer Program
BP + C++ で作る場合• Windows ( Macで開発する場合は不要 )
• Mac
• Apple Developer Program
#UE4AllStudy
もう少し詳しく知りたい人向け
[CEDEC+KYUSHU 2017] 最新モバイルゲームの実例からみるUE4のモバイル向け機能・Tipsを全部まるっとご紹介! + UE4.18 モバイル最新情報の紹介
【UE4】WindowsでiOS用アプリをビルドしてみた【ARKit】• てんちょー(@shop_0761)さんによる
BPプロジェクトのiOSビルド手順の解説記事
#UE4AllStudy
開発する上で必要なもの (ARCoreの場合)
UE4.18.2 ( 2017/12/19現在 )
ARCore対応端末• Google Pixel, Pixel XL, Pixel 2, Pixel 2 XL(いずれも日本国内では未発売)
• Samsung Galaxy S8, S8+, Note 8
#UE4AllStudy
今年9月のSDC2017における講演にて
This winter, ARCore will run on 100M Android devices
今冬、ARCoreは1億台のAndroid端末上で動作するよ!
#UE4AllStudy
待てないあなた向けに
某ブログの記事UE4のARCoreサンプルを未サポート端末(ZenFoneAR)で動かすためにしたこと(2017/9/4)
じこせきにんでおねがいします
#UE4AllStudy
https://blog.google/products/google-vr/arcore-developer-preview-2/
#UE4AllStudy
ARCore Developer Preview2が12/15に来ました
リリースノートより
• APIインターフェースは大幅に改訂され、変更されました
• 以前の開発者プレビューの主要機能はすべて残っていますが、メソッドと関数の呼び出しは変更されています
#UE4AllStudy
先行して試したい方向け
ARCore公式 Getting Started with Unreal• https://developers.google.com/ar/develop/unreal/getting-
started
Preview2対応版のUE4.18 (要ビルド)• https://github.com/google-ar-unreal/UnrealEngine
Preview2対応版のサンプルプロジェクト• https://github.com/google-ar/arcore-unreal-sdk
#UE4AllStudy
Caution!!!
ARCore is currently in preview.
There might be breaking changes before the 1.0 release.
#UE4AllStudy
何故サンプルを先に紹介するのか
• AR機能を使うためにプロジェクト設定の数項目を変更する必要がある
• AR機能に関する公式ドキュメントがまだない(ごめんなさい)
公開されているサンプルを改造するのオススメ!
#UE4AllStudy
EpicGamesの公式サンプル
UE4.18リリースノートにて配布中
ARKit, ARCore両対応
ARKitの場合、RemoteBuildが必要
( = Macが必須 )
#UE4AllStudy
Tsuyoshi MAEHANA(@sandinist )さんが公開しているサンプル
https://github.com/sandinist/ue4.18.0_arkit_sample
公式サンプルからARKit に関する処理を移植したサンプル
Remote Build不要
(= Windos開発の場合はMac不要)
#UE4AllStudy
https://speakerdeck.com/sandinist/arkit-on-ue4-dot-18-dot-0
#UE4AllStudy
https://www.slideshare.net/T_Sumisaki/ue418arkit-ue4in3
墨崎達哉(@T_Sumisaki) さん
#UE4AllStudy
ARCore公式で配布されているサンプル
Getting Started with Unreal
UE4のARCore専用のコンポーネントが使われているサンプル
• ARCoreが検出した平面の表示など
ARCore Preview1用のサンプル• https://github.com/google-ar/
arcore-unreal-sdk/tree/sdk-preview
#UE4AllStudy
UE4.17では以下の文字列を追加する必要がありました
<key>NSCameraUsageDescription</key> <string>This application will use the camera for AR</string>
#UE4AllStudy
UE4.18からはStart in ARを有効にするだけでOKに
Engine\Source\Programs\
UnrealBuildTool\Platform\IOS\
UEDeployIOS.cs
#UE4AllStudy
Fake Shadowを使う手もあるけど…
メリット• 実装が簡単
• 処理負荷が低い
• 影無しよりは断然実在感がある
デメリット• 低品質
• 動きのあるモデルの場合嘘がバレやすい
Epic公式サンプルの BP_Placeable
#UE4AllStudy
ARコンテンツで正確な影を出すためには
現実空間に影が落ちているように見せる為に
床用の平面モデルを用意し、その床に落ちた影だけを描画する
(白い箇所は描画しない箇所)
カメラから取得した映像と合成
#UE4AllStudy
影を落とす床用のマテリアル
影以外の部分を抜く必要があるが、
影とそれ以外の部分を分離する処理は実装が面倒…
カメラから取得した画像を床に適用することで、
UE4の描画結果とカメラ画像を合成した後に
影だけ残るようにする
#UE4AllStudy
カメラ画像を床に適用するには
ARKit / ARCoreプラグインに含まれる
パススルー用のマテリアルを複製し改造する!
ARKitCameraMaterial / GoogleARCorePassthroughCameraMaterial コンテンツブラウザの右下
#UE4AllStudy
改造手順
1. Material DomainをPostProcess から Surfaceに
2. ShadingModelをDefault Lit から Unlit に
3. TexCorrd[0] ノードをScreenPosition ノードに置き換え
#UE4AllStudy
Unlit(Emissiveのみ) な床に影を落とすには?
カメラ画像がライティングの影響を受けないよう床のマテリアルは Unlitにする必要がある
• Unlitの場合、通常のシャドウは落ちなくなってしまう…
#UE4AllStudy
変調シャドウ(Modulated Shadows)を使う!
モバイルプラットフォーム用に用意された
低負荷な動的シャドウ• Unlitの場合でもシャドウが落ちる
• 影の色を設定可能 ( = 設定する必要がある )
公式ドキュメント• モバイル プラットフォーム向けのライティング
• 変調シャドウの使用方法
#UE4AllStudy
変調シャドウを使うためには
• MobileHDRを有効に
• Directional LightをStationaryに
• Directional LightのCast Modulated Shadowsを有効に
•シャドウを落としたいメッシュのMobility設定をStatic以外に
#UE4AllStudy
変調シャドウを確認するには
•モバイルプレビュー機能を使う• 公式ドキュメントへのリンク
•端末に転送し、実機上で確認
#UE4AllStudy
ARKit / ARCore共に明るさ推定機能を持ってます
ARKit• 公式APIページへのリンク
ARCore• 公式APIページへのリンク
• Get Latest Light Estimation
#UE4AllStudy
ARKitの明るさ推定機能も使いたい!…が
FAppleARKitLightEstimateクラスの
AmibientIntensity にARKitが推定した値が格納されている• FAppleARKitFrameが持っている
LightEstimateがBPに公開されていない…
• なので、BPから取得することが現状不可能…
#UE4AllStudy
現状は、以下のようなコードで使用可能(BPノード化しておくと便利)float UAppleARKitBlueprintLibrary::GetEstimateAmbientIntensity(UObject* WorldContextObject)
{
FAppleARKitFrame frame;
if (GetCurrentFrame(WorldContextObject, frame) && frame.LightEstimate.bIsValid)
{
return frame.LightEstimate.AmbientIntensity;
}
return -1.0f;
}
#UE4AllStudy
注意:ライトの向きは(現時点では)取得不可
ARKit, ARCore共にカメラ画像から推定した全体の明るさ(float値)しか返さない
• SDK側の仕様。今後改善されるかも?• ARKitはFaceTracking時は光源の方向も推定するらしい (未検証)
#UE4AllStudy
もし自力でライトの向きを推定したい場合
CEDEC2014にて SIE(当時はSCE) 様が講演した
「PS4ダイナミックライティング」が参考になるかも• 4Gamer.net [CEDEC 2014]現実と仮想の狭間でエンターテイメントを作る。SCEが語るAR(拡張現実)コンテンツの制作事例
#UE4AllStudy
今後の対応予定について
以降の内容は 4.19 Preview 0 ぐらいの内容です
タイミング的に大きくは変わらないと思いますが、
今後リリースされるものとは少し異なる可能性があります
#UE4AllStudy
ARSystemクラスの追加
ARKit , ARCoreのラッパークラス• 実装が異なっていた箇所を共通化することで
1つのコードでARKit, ARCore両対応できるように
ARSystemの追加に伴い、
AR向けのBP関数ライブラリが強化!
#UE4AllStudy
AR機能のON/OFFが可能に
プロジェクト設定の Start in AR が有効でも
強制的にAR機能が有効にならないように
Start in AR が有効でも
Start ARノードを呼び出さないと
AR機能が働かないようになりました
#UE4AllStudy
しかし、ARCoreはARSystemに未対応(4.19時点)<The method or operation is not implemented.>
ARCore自体がまだプレビューなのが理由• SDK自体が大きく変わる可能性がある
将来的にはARSystemに組み込まれる• 4.19ではARSystemを経由して
ARKit(iOS)でARコンテンツを作成しておけば
ARCore正式リリース時の対応は楽に
#UE4AllStudy
置き換えるノードは一つだけ!
ARKit用の Hit Test~ノード をARSystemの Line Trace~に置き換え
• Hit Test~ノードは4.19でも存在するが、中身の処理が空に(その為、使っていてもエラーが発生しないので注意)
#UE4AllStudy
付録 – 各SDK公式のベストプラクティス -
ARKit• About Augmented Reality and ARKit
• https://developer.apple.com/documentation/arkit/about_augmented_reality_and_arkit#overview
• Human Interface Guidelines• https://developer.apple.com/ios/human-interface-
guidelines/technologies/augmented-reality/
ARCore• Best practices for mobile AR design
• https://www.blog.google/products/google-vr/best-practices-mobile-ar-design/