Language:

サイドバー

バーチャルキャスト公式Wiki

メニュー

VirtualCast

THE SEED ONLINE

配信

その他

リリース情報

デベロッパー向け


開発環境

VRM

VCI

GLB

vci:script:reference:exportphotographycamera

ExportPhotographyCamera

写真撮影用カメラを表すクラスです。

  • UniVCI v0.33.0 以降で Export される VCI で使用できます。
  • バーチャルキャスト 2.1.3c 以降で動作します。
  • 現在、この APIルーム上でのみ動作します

メンバ変数・関数一覧

[EmbeddedScriptWorkspace]フォルダ内の[types.lua]を開くと一覧を確認できます。

名前 説明
GetCameraPreviewTextureId fun(): string 写真撮影用カメラのプレビュー用のテクスチャの ID を取得します。
GetAspectRatio fun(): number 写真撮影用カメラのプレビューと写真のテクスチャのアスペクト比を取得します。
TakePhotograph fun(): bool 写真を撮影します。
SetOnTakePhotoCallback fun(callback: fun) 写真撮影時に実行されるコールバック関数を登録します。
GetVerticalFieldOfView fun(): number 写真撮影用カメラの垂直 FOV を取得します。
SetVerticalFieldOfView fun(value: number) 写真撮影用カメラの垂直 FOV を設定します。
GetNearClipPlane fun(): number 写真撮影用カメラの Near Clip Plane までの距離を取得します。
SetNearClipPlane fun(value: number) 写真撮影用カメラの Near Clip Plane までの距離を設定します。
ReleaseCamera fun() 写真撮影用カメラを破棄します。

GetCameraPreviewTextureId

GetCameraPreviewTextureId fun(): string

説明

  • 写真撮影用カメラのプレビュー用のテクスチャ ID を取得します。
  • プレビューのテクスチャに表示される映像のフレームレートは、ルーム上に存在する他カメラ(他 VCI 上に生成された写真撮影用カメラ、フォトキャプチャーカメラ)が多いほど低下します

引数

なし

返り値

string

  • プレビューテクスチャのテクスチャ ID

nil

  • ExportPhotographyCamera が破棄済みであった場合、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

GetAspectRatio fun(): number

説明

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

引数

なし

返り値

number

  • 写真撮影用カメラのプレビューと写真のテクスチャのアスペクト比

nil

  • ExportPhotographyCamera が破棄済みであった場合、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

TakePhotograph fun(): bool

説明

  • 写真を撮影します。
    • ローカルマシンの負荷によっては即座に撮影されない場合があります。
    • ExportPhotographyCamera.SetOnTakePhotoCallback によって対象のカメラにコールバック関数が紐づけられている場合、写真撮影時にその関数が実行されます。
  • 撮影した写真は、TakePhotograph が実行されたユーザーの環境上で画像として保存されます
    • 画像の保存場所、ファイル名、ファイルフォーマットフォトキャプチャーカメラによって撮影した場合と同じものになります
    • 撮影した写真の解像度は、フォトキャプチャーカメラの解像度設定に準拠します
  • 写真撮影後の0.5秒の間は、再度写真撮影を行うことができません。

引数

なし

返り値

bool

  • 写真撮影の成否
    • 撮影後 0.5 秒以内に再度 TakePhotograph を実行した場合、写真撮影は行われず false が返されます。
    • それ以外は、写真撮影が実行され true が返されます。

nil

  • ExportPhotographyCamera が破棄済みであった場合、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

SetOnTakePhotoCallback fun()

説明

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

引数

callback: fun(table photoMetadata)

  • コールバックとして登録する関数
    • photoMetadataは、撮影された写真に関する以下の情報を持ちます。
      • photoMetadata.textureId: 撮影した写真のテクスチャ ID
        • 撮影結果のテクスチャは、5秒後に無効化(テクスチャが真っ黒になる)されます
    • 関数以外を渡した場合、コンソールにエラーメッセージを出力します。

返り値

なし

サンプル

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

GetVerticalFieldOfView fun(): number

説明

  • 写真撮影用カメラの垂直 FOV を取得します。
    • 単位は degrees
    • デフォルトの値は 30

引数

なし

返り値

number

  • 写真撮影用カメラの垂直 FOV

nil

  • ExportPhotographyCamera が破棄済みであった場合、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

SetVerticalFieldOfView fun(value: number)

説明

  • 写真撮影用カメラの垂直 FOV を設定します。
    • 単位は degrees

引数

value: number

  • 設定する垂直 FOV の値
  • 設定可能な値の範囲は 1e-05 ~ 179 です。
    • 範囲外の値を渡した場合、その値は範囲内に clamp されます。

返り値

なし

サンプル

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

GetNearClipPlane fun(): number

説明

  • 写真撮影用カメラの Near Clip Plane までの距離を取得します。
    • 単位は world units(バーチャルキャストではメートル
    • デフォルトの値は 0.01

引数

なし

返り値

number

  • 写真撮影用カメラの Near Clip Plane までの距離

nil

  • ExportPhotographyCamera が破棄済みであった場合、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

SetNearClipPlane fun(value: number)

説明

  • 写真撮影用カメラの Near Clip Plane までの距離を設定します。
    • 単位は world units(バーチャルキャストではメートル

引数

value: number

  • 設定する Near Clip Plane までの距離の値
  • 設定可能な値の範囲は 0.01 ~ 100 です。
    • 範囲外の値を渡した場合、その値は範囲内に clamp されます。

返り値

なし

サンプル

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

ReleaseCamera fun()

説明

  • 写真撮影用カメラを破棄します。
  • 破棄したカメラは、以後操作することができなくなります。

引数

なし

返り値

なし

サンプル

main.lua
-- 写真撮影用カメラの破棄
 
-- 写真撮影用カメラを生成する
local cameraAnchor = vci.assets.GetTransform("CameraAnchor") 
local camera = vci.cameraSystem.CreatePhotographyCamera(cameraAnchor)
 
-- 
-- この間、写真撮影用カメラを操作可能
-- 
 
-- 写真撮影用カメラを破棄する
camera.ReleaseCamera()
 
-- 以後、該当の写真撮影用カメラを操作することができない
vci/script/reference/exportphotographycamera.txt · 最終更新: 2021/11/10 14:34 by santarh

ページ用ツール