このページは過去の情報となります。
新しいスクリプトリファレンスはこちらになります。
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 | カメラを破棄 |
ExportCameraSystem. CreatePhotographyCamera fun(followTransform: ExportTransform): ExportPhotographyCamera
VCI 上に写真撮影用カメラを生成します。
生成された写真撮影用カメラの位置や向きは、引数に渡した ExportTransform に追従します。
非同期で生成されるため、全員に表示させる場合は、初期化やメッセージ受信時などにカメラ作成する必要があります。
followTransform
: ExportTransform
nil
-- 写真撮影用カメラの位置姿勢を追従させるべき GameObject の Transform を取得 local cameraAnchor = vci.assets.GetTransform("CameraAnchor") -- 写真撮影用カメラを生成する local camera = vci.cameraSystem.CreatePhotographyCamera(cameraAnchor) -- 以後、変数 camera を通して写真撮影用カメラを操作できるようになる
ExportPhotographyCamera. GetCameraPreviewTextureId fun(): string
写真撮影用カメラのプレビュー用のテクスチャ ID を取得します。
なし
string
nil
ExportPhotographyCamera
が破棄済みであった場合、string の代わりに nil を返します。-- 写真撮影用カメラのプレビューを表示する -- 写真撮影用カメラを生成 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)
ExportPhotographyCamera. GetAspectRatio fun(): number
写真撮影用カメラのプレビューと写真のテクスチャのアスペクト比(横幅を縦幅で割った値)を取得します。
現状、すべての写真撮影用カメラのプレビュー/写真テクスチャのアスペクト比は 16:9 固定 です。
なし
number
nil
ExportPhotographyCamera
が破棄済みであった場合、number の代わりに nil を返します。-- 写真撮影用カメラのアスペクト比を取得する -- 写真撮影用カメラを生成する 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)
ExportPhotographyCamera. TakePhotograph fun(): bool
写真を撮影します。
TakePhotograph
が実行されたユーザーの環境上で画像として保存されます。なし
bool
TakePhotograph
を実行した場合、写真撮影は行われず false が返されます。
nil
ExportPhotographyCamera
が破棄済みであった場合、bool の代わりに nil を返します。-- 写真撮影用カメラで写真を撮影する -- 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
ExportPhotographyCamera. SetOnTakePhotoCallback fun()
写真撮影時に実行されるコールバック関数を登録します。
callback
: fun(table photoMetadata)
photoMetadata
は、撮影された写真に関する以下の情報を持ちます。photoMetadata.textureId
: 撮影した写真のテクスチャ IDなし
-- 写真撮影時に実行されるコールバック関数をセットする -- 撮影結果を表示すべき 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)
ExportPhotographyCamera. GetVerticalFieldOfView fun(): number
写真撮影用カメラの垂直 FOV を取得します。
なし
number
nil
ExportPhotographyCamera
が破棄済みであった場合、number の代わりに nil を返します。-- 写真撮影用カメラの垂直 FOV 取得 -- 写真撮影用カメラを生成する local cameraAnchor = vci.assets.GetTransform("CameraAnchor") local camera = vci.cameraSystem.CreatePhotographyCamera(cameraAnchor) -- 垂直 FOV を取得 local currentFov = camera.GetVerticalFieldOfView() -- VCIコンソールにFOVの値が表示される -- * デフォルト値は30 print(currentFov)
ExportPhotographyCamera. SetVerticalFieldOfView fun(value: number)
写真撮影用カメラの垂直 FOV を設定します。
value
: number
なし
-- 写真撮影用カメラの垂直 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)
ExportPhotographyCamera. GetNearClipPlane fun(): number
写真撮影用カメラの Near Clip Plane までの距離を取得します。
なし
number
nil
ExportPhotographyCamera
が破棄済みであった場合、number の代わりに nil を返します。-- 写真撮影用カメラの 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)
ExportPhotographyCamera. SetNearClipPlane fun(value: number)
写真撮影用カメラの Near Clip Plane までの距離を設定します。
value
: number
なし
-- 写真撮影用カメラの 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)
ExportPhotographyCamera. ReleaseCamera fun()
なし
なし
-- 写真撮影用カメラの破棄 -- 写真撮影用カメラを生成する local cameraAnchor = vci.assets.GetTransform("CameraAnchor") local camera = vci.cameraSystem.CreatePhotographyCamera(cameraAnchor) -- -- この間、写真撮影用カメラを操作可能 -- -- 写真撮影用カメラを破棄する camera.ReleaseCamera() -- 以後、該当の写真撮影用カメラを操作することができない