トマシープが学ぶ

Unity/VR/AR/デザイン好きのミーハー 記事内容は自分用のメモです

【ARCamera】ARFoundationのカメラ設定【Unity】

ARのトラッキングを止める

ARSessionについているARInputManagerをオフ

f:id:bibinbaleo:20200702105348p:plain

ARのカメラ描画をやめる

カメラ映像が映っているところを真っ黒にしたい

ARCameraについているARCameraBackgroundをオフ

f:id:bibinbaleo:20200702105209p:plain

CameraはSolidColorでBackgroundで色を設定する

f:id:bibinbaleo:20200702105308p:plain

スケール変更

ARFoundationのサンプルにScaleというものがある。

f:id:bibinbaleo:20200702110035p:plain

github.com

Scaleは実際にオブジェクトのサイズを変更しているのではなく、ARSessionOriginを変更している。

https://github.com/Unity-Technologies/arfoundation-samples/blob/latest-preview/Assets/Scripts/ScaleController.cs

ARシーンのコンテンツの見かけのスケールを調整する方法を示します。これは、コンテンツの代わりに「ARSessionOrigin」を移動、回転、およびスケーリングすることによりこれを行います。複雑なシーンは、作成後に移動できないことが多く(例:地形)、スケールは物理学、パーティクル効果、AIナビゲーションなどの他のシステムに悪影響を与える可能性があります。「ARSessionOrigin」のスケール機能は、検出された平面上の位置にコンテンツを「表示」し、たとえば、建物サイズのオブジェクトをテーブルトップミニチュアにスケールする場合に便利です。

このサンプルを使用するには、最初に平面が検出されるまでデバイスを動かしてから、平面をタップします。タッチポイントにコンテンツが表示されます。コンテンツを配置した後、画面上のスライダーを使用してその回転と拡大縮小を調整できます。コンテンツ自体は移動、回転、拡大縮小されないことに注意してください。

関連するスクリプトは「MakeAppearOnPlane.cs」です。

note.com

 ARSessionOriginにScaleControllerを付けて、

f:id:bibinbaleo:20200702110037p:plain

Sliderをセットしたらよい

f:id:bibinbaleo:20200702110033p:plain

参考

xr-hub.com

ARにおける大きさ変化

blogs.unity3d.com

スケール調整は地面推定して、タップして配置した後しか使えない?

RotateとScale

エディタだとRotateを動かした後ならScaleが動く。

Rotateのスライダーを動かすとContentPlacement Offsetというオブジェクトができる

f:id:bibinbaleo:20200703170728p:plain

Zが-2

f:id:bibinbaleo:20200703170836p:plain

Zの数字は回転前のARSessionOriginのScaleの大きさで変化している。
デフォルトは-2m
Scale100だと-0.5m

 

この状態になるとARSessionOriginのZの位置が100(オブジェクトまでの距離)になる

f:id:bibinbaleo:20200703171020p:plain

そして中心がオブジェクトの位置になる

f:id:bibinbaleo:20200703171017p:plainf:id:bibinbaleo:20200703170724p:plain

そしてオブジェクトを中心に外回りして対象を映す。


スケールの変更はカメラの距離が近づいているだけに見える。なんでスケールが変わったらカメラがオブジェクトに近づくのかよくわかっていない。

Fov

ARの時fovは端末のカメラの画角によって変わっているのか?

VRは端末によって変わっているらしい。

一部のVR SDKには、VRカメラに使用される固定視野値があります。これらのSDKでVRが有効になっている場合、このプロパティは常にSDKから値を返します。プロパティを設定しようとすると警告がログに記録され、値は無視されます。

Camera-fieldOfView - Unity スクリプトリファレンス

 

エディタではデフォルトは60

f:id:bibinbaleo:20200703162758p:plain

極端な数値にして実行してもちゃんと現実空間にあった表示がされてたので、変更されているっぽい!

だが、ARInputManagerとARCameraBackgroundをオフにした状態だとfovはエディタで設定した数値のままだった。つまりどちらかでfovを変えている。どっちだろ〜

 

下のスレッドはVuforiaで強制的にfovを変更しようと試みている。

developer.vuforia.com

やはり、デバイスから強制的にfovを変更しているので、上書きでfovを変更するのは大変らしい。