Unity
HoloLens
WebCamCapture

MRキャプチャでオブジェクトが映らない人へ

概要

HoloLensのMRキャプチャをしたいけど、
公式サンプルをコピペしてもうまくいかなくて悩んでる人向けの記事です。
備忘録みたいなメモ。

どうしてこの記事を書いたのか

Unityの提供しているMRキャプチャ用のAPIとして、
UnityEngine.XR.WSA.WebCam.PhotoCapture があります。
公式のリファレンスはこちら
EmptyObjectとCameraを置いたシーンにこのサンプルをコピペすると
HoloLensのカメラで「普通の写真撮影」はできます。

ただ、このままだと「HoloLensで表示しているUnityのオブジェクトを入れた撮影(Mixed reality capture)」はできません。
せっかくのMR用撮影機能なのに、公式サンプルが撮影できないモードで、初心者さんに優しくないなーと思ったのでこの記事を書きました。

変更が必要な点

1.CreateAsyncの修正

サンプルコードの16行目で使われているこちら

PhotoCapture.CreateAsync(false, delegate(PhotoCapture captureObject) {

最初の引数がfalseで渡されていますが、リファレンスを確認すると、Hologramと合成するかというフラグになっています。
こちらは当然trueを指定して、Hologramの表示フラグをオンにする必要があります。

PhotoCapture.CreateAsync(true, delegate(PhotoCapture captureObject) {

2.hologramOpacity の修正

サンプルコード19行目も修正しましょう。

cameraParameters.hologramOpacity = 0.0f;

Opacityは日本語だと不透明度のこと。
これが0.0fでは完全に透明なため表示できません。
リファレンスによるとThis value must be within the range of 0.0 to 1.0.つまり0.0から1.0の間で指定してねとのことなので、
とりあえず0.9fくらいを入れてからお好みで調整するとよいと思います。

補足

自分がコピペして首をひねることになったので、
他にも「さくっと試してみたい!」って人が引っかかったらかわいそうだなと、解説記事を書きました。
なにか突っ込みなどありましたらご指摘ください。