ExportPhotographyCamera(カメラAPI)

このページは過去の情報となります。
新しいスクリプトリファレンスはこちらになります。

VCI 上で各種カメラを管理するクラスです。

UniVCI v0.33.0 パッケージ内の Assets/VCI-Official-Samples/CameraApiSample 以下にサンプル VCI が同梱されてますので、合わせてご確認ください。

ExportCameraSystem
名前 説明 バージョン
CreatePhotographyCamera VCI 上にカメラを作成
ExportPhotographyCamera
名前 説明 バージョン
GetCameraPreviewTextureId プレビュー用のテクスチャの ID を取得
GetAspectRatio プレビューと写真のテクスチャのアスペクト比を取得
TakePhotograph 写真を撮影
SetOnTakePhotoCallback 撮影時に実行されるコールバック関数を登録
GetVerticalFieldOfView 垂直 FOV を取得
SetVerticalFieldOfView 垂直 FOV を設定
GetNearClipPlane Near Clip Plane までの距離を取得
SetNearClipPlane Near Clip Plane までの距離を設定
ReleaseCamera カメラを破棄

CreatePhotographyCamera

ExportCameraSystem. CreatePhotographyCamera fun(followTransform: ExportTransform): ExportPhotographyCamera

VCI 上に写真撮影用カメラを生成します。
生成された写真撮影用カメラの位置や向きは、引数に渡した ExportTransform に追従します
非同期で生成されるため、全員に表示させる場合は、初期化やメッセージ受信時などにカメラ作成する必要があります。

引数

followTransform: ExportTransform

返り値

ExportPhotographyCamera

nil

サンプル

main.lua
-- 写真撮影用カメラの位置姿勢を追従させるべき GameObject の Transform を取得
local cameraAnchor = vci.assets.GetTransform("CameraAnchor")
 
-- 写真撮影用カメラを生成する
local camera = vci.cameraSystem.CreatePhotographyCamera(cameraAnchor)
 
-- 以後、変数 camera を通して写真撮影用カメラを操作できるようになる

GetCameraPreviewTextureId

ExportPhotographyCamera. GetCameraPreviewTextureId fun(): string

写真撮影用カメラのプレビュー用のテクスチャ ID を取得します。

引数

なし

返り値

string

nil

サンプル

main.lua
-- 写真撮影用カメラのプレビューを表示する
 
-- 写真撮影用カメラを生成
local cameraAnchor = vci.assets.GetTransform("CameraAnchor")
local camera = vci.cameraSystem.CreatePhotographyCamera(cameraAnchor)
 
-- プレビューを表示すべき GameObject に、"Display" という名前のマテリアルが割り当てられているとする
local previewMaterialName = "Display"
 
-- 写真撮影用カメラのプレビューのテクスチャを示すIDを取得
local previewTextureId = camera.GetCameraPreviewTextureId()
-- ID を渡し、プレビューを表示する
vci.assets.material.SetTexture(previewMaterialName, previewTextureId)

GetAspectRatio

ExportPhotographyCamera. GetAspectRatio fun(): number

写真撮影用カメラのプレビューと写真のテクスチャのアスペクト比(横幅を縦幅で割った値)を取得します。
現状、すべての写真撮影用カメラのプレビュー/写真テクスチャのアスペクト比は 16:9 固定 です。

引数

なし

返り値

number

nil

サンプル

main.lua
-- 写真撮影用カメラのアスペクト比を取得する
 
-- 写真撮影用カメラを生成する
local cameraAnchor = vci.assets.GetTransform("CameraAnchor")
local camera = vci.cameraSystem.CreatePhotographyCamera(cameraAnchor) 
 
-- アスペクト比を取得
local aspectRatio = camera.GetAspectRatio()
-- アスペクト比を VCI コンソールに表示
-- * 現在、アスペクト比は 16:9 で固定
-- * そのため 16/9 -> 1.777777... が表示される
print(aspectRatio)

TakePhotograph

ExportPhotographyCamera. TakePhotograph fun(): bool

写真を撮影します。

引数

なし

返り値

bool

nil

サンプル

main.lua
-- 写真撮影用カメラで写真を撮影する
 
-- Use すると撮影が実行される "CameraButton" という SubItem があるとする
local cameraButtonName = "CameraButton"
 
-- 写真撮影用カメラを生成する
local cameraAnchor = vci.assets.GetTransform("CameraAnchor")
local camera = vci.cameraSystem.CreatePhotographyCamera(cameraAnchor) 
 
-- "CameraButton" が Use されたら写真を撮影する
-- * SetOnTakePhotograph でコールバック関数がセットされていた場合、撮影成功時にその関数が実行される
function onUse(item)
  if item == cameraButtonName then
    camera.TakePhotograph()
  end
end

SetOnTakePhotoCallback

ExportPhotographyCamera. SetOnTakePhotoCallback fun()

写真撮影時に実行されるコールバック関数を登録します。

引数

callback: fun(table photoMetadata)

返り値

なし

サンプル

main.lua
-- 写真撮影時に実行されるコールバック関数をセットする
 
-- 撮影結果を表示すべき GameObject に "Photo" というマテリアルが割り当てられているとする
local photoMaterialName = "Photo"
 
-- 写真撮影時に実行されるコールバック関数を定義
function onTakePhotoCallback(photoMetadata)
  -- photoMetadata テーブルから、撮影結果のテクスチャを示す ID を取得
  local photoTextureId = photoMetadata.textureId
  -- ID を渡して、撮影結果を表示する
  vci.assets.material.SetTexture(photoMaterialName, photoTextureId)
end
 
-- 写真撮影用カメラを生成する
local cameraAnchor = vci.assets.GetTransform("CameraAnchor")
local camera = vci.cameraSystem.CreatePhotographyCamera(cameraAnchor) 
 
-- コールバック関数をセットする
-- * 以後、ExportPhotographyCamera.TakePhotograph が実行されるたび onTakePhotoCallback が実行されるようになる
camera.SetOnTakePhotoCallback(onTakePhotoCallback)

GetVerticalFieldOfView

ExportPhotographyCamera. GetVerticalFieldOfView fun(): number

写真撮影用カメラの垂直 FOV を取得します。

引数

なし

返り値

number

nil

サンプル

main.lua
-- 写真撮影用カメラの垂直 FOV 取得
 
-- 写真撮影用カメラを生成する
local cameraAnchor = vci.assets.GetTransform("CameraAnchor")
local camera = vci.cameraSystem.CreatePhotographyCamera(cameraAnchor) 
 
-- 垂直 FOV を取得
local currentFov = camera.GetVerticalFieldOfView()
-- VCIコンソールにFOVの値が表示される
-- * デフォルト値は30
print(currentFov)

SetVerticalFieldOfView

ExportPhotographyCamera. SetVerticalFieldOfView fun(value: number)

写真撮影用カメラの垂直 FOV を設定します。

引数

value: number

返り値

なし

サンプル

main.lua
-- 写真撮影用カメラの垂直 FOV を設定
 
-- 写真撮影用カメラを生成する
local cameraAnchor = vci.assets.GetTransform("CameraAnchor")
local camera = vci.cameraSystem.CreatePhotographyCamera(cameraAnchor) 
 
-- 垂直 FOV を 60 に設定
camera.SetVerticalFieldOfView(60)
 
local currentFov = camera.GetVerticalFieldOfView()
-- VCIコンソールに 60 と表示される
print(currentFov)

GetNearClipPlane

ExportPhotographyCamera. GetNearClipPlane fun(): number

写真撮影用カメラの Near Clip Plane までの距離を取得します。

引数

なし

返り値

number

nil

サンプル

main.lua
-- 写真撮影用カメラの Near Clip Plane までの距離を取得
 
-- 写真撮影用カメラを生成する
local cameraAnchor = vci.assets.GetTransform("CameraAnchor")
local camera = vci.cameraSystem.CreatePhotographyCamera(cameraAnchor) 
 
-- Near Clip Plane までの距離を取得
local currentNearClip = camera.GetNearClipPlane()
-- VCI コンソールに Near Clip Plane までの距離が表示される
-- * デフォルトは 0.01
print(currentNearClip)

SetNearClipPlane

ExportPhotographyCamera. SetNearClipPlane fun(value: number)

写真撮影用カメラの Near Clip Plane までの距離を設定します。

引数

value: number

返り値

なし

サンプル

main.lua
-- 写真撮影用カメラの Near Clip Plane までの距離を設定
 
-- 写真撮影用カメラを生成する
local cameraAnchor = vci.assets.GetTransform("CameraAnchor")
local camera = vci.cameraSystem.CreatePhotographyCamera(cameraAnchor) 
 
-- Near Clip Plane までの距離を 10 に設定
camera.SetNearClipPlane(10)
 
local currentNearClipPlane = camera.GetNearClipPlane()
-- VCI コンソールに 10 と表示される
print(currentNearClipPlane)

ReleaseCamera

ExportPhotographyCamera. ReleaseCamera fun()

引数

なし

返り値

なし

サンプル

main.lua
-- 写真撮影用カメラの破棄
 
-- 写真撮影用カメラを生成する
local cameraAnchor = vci.assets.GetTransform("CameraAnchor") 
local camera = vci.cameraSystem.CreatePhotographyCamera(cameraAnchor)
 
-- 
-- この間、写真撮影用カメラを操作可能
-- 
 
-- 写真撮影用カメラを破棄する
camera.ReleaseCamera()
 
-- 以後、該当の写真撮影用カメラを操作することができない