写真撮影用カメラ#

Room only

VCIで写真撮影やプレビューを行うための機能です。

概要#

  • VCIスクリプトで制御できる写真撮影用カメラをVCI内に作成します。

  • 撮影した写真はルームのキャプチャーカメラと同じように画像ファイルとして保存されます。

  • プレビュー映像のテクスチャを任意のマテリアルに設定するができるので、遠隔地のカメラの映像を表示するなどの用途にも利用できます。

  • 写真は撮影してから5秒間、テクスチャとして任意のマテリアルに設定できます。

  • 1つのVCIで作成できる写真撮影用カメラは 1 つだけです。

  • この機能はルームでのみ動作します。

写真撮影用カメラの作成#

写真撮影用カメラの生成には ExportCameraSystem を使用します。
以下は写真撮影用カメラを生成するサンプルコードです。

-- 写真撮影用カメラの位置姿勢を追従させるべき GameObject の Transform を取得
local cameraAnchor = vci.assets.GetTransform("CameraAnchor")

-- 写真撮影用カメラを表す ExportPhotographyCamera のインスタンスを生成する
local camera = vci.cameraSystem.CreatePhotographyCamera(cameraAnchor)

写真撮影用カメラの制御#

生成した写真撮影用カメラの制御には ExportPhotographyCamera を使用します。

プレビューの表示#

写真カメラのプレビュー映像を任意のマテリアルのテクスチャとして表示できます。
以下はプレビュー表示のサンプルコードです。

-- `camera` には写真撮影用カメラを表す ExportPhotographyCamera のインスタンスが格納されているとします

-- プレビューを表示すべき GameObject に "Display" という名前のマテリアルが設定されているとします
local previewMaterialName = "Display"

-- 写真撮影用カメラのプレビュー画像のテクスチャ ID を取得
local previewTextureId = camera.GetCameraPreviewTextureId()

-- "Display" マテリアルにプレビュー画像をテクスチャとして設定
vci.assets.material.SetTexture(previewMaterialName, previewTextureId)

写真撮影#

写真撮影用カメラで写真を撮影できます。
以下は写真撮影のサンプルコードです。

-- `camera` には写真撮影用カメラを表す ExportPhotographyCamera のインスタンスが格納されているとします

-- UseするとUseしたプレイヤーの環境下で撮影が行われ、撮影した写真がUseしたプレイヤーのストレージに保存される
function onUse(subItemName)
    camera.TakePhotograph()
end

撮影した写真の表示#

写真撮影用カメラで撮影した写真を任意のマテリアルのテクスチャとして表示できます。
テクスチャは撮影から5秒後に無効化され、真っ黒になります。
以下は写真撮影のサンプルコードです。

-- `camera` には写真撮影用カメラを表す ExportPhotographyCamera のインスタンスが格納されているとします

-- 撮影結果のテクスチャを表示する GameObject に "Photo" という名前のマテリアルが設定されているとする
local photoMaterialName = "Photo"

-- 写真撮影時に実行されるコールバック関数を定義
function onTakePhotoCallback(photoMetadata)
  local photoTextureId = photoMetadata.textureId
  vci.assets.material.SetTexture(photoMaterialName, photoTextureId)
end

-- 写真撮影時に onTakePhotoCallback を実行するように設定
-- 以後、写真撮影用カメラで写真を撮影すると、onTakePhotoCallback が実行される
camera.SetOnTakePhotoCallback(onTakePhotoCallback)

参考

より詳細なサンプルはこちらを参照してください。
サンプルカメラ [VirtualCast]