1 - クイックスタート

VirtualLens2の最小限のセットアップ手順と使用方法について解説します。

1.1 - セットアップガイド

アバターにVirtualLens2を組み込むための手順を解説します。

要件の確認

VirtualLens2のセットアップの前に対象アバターが以下の要件を満たしているかご確認ください。

  • VRCSDK 3.1.12 以降を使用してセットアップされている
  • Modular Avatar 1.8.0 以降がプロジェクトにインポートされている
  • Expression Parameters に8ビット以上の余裕がある

Modular Avatar のインポート

Modular Avatar のドキュメントを参考にプロジェクトに Modular Avatar をインポートしてください。 すでにインポートされている場合はそのバージョンが 1.8.0 以降であるかをご確認ください。

Unitypackageファイルのインポート

Unitypackageファイルのインポート

ダウンロードしたパッケージ (VirtualLens2_v2.x.x.unitypackage) をプロジェクトにインポートしてください。

Unitypackageファイルのインポート

セットアップヘルパーの実行

セットアップ対象となるアバターを選択して右クリックし、“VirtualLens2” → “Non-Destructive Setup” を選択します。 するとセットアップヘルパーが起動するので、以下の設定項目を確認した後に “Apply” ボタンを押してください。

Avatar セットアップ対象となるアバターです。
Target Hand カメラを持たせる手です。
Settings Template VirtualLensSettingsのPrefabを設定するとそれから設定情報を読み込みます。(省略可)
Use Custom Model デフォルト以外のカメラモデルを利用する場合にチェックしてください。
Custom Model Prefab デフォルトモデルの代わりに配置するカメラモデルのPrefabを指定してください。設定しない場合モデル配置が省略されます。
Keep Root Transform カスタムモデル配置時のTransform自動調整機能を無効化します。

セットアップヘルパーの実行

カメラモデルの配置

デフォルト以外のカメラモデル利用時に自動配置がうまくいかない場合、手動でモデルを配置する必要があります。 モデルをシーンに追加した後に位置や向きを調整し、さらにカメラを追従させたいボーンの子となるように移動させてください。 また、配置した後にそのモデルについての情報を VirtualLens Settings コンポーネントに入力する必要があります。 下の画像を参考に “Camera Object” 以下の情報を設定してください。

カメラモデルの配置

アバターのアップロード

これでVirtualLens2のセットアップは完了です。 アバターをアップロードして実際に使用してみましょう。

1.2 - 撮影ガイド

VirtualLens2を用いた撮影の手順を解説します。

基本的な使い方

標準カメラの準備

メニューから “Camera” → “Photo Camera” (動画撮影に利用する場合は “Stream Camera") とたどりVRChat標準のカメラを取り出します。 この時、フォーカス機能が有効になっている場合は干渉を防ぐためにあらかじめ無効化しておいてください。

VirtualLensの起動

アクションメニューを開いて “Expressions” → “VirtualLens2” → “Enable” とたどるとVirtualLens2が起動します。 起動中は標準カメラに映る映像がVirtualLensで撮影されたもので上書きされるため、この状態で標準カメラのシャッターを切ることでVirtualLensで撮影した写真を保存することができます。

1.3 - アップグレードガイド

VirtualLens2バージョンアップ時の更新手順を解説します。

基本的な手順

Unitypackageファイルのインポート

ダウンロードした最新版のパッケージ (VirtualLens2_v2.x.x.unitypackage) を上書きインポートしてください。

Unitypackageファイルのインポート

設定の再適用(破壊的セットアップの場合のみ)

初回セットアップ時に生成された VirtualLens Settings コンポーネント内の “Apply” ボタンを再度押し、アバター内のデータを更新してください。

設定の確認・適用

特定バージョン固有の手順

v2.9.9 以前からの更新

VirtualLens2 v2.10.0 以降のバージョンでは非破壊セットアップの利用が推奨されます。 v2.9.9以前のバージョンでセットアップしていた場合、プロジェクトに Modular Avatar (1.8.0以降) をインポートした上で VirtualLens Settings コンポーネント内にある “Migrate as a Non-destructive Module” ボタンを押すことで非破壊セットアップに移行することができます。

非破壊セットアップに移行した場合、それ以降の更新の際に設定を再適用する必要はありません。

非破壊セットアップへの移行

v2.8.5 以前からの更新

VirtualLens2 v2.9.0 以降のバージョンではデフォルトの設定はPrefab (VirtualLens2/Prefabs/DefaultSettings.prefab) によって提供されるようになりました。 v2.8.5以前のセットアップヘルパーによって自動生成された設定オブジェクトはこのPrefabのインスタンスとなっていないため、今後のアップデートによるパラメータ調整を正しく反映するために設定オブジェクトをPrefabのインスタンスで置き換えることを推奨します。

設定オブジェクトの置き換えを行う場合、VirtualLens Settings コンポーネントの最下部にある “Replace by Prefab Instance” ボタンを押すことで現在の値を必要に応じてコピーしたPrefabのインスタンスを生成することができます。

2 - 機能リスト

VirtualLens2で利用可能な機能について解説します。

主要な機能についてはデモワールドでも解説されています。 実際に触りながら操作を確認したい場合はそちらもご利用ください。

デモワールドを開く

2.1 - 基本機能: ズーム・絞り・露出

ズーム・絞り・露出の設定について解説します。

ズーム (Zoom)

レンズの焦点距離 (画角・拡大率) を制御します。 焦点距離はセットアップ時に設定した “Min Focal Length” から “Max Focal Length” の範囲で設定することができます。

ズーム設定による画角の変化

絞り (Aperture)

レンズの絞り具合 (F値・ボケやすさ) を制御します。 F値はセットアップ時に設定した “Min F Number” から “Max F Number” の範囲で設定することができます。 また、値が0%の場合被写界深度シミュレーションによるぼかしが無効化されます。

絞り設定によるボケ具合の変化

露出 (Exposure)

露出 (明るさ) を制御します。 露出の値はセットアップ時に設定した “Exposure Range” の範囲で設定することができます。 また、設定された値が50%の時に0EV (露出補正なし) となります。

露出補正による明るさの変化

2.2 - フォーカス制御

オートフォーカスなどのフォーカス制御のための機能について解説します。

オートフォーカスモード

VirtualLens2には3種類のオートフォーカスが実装されています。

一点AF (Point AF)

プレビュー画面上に表示されるカーソルに写っている点にピントが合うようにフォーカスを調整します。 このカーソルはカメラを持っていない方の手の人差し指でプレビュー画面に触れることで動かすことができます。

一点AFによるピント調整

顔検出AF (Face AF)

現在写っている画像からアバターの顔もしくは瞳を検出してその点にピントを合わせます。 複数の顔が写っている場合、プレビュー画面に人差し指で触れることでどの顔にピントを合わせるかを設定することができます。

顔検出AFによるピント調整

自撮りAF (Selfie AF)

撮影者自身の瞳にピントが合うようにフォーカスを調整します。 顔検出AFと比べて軽量かつ安定して動作するため、他のプレイヤーを対象とする必要がない場合はこちらを利用することを推奨します。

自撮りAFによるピント調整

オートフォーカスのパラメータ

顔検出による追跡対象切り替えの速度

顔検出AF利用時に追跡中の顔の検出に失敗した場合、最後に検出された点から近くにある顔を探し追跡対象を切り替えようとします。 このパラメータは新たな追跡対象となる顔を探索する際にその範囲を広げる速度を調整します。

速度を上げると被写体の入れ替わりが激しい場面でどこにもピントが合っていない時間を抑えることができる代わりに、顔検出が不安定な場合に意図せず別の人にピントが合ってしまうような問題が発生しやすくなります。 逆に速度を下げると顔検出が不安定でもピント合わせが安定する代わりに自動での被写体切り替えが働くまで時間がかかるようになります。

フォーカス調整速度

オートフォーカスによってピントを合わせる点が動かされる際の速度を調整します。 この速度を遅くするとフォーカス平面までの距離が時間をかけて緩やかに変化するようになります。

マニュアルフォーカス

マニュアルフォーカス時にピントを合わせる面までの距離を設定します。 設定可能な範囲はセットアップ時に “Min Focus Distance” と “Max Focus Distance” によって設定することができます。 このパラメータが0%のときはオートフォーカスが使用されます。

2.3 - 位置と向きの制御

ドローンなどのカメラの位置と向きを制御するための機能について解説します。

自動水平出し

カメラのRoll方向の回転を打ち消し、自動で水平または垂直を維持するようにします。 Auto Snap を選択した場合、回転を30度刻みでスナップします。

手ブレ補正

カメラの移動・回転を本来の変化に対して緩やかにすることで細かい震えの影響を抑えます。 手ブレ補正有効時は映り込みを防ぐためにカメラモデルが代替モデルに置き換えられます。

ワールド空間への固定

カメラをワールド空間に固定して手に追従しないようにします。

再配置

ワールド空間に固定されたカメラを再度手で動かせる状態にします。 再配置モードではあたかもプレイヤーがカメラの近くに移動したかのようにカメラを持っていた手の動きに追従するようになります。

再配置時の動きのスケーリング

再配置モードでは手が10cm動いたらカメラは100cm動いている、といったように手の動きを拡大してカメラに伝えることができます。 その時の倍率を1倍・3倍・10倍・30倍のなかから選択することができます。

カメラの回収

ワールド空間への固定や再配置などで手元を離れたカメラを手元に戻します。

カメラ位置の記憶・呼び出し

カメラの位置を4つまで記憶して後から呼び出すことができます。 アクションメニューの Pin [1-4] を1秒以上長押しするとそのピンに現在のカメラ位置を記録します。 呼び出す際は Pin [1-4] を短く押すことでカメラ位置を記録された位置に移動させワールド空間に固定された状態にすることができます。

ドローン

両手を軽く前に出した状態でアクションメニューからドローン機能を選択すると 2D Puppet が開いてドローンモードに移行します。

ドローンモードではもともとカメラを持っていた方の手の向きと 2D Puppet の左右入力でカメラの向きを、反対側の手元に出現するギズモと白球からなるコントローラーでカメラの移動方向と速度を、 2D Puppet の上下入力でズームを制御します。白球はコントローラー側の手に常に追従し、ギズモの中心から離れるほど移動速度が大きくなります。また 2D Puppet で左右どちらかに素早くスティックを2回はじくように入力することでドローンの向きが180度回転します。

トリガーボタンで 2D Puppet を閉じるとドローンモードが終了し、カメラはワールド空間に固定された状態となります。

2.4 - その他の機能

その他の機能について解説します。

プリセットの呼び出し

セットアップ時にあらかじめ用意した設定プリセットを呼び出します。 これにより、焦点距離・絞り・露出のうちいずれか、もしくは複数の項目の組み合わせをよく使う値に設定することができます。 プリセット設定については設定リファレンスもご参照ください。

指定されたメッシュの非表示化

セットアップ時に指定したメッシュを非表示化します。 非表示化は他プレイヤーにも反映されますが、セーフティ設定でアニメーションが無効化されている場合は反映されない点に注意してください。

プレビュー画面の情報表示設定

プレビュー画面に表示する情報を設定します。デフォルト設定を変更する場合はセットアップ時に該当パラメータの設定を変更してください。

グリッド

補助線を表示します。非表示・3x3・3x3+対角線・6x4・カスタムグリッドの中から選択することができます。

設定情報

焦点距離・F値などの値をパーセント表記から一般的な単位にそれぞれ変換して画面上に表示します。

水準器

カメラの傾き具合を可視化する水準器を表示します。

フォーカスピーキング

ピントが合っている領域をハイライト表示します。無効・マニュアルフォーカス時のみ有効・常時有効の中から選択することができます。

マスク設定

VirtualLens2で撮影するときに映すオブジェクトを選択します。

ローカルプレイヤー

撮影者自身のアバターを映すかどうかを選択します。

リモートプレイヤー

撮影者以外のプレイヤーのアバターを映すかどうかを選択します。

UI要素

ネームプレートやパーソナルミラーなどのUI要素を映すかどうかを選択します。

プレビューHUD

視界の中心に大きくプレビュー画面を表示します。

シーン依存の問題への対応

アバターに組み込まれたカメラの制約により、ワールドやインスタンスにいるアバターによっては意図した挙動とならない場合があります。 いくつかのケースでは負荷の増大や操作性の軽微な劣化と引き換えに改善を図れることがあるため、VirtualLens2ではそのような状況に対処するための機能をオプションとして実装しています。

クリッピング平面の調整

クリッピング平面のうち遠景側の制限を一時的に緩めます。極端に広いワールドで遠くのものが写らない場合に設定を調整してみてください。 一方で、不必要に緩めると描画負荷の増大やZ-fightingによるちらつきの発生が懸念されます。設定を変更する際はこれらの事象に気をつけつつ調整を行ってください。

深度テクスチャ生成の有効化

深度テクスチャ (_CameraDepthTexture) を用いた効果を利用するためにはカメラに対してそれを有効化するための設定を行う必要があります。 標準カメラに対してはワールド側の設定でこの機能を有効化することができるのですが、その方法によってはアバターに組み込まれたカメラでは深度テクスチャが有効とならないことがあります。 このような場合、別の視点の深度情報を用いたような影などがVirtualLens2を用いて撮影した画像に生じます。 Depth Enabler を有効化するとVirtualLens2がキャプチャに用いるカメラでも深度テクスチャが生成されるようになるため、若干の負荷増大と引き換えに正しい描画結果を得られるようになります。

3 - 設定リファレンス

VirtualLens2のセットアップ時に変更可能な設定項目について解説します。

3.1 - 設定パラメータ一覧

VirtualLens2のセットアップ時にカスタマイズ可能な項目の一覧です。

セットアップ時に自動的に生成される VirtualLens Settings コンポーネントには様々なパラメータが存在します。 これらのパラメータを変更して再適用することでVirtualLens2の挙動をある程度カスタマイズすることができます。

基本設定 (General)

ビルドモード (Build Mode)

VirtualLens2のセットアップを非破壊編集を用いるか破壊的編集を用いるかを選択します。

アバター (Avatar)

セットアップ対象となるアバターを設定します。VRCAvatarDescriptorコンポーネントを持ち、Humanoidアバターとしてセットアップされている必要があります。 非破壊ワークフローを用いている場合はその VirtualLens Settings コンポーネントを持つオブジェクトを含んでいるアバターがセットアップ対象となります。

カメラメッシュに関する設定 (Camera Object)

カメラメッシュの設定 (Root Object, Non-Preview Root)

VirtualLens2利用時に手元に表示されるカメラオブジェクトについての設定を行います。詳細はカメラモデルの差し替えをご参照ください。

自動設定 (Auto Placement)

カメラメッシュの自動配置を再実行します。配置のリセットやカメラモデルを後から差し替える場合などに利用することができます。

マーカーオブジェクト (Marker Objects)

いくつかの機能で位置や向きの基準として使用されるオブジェクトを選択します。 必要に応じてこれらのオブジェクトの位置などを調整することで関連する挙動をカスタマイズすることができます。

スクリーン操作オブジェクト (Screen Touchers)

タッチスクリーンとの当たり判定に用いられるオブジェクトです。通常はカメラを持っていない方の手の人差し指の先に配置されます。

ドローンコントローラー (Drone Controller)

ドローンモード利用時に速度を制御するためのコントローラを表示する位置を示すオブジェクトです。 通常はカメラを持っていない方の手の手のひら付近に配置されます。

再配置時の原点 (Reposition Origin)

再配置モード利用時に再配置前の点に対応する位置を示すオブジェクトです。 通常は胸の少し前に配置されます。

自撮りマーカー (Selfie Markers)

自撮りAF利用時にピントを合わせる点を表すオブジェクトです。 通常は各目の瞳付近に配置されます。

連続値パラメータに関する設定

焦点距離 (Focal Length)

焦点距離の上限・下限・デフォルト値をフルサイズセンサ (35mm版) 換算の値で設定します。

Min Focal Length [mm] 焦点距離の下限値を設定します。
Max Focal Length [mm] 焦点距離の上限値を設定します。
Default Focal Length [mm]焦点距離のデフォルト値を設定します。
Sync Parameter for Remote焦点距離パラメータをリモートプレイヤーにも同期するようにします。

絞り (Aperture)

被写界深度シミュレーションの実装の有無と、開口部の大きさの上限・下限・デフォルト値をF値を用いて設定します。

Enable DoF Simulation 被写界深度シミュレーションを実装するかどうかを設定します。
Min F Number F値の下限値 (=開放絞り値) を設定します。
Max F Number F値の上限値を設定します。
Default F Number デフォルトのF値を設定します。Max F Number と等しい場合被写界深度シミュレーションが無効な状態を表します。
Sync Parameter for RemoteF値パラメータをリモートプレイヤーにも同期するようにします。

マニュアルフォーカス (Manual Focusing)

マニュアルフォーカス機能の実装の有無と、フォーカス可能な距離の範囲をメートル単位で設定します。

Enable Manual Focusing マニュアルフォーカス機能を実装するかどうかを設定します。
Min Focus Distance [m] マニュアルフォーカス機能利用時の最短撮影距離を設定します。
Max Focus Distance [m] マニュアルフォーカス機能利用時の最長撮影距離を設定します。
Sync Parameter for Remoteマニュアルフォーカス時のフォーカス距離をリモートプレイヤーにも同期するようにします。

露出補正 (Exposure Compensation)

露出補正機能の実装の有無と、補正値の範囲・デフォルト値を設定します。

Enable Exposure Compensation露出補正機能を実装するかどうかを設定します。
Exposure Range [EV] 露出補正値の範囲を設定します。
Default Exposure [EV] デフォルトの露出補正値を設定します。
Sync Parameter for Remote 露出補正値をリモートプレイヤーにも同期するようにします。

ドローン機能 (Drone)

ドローン機能の実装の有無と速度などのパラメータを設定します。

Enable Drone ドローン機能を実装するかどうかを設定します。
Speed Scale ドローンの速度を調整します。1秒あたりの移動量がコントローラへの入力量にこの値を乗じた量となります。
Dead Zone of Speed Controllerコントローラから入力された速度を0とみなす範囲の半径をメートル単位で設定します。
Yaw Speed Scale 2D Puppet の左右方向入力による回転の速度を設定します。目一杯入力した場合の1秒あたりの角度変化がこの値となります。
Enable Quick Turn クイックターン機能を有効化するかどうかを設定します。
Enable Zoom Control 2D Puppet の上下方向入力によるズーム制御を有効化するかどうかを設定します。

クリッピング平面 (Clipping Planes)

VirtualLens2が撮影に使用するカメラが写す範囲を設定します。

外部オブジェクトの制御

連動オブジェクト (Optional Objects)

VirtualLens2の有効・無効に連動して有効化・無効化されるオブジェクトを設定します。 チェックが有効な場合はVirtualLens2が有効な時に有効化・無効な時に無効化され、チェックが無効な場合はその逆となります。

非表示化可能オブジェクト (Hideable Meshes)

メッシュの非表示化機能で表示を制御可能なオブジェクトを設定します。 機能が有効な場合、設定したオブジェクトに含まれるMeshRendererもしくはSkinnedMeshRendererコンポーネントの有効・無効が制御されます。

プリセットの呼び出し (Quick Calls)

プリセット機能で呼び出し可能な設定を最大8個まで設定します。 焦点距離・絞り・露出補正のうちチェックされた項目のみを指定された値で更新します。

プレビュー画面の設定 (Display Settings)

デフォルト設定の変更 (Grid, Information, Level, Peaking)

デフォルト状態でプレビュー画面に表示する項目を設定します。 各項目とその値はプレビュー画面の情報表示設定に用いるものとそれぞれ対応しています。

カスタムグリッドの設定 (Custom Grids)

グリッドの代わりに使用できる画像を最大4つまで登録することができます。 画像は以下の要件を満たしていることが推奨されます。サンプルデータ (VirtualLens2/Textures/CustomGrid_Example.png) のインポート設定もあわせてご参照ください。

  • アルファチャンネルに不透明度を持つ (Alpha is Transparency の有効化)
  • 解像度は 1280x720
  • 2べきへの自動リサイズを行わない (Non-Power of 2 の無効化)
  • Mip map を生成しない (Generate Mip Maps の無効化)

オートフォーカス設定 (Default Auto Focus Settings)

デフォルト状態のオートフォーカス設定を変更します。 各項目とその値はオートフォーカスモードおよびオートフォーカスのパラメータの設定に用いるものとそれぞれ対応しています。

画像処理アルゴリズムの設定 (Algorithm Settings)

被写界深度シミュレーションのパラメータなど画質と負荷に関する設定を行います。

Enable 4K Capturingチェックが有効な場合4K撮影機能を有効化します。
Max Blurriness被写界深度シミュレーションによるボケの径の最大値を設定します。
MSAA SamplesMSAAサンプル数を設定します。大きくするとポリゴンのエッジが滑らかになる代わりに負荷が大きくなります。
Post Antialiasing後処理として適用するアンチエイリアシングに使用するアルゴリズムを選択します。
Realtime Post Antialiasing4K撮影モード有効な場合のプレビュー画面描画に使用するアンチエイリアシングアルゴリズムを選択します。

その他の設定 (Advanced Settings)

Artifacts Folder(破壊的セットアップのみ)セットアップ時に自動生成されるファイルの保存先フォルダを指定します。無指定の場合は自動的にフォルダが生成されます。
Clear Artifacts Folder(破壊的セットアップのみ)チェックを有効化するとセットアップ時に Artifacts Folder の中身を一旦全削除します。
Thickness of Touch Screenプレビュー画面の接触判定の厚みを調整します。大きい値を指定すると判定範囲が厚くなります。
Enable Write Defaultsチェックを有効化すると自動生成される Animator State の Write Defaults が有効化されます。
Depth Enablerデフォルト状態で深度テクスチャの有効化を行うかどうかを設定します。
External Pose Source外部ポーズ入力機能を使用する場合に参照されるオブジェクトを設定します。
Remote Only Mode(非破壊セットアップのみ)撮影機能などの実装を省き他プレイヤーからアバターを表示するときに必要な機能のみをセットアップします。

Modular Avatar に関する設定 (Modular Avatar Integration)

破壊的セットアップを利用しつつプロジェクトに Modular Avatar がインポートされている場合にのみ表示されます。 詳細は Modular Avatar との連携 (Legacy) もご参照ください。

Enable Modular Avatar Integrationチェックを有効化するとアバターへの変更の反映に Modular Avatar を利用します。

3.2 - カメラモデルの差し替え

VirtualLens2使用時に表示する3Dモデルの差し替えに必要な情報をまとめています。

VirtualLens2対応Prefabを利用する場合

利用したい3DモデルのパッケージにVirtualLens2対応のPrefabが含まれている場合はモデルデータ付属のドキュメントとセットアップガイドをご参照ください。 Prefab 中に VirtualLensOrigin および VirtualLensPreview という名前のオブジェクトが含まれる場合、そのPrefabはVirtualLens2に対応していると思われます。

簡易差し替え手順

ここではVirtualLens2用のPrefabや導入手順が用意されていない3Dモデルをカメラのように表示する手順について解説します。 また、Prefab化して他のアバターと共有したりセットアップ済みメッシュとして配布したい場合は下のより詳しい解説をご参照ください。

下準備

デフォルトのカメラモデルが存在する場合、ヒエラルキーから CompactCamera を削除しておきます。

テンプレート Prefab の配置

VirtualLens2/Prefabs/CameraSkeleton.prefab をシーンに追加します。

CameraSkeletonの配置

カスタムメッシュの配置

NonPreviewRoot の子として利用したいメッシュを入れます。 実際には VirtualLensOrigin の位置から撮影されるので、VirtualLensOrigin がレンズの中心などに来るように調整してください。 また、この時 VirtualLensOrigin から視線方向 (Z軸の正の方向) に 0.05m 以上離れたところに可視ポリゴンが入らないように注意してください。カメラメッシュの映り込みの原因となります。

メッシュオブジェクトの配置

プレビュー画面の位置調整

プレビュー画面およびタッチスクリーンとなる PreviewWrapper の位置とサイズを調整します。 この時、縦横比を維持するために Scale の各値 (x, y, z) として同じ値を設定するように注意してください。

プレビューオブジェクトの調整

アバター内での親子関係の修正

CameraSkeleton の位置を調整した後に連動させたいオブジェクトの子となるように移動させます。

アバターへの組み込み

設定の更新

VirtualLens Settings の Camera Object の項目を以下のように更新した後に “Apply” ボタンを押して設定を反映させます。

  • Root Object: CameraSkeleton
  • Non-Preview Root: NonPreviewRoot

なお、設定適用後にオブジェクトの位置を変更した場合、再度 “Apply” ボタンを押して設定を更新する必要があります。

設定の更新

より詳しい解説

基準オブジェクト

VirtualLens2では特定の名前を持つオブジェクトを基準として各種コンポーネントを自動生成します。 これらのオブジェクトを適切に用意することで独自の3Dモデルをカメラとして利用することができるようになります。 この章ではVirtualLens2同梱のカメラモデル (Assets/VirtualLens2/Prefabs/CompactCamera.prefab) を例に基準オブジェクトの配置について解説します。

VirtualLensOrigin

実際にキャプチャを行うカメラコンポーネント配置時の基準となるオブジェクトです。 このオブジェクトのZ軸正の方向が正面、Y軸正の方向が上となるようにカメラコンポーネントが生成されます。

VirtualLensOrigin

VirtualLensPreview

フォーカスポイント指定のためのインターフェース配置時の基準となるオブジェクトです。 このオブジェクトの姿勢とY方向のスケールをもとにタッチ判定用のカメラコンポーネントが生成されます。

なお、 CompactCamera.prefab ではプレビュー画面用の MeshRenderer も含まれていますが、これは必須ではありません。 別のオブジェクトに描画させたり、描画させないといった選択肢をとることもできます。

VirtualLensPreview

プレビュー用のマテリアル

プレビュー用画面を実装するためのマテリアルが Assets/VirtualLens2/Materials/VirtualLensPreview.mat として用意されています。 Quadなどの板ポリゴンに適用することでタッチ情報の表示も含むプレビュー画面を生成することができます。 利用例はパッケージに同梱されている CompactCamera.prefab の中身をご確認ください。

VirtualLens2 対応3Dモデルの配布について

VirtualLens2との併用を想定した3Dモデルを配布する場合、 CompactCamera.prefab のように上述の基準オブジェクトを含み、プレビュー画面のマテリアルとして VirtualLensPreview.mat を使用した Prefabを用意しておくことで、セットアップを簡略化することができるようになります。 モデルを配布・販売する場合にはそのようなPrefabの同梱もご検討ください。

3.3 - 4K撮影

VirtualLens2で4K撮影を行う際の設定項目および注意事項です。

基本的な設定

VirtualLens2側の設定

セットアップ時に VirtualLens Settings の Algorithm Settings 内にある “Enable 4K Capturing” のチェックを有効化してください。

VRChat側の設定

VRChat標準カメラのメニュー中のResolutionから 4K (2160p) を選択してください。

注意事項

設定がかみ合っていない場合の動作について

VRChat側の設定でカメラ解像度が3840x2160以外の値に設定されている場合、VirtualLens2は1920x1080用のレンダリング結果を拡大縮小して出力しようとします。 そのため、3840x2160または1920x1080以外の解像度が設定されている場合画質が劣化してしまう点にご注意ください。

また、VirtualLens2側で4Kキャプチャ設定が有効になっている場合の1920x1080用のレンダリング結果はプレビュー用として若干画質が落ちた状態となります。 これにより、VRChat側のカメラ解像度設定がデフォルト (1920x1080) のままの場合は4Kキャプチャ設定を有効化しない方が画質面では有利となります。

Stream Camera との併用について

Stream Camera 利用時のカメラ解像度はデスクトップ側ウィンドウの表示サイズと一致します。 そのため、ウィンドウサイズをうまく調整しないと上述の設定がかみ合っていない時のような画質劣化の原因となってしまいます。 可能であれば、VRChatの起動オプションを利用してフルスクリーンかつ3840x2160 (4K撮影有効時) もしくは1920x1080 (4K撮影無効時) となるように設定することをお勧めします。

3.4 - 設定テンプレートの作成

VirtualLens2のセットアップ時に使用可能な設定テンプレートの作成について解説します。

VirtualLens2の設定パラメータは多く、複数のアバターに対してほぼ同じ設定でセットアップを行う場合パラメータを入力するだけでも大きな手間となってしまいます。 そのような場合、設定テンプレートを作成しておくことで共通部分の入力を省略することができます。

設定Prefabの作成

まず一度通常の手順でセットアップを行います。その時に生成された VirtualLens Settings を持つオブジェクトをプロジェクトビューにドラッグアンドドロップすることで設定Prefabを生成することができます。 このとき新規Prefabとして作成するか Prefab Variant として作成するか確認されますが、通常は Prefab Variant として作成することをおすすめします。

v2.9.0-: デフォルト設定もPrefab (VirtualLens2/Prefabs/DefaultSettings.prefab) として提供されるようになりました。v2.8.x以前のセットアップヘルパーによって作成された VirtualLens Settings はこのPrefabを参照していないため、今後のアップデートに追従するために再度設定Prefabを作成しなおすことをおすすめします。

設定Prefabの使用

新たなアバターにVirtualLens2をセットアップする際、セットアップヘルパーの “Settings Template” の欄に先ほど作成したPrefabを指定してください。 これにより、VirtualLens2付属のデフォルト設定の代わりに作成したテンプレートを元にして設定が行われるようになります。

4 - 開発者向けガイド

パラメータの詳細など他ギミックとの連携や外部からの制御などを行いたい開発者向けの情報をまとめています。

パラメータについて

VirtualLens2の内部で利用しているパラメータを読み書きすることによって他のギミックからVirtualLens2の挙動を制御することができます。 以下にアクセス可能なパラメータとその説明を列挙します。

凡例

  • 同期関連
    • Synchronized 他プレイヤーに同期されます。
    • Non-synchronized 他プレイヤーに同期されません。
    • Optional-synchronized セットアップ時に同期を有効化した場合のみ他プレイヤーに同期されます。
  • アクセス権限
    • Read/Write 読み書きいずれも利用可能です。
    • Read only 読み取り専用パラメータです。書き換えた場合意図しない挙動をとることがあります。
    • Write only 書き込み専用パラメータです。意味が明文化されていない値をとることがあります。

コア要素

VirtualLens2 Control

Synchronized Write only

他プレイヤーとの状態の同期、メニュー入力の受付、OSCからの制御コマンドの受付に使用されます。 外部からは後述するコマンド送信のためにのみ使用することができます。

コマンドの送信

OSC経由でVRCExpressionParametersに登録されないパラメータを扱いたい場合、このパラメータに以下の表に示す値を書きこむことによって間接的に値を書き換えることができます。

説明
1(Reserved)
2Disable
3Enable
4Auto Leveler: Disable
5Auto Leveler: Horizontal
6Auto Leveler: Vertical
7(Reserved)
8Stabilizer: Disable
9Stabilizer: Weak
10Stabilizer: Medium
11Stabilizer: Strong
12Pickup
13Drop
14Reposition
15(Reserved)
16Reposition Scale: 1x
17Reposition Scale: 3x
18Reposition Scale: 10x
19Reposition Scale: 30x
20Pin: Store 1
21Pin: Store 2
22Pin: Store 3
23Pin: Store 4
24Pin: Load 1
25Pin: Load 2
26Pin: Load 3
27Pin: Load 4
28External Pose: Disabled
29External Pose: Enabled
30Focus Lock: Disabled
31Focus Lock: Enabled
32AF Mode: Point AF
33AF Mode: Face AF
34AF Mode: Selfie AF
35(Reserved)
36Tracking Speed: Immediate
37Tracking Speed: Fast
38Tracking Speed: Medium
39Tracking Speed: Slow
40Focusing Speed: Immediate
41Focusing Speed: Fast
42Focusing Speed: Medium
43Focusing Speed: Slow
44Mesh Visibility: Show
45Mesh Visibility: Hide
46Grid: None
47Grid: 3x3
48Grid: 3x3+Diagonal
49Grid: 6x4
50(Reserved)
51(Reserved)
52Information: Hide
53Information: Show
54Leveler: Hide
55Leveler: Show
56Peaking: Disable
57Peaking: MF Only
58Peaking: Always
59(Reserved)
60Far Plane: Default
61Far Plane: 10x
62Far Plane: 100x
63(Reserved)
64Transfer Mode Permissive
65Transfer Mode: Strict
66Depth Enabler: Disable
67Depth Enabler: Enable

VirtualLens2 Enable

Synchronized Read/Write

VirtualLens2が有効化されているかどうかを表します。 有効化されているときは1、そうでないときは0となります。

VirtualLens2 AltMesh

Synchronized Read only

カメラモデルの表示が代替メッシュに置き換えられているかどうかを表します。 表示が置き換えられているときは1、そうでないときは0となります。

手持ちかつ手ブレ補正が有効の場合のみローカルとリモートで挙動が異なり、ローカルでは1、リモートでは0となる点に注意してください。

基本機能

VirtualLens2 Zoom

Optional-synchronized Read/Write

焦点距離の設定にあわせて 0.0 から 1.0 の範囲で設定されます。

パラメータの値 \( x \) から焦点距離 \( f \) への変換は以下の式で行うことができます。 ここで \( f_{\min}, f_{\max} \) はそれぞれ設定項目中の Min focal length, Max focal length に対応します。

$$ f = f_{\min} \exp \Bigl\{ x \log \frac {f_{\max}} {f_{\min}} \Bigr\} $$

VirtualLens2 Aperture

Optional-synchronized Read/Write

絞り (F値) の設定にあわせて 0.0 から 1.0 の範囲で設定されます。

パラメータの値 \( x \) からF値への変換は以下の式で行うことができます。 ここで \( F_{\min}, F_{\max} \) はそれぞれ設定項目中の Min F number, Max F number に対応します。

$$ F = F_{\min} \exp \Bigl\{ x \log \frac {F_{\max}} {F_{\min}} \Bigr\} $$

VirtualLens2 Exposure

Optional-synchronized Read/Write

露出補正の設定にあわせて 0.0 から 1.0 の範囲で設定されます。

パラメータの値 \( x \) から補正値 \( E \) [EV] への変換は以下の式で行うことができます。 ここで \( E_{r} \) は設定項目中の Exposure range に対応します。

$$ E = (2x-1)E_{r} $$

位置と向きの制御

VirtualLens2 PositionMode

Non-synchronized Read only

現在の位置調整モードを表す値が設定されます。値とモードの対応付けは以下のようになっています。

説明
0カメラを直接手に持っている状態です。
1カメラがワールド空間に固定されている状態です。
2再配置 (Reposition) 機能によってカメラ姿勢を制御している状態です。
3ドローン機能によってカメラ姿勢を制御している状態です。

VirtualLens2 AutoLeveler

Non-synchronized Read/Write

現在の自動水平出しモードを表す値が設定されます。値とモードの対応付けは以下のようになっています。

説明
0自動水平出し機能は無効となっています。
1横向きとして水平を維持しています。
2縦向きとして水平を維持しています。
3カメラの回転を30度刻みでスナップします。

VirtualLens2 Stabilizer

Non-synchronized Read/Write

現在の手振れ補正モードを表す値が設定されます。値とモードの対応付けは以下のようになっています。

説明
0Disabled
1Weak
2Medium
3Strong

VirtualLens2 RepositionScale

Non-synchronized Read/Write

再配置 (Reposition) 機能利用時の動きのスケーリング係数を設定します。値とモードの対応付けは以下のようになっています。

倍率
01倍
13倍
210倍
330倍

VirtualLens2 LoadPin

Non-synchronized Write only

1から4までの範囲の値を書きこむことによって対応する番号のピン位置にカメラを移動させます。

VirtualLens2 StorePin

Non-synchronized Write only

1から4までの範囲の値を書きこむことによって対応する番号のピン位置として現在のカメラ位置を登録します。

VirtualLens2 ExistPin[1-4]

Non-synchronized Read only

対応する番号のピン位置が登録済みかどうかを表します。登録済みであれば1、そうでなければ0となります。

VirtualLens2 ExternalPose

Non-synchronized Read/Write

外部ポーズ入力が有効かどうかを表します。有効であれば1、そうでなければ0となります。

フォーカス制御

VirtualLens2 AFMode

Non-synchronized Read/Write

オートフォーカスの方式を表します。値と方式の対応付けは以下のようになっています。

説明
0一点AF (Point AF)
1顔検出AF (Face AF)
2自撮りAF (Selfie AF)

VirtualLens2 AFSpeed

Non-synchronized Read/Write

オートフォーカスによるフォーカス平面調整の速度を表します。値と設定の対応付けは以下のようになっています。

説明
0Immediate
1Fast
2Medium
3Slow

VirtualLens2 TrackingSpeed

Non-synchronized Read/Write

顔検出オートフォーカス利用中に顔の検出に失敗した後に別の顔に追跡対象を移すまでの速度を表します。値と設定の対応付けは以下のようになっています。

説明
0Immediate
1Fast
2Medium
3Slow

VirtualLens2 FocusLock

Non-synchronized Read/Write

一時的にフォーカス平面の更新を停止するためのフラグです。1であればフォーカス平面の更新が停止され、0になったときに再開されます。

VirtualLens2 Distance

Optional-synchronized Read/Write

マニュアルフォーカス時にフォーカスを合わせる平面までの距離が 0.0 から 1.0 の範囲で設定されます。

パラメータの値 \( x \) から距離 \( D \) [m] への変換は以下の式で行うことができます。 ここで \( D_{\min}, D_{\max} \) はそれぞれ設定項目中の Min focus distance, Max focus distance に対応します。

$$ D = D_{\min} \exp \Bigl\{ x \log \frac {D_{\max}} {D_{\min}} \Bigr\} $$

VirtualLens2 TouchOverride

Non-synchronized Read/Write

タッチスクリーン操作をアバターパラメータで模擬するためのフラグです。1がセットされている間は TouchOverrideXTouchOverrideY で指定された座標がタッチされているとみなされます。

VirtualLens2 TouchOverrideX, VirtualLens2 TouchOverrideY

Non-synchronized Read/Write

TouchOverride パラメータを用いてタッチスクリーン操作をアバターパラメータで模擬する際にタッチしていることにする座標をそれぞれ -1.0 から 1.0 の範囲で設定します。 X座標は左から右に向かって大きく、Y座標は下から上に向かって大きくなります。

画面設定

VirtualLens2 Grid

Non-synchronized Read/Write

プレビュー画面に表示するグリッドの種類を設定します。値と種類の対応付けは以下のようになっています。

説明
0なし
13x3
23x3 + 対角線
36x4
4-7カスタムグリッド1-4

VirtualLens2 Information

Non-synchronized Read/Write

プレビュー画面上に焦点距離やF値などの情報を表示するかどうかを設定します。表示する場合は1、そうでない場合は0となります。

VirtualLens2 Level

Non-synchronized Read/Write

プレビュー画面上に水準器を表示するかどうかを設定します。表示する場合は1、そうでない場合は0となります。

VirtualLens2 Peaking

Non-synchronized Read/Write

プレビュー画面上でピントのあっている範囲を強調表示する際の条件を設定します。値と条件の対応付けは以下のようになっています。

説明
0常に無効
1マニュアルフォーカス利用時のみ有効
2常に有効

マスク設定

VirtualLens2 LocalPlayerMask

Non-synchronized Read/Write

撮影者自身のアバターを映すかどうかを選択します。映す場合は1、映さない場合は0となります。

VirtualLens2 RemotePlayerMask

Non-synchronized Read/Write

撮影者以外のプレイヤーのアバターを映すかどうかを選択します。映す場合は1、映さない場合は0となります。

VirtualLens2 UIMask

Non-synchronized Read/Write

UI要素を映すかどうかを選択します。映す場合は1、映さない場合は0となります。

その他の設定

VirtualLens2 Hide

Synchronized Read/Write

Hideable Meshes に指定したメッシュの表示状態を制御します。非表示とする場合は1、表示する場合は0となります。

VirtualLens2 PreviewHUD

Non-synchronized Read/Write

プレビューHUDの表示状態を制御します。表示する場合は1、非表示とする場合は0となります。

VirtualLens2 FarPlane

Non-synchronized Read/Write

遠方側のカリング距離を調整します。値と設定の対応付けは以下のようになっています。

説明
0デフォルト値 (セットアップ時に指定した値)
1デフォルト値×10
2デフォルト値×100

VirtualLens2 DepthEnabler

Non-synchronized Read/Write

デプステクスチャに依存したシェーダを安定して動作させるための機構を制御します。有効であれば1、そうでなければ0となります。

アバター設定の読み出し

VirtualLens2 Version

Non-synchronized Read only

VirtualLens2 vX.Y.Z がセットアップされている場合、整数値 X * 10000 + Y * 100 + Z が設定されます。

VirtualLens2 Zoom Min, VirtualLens2 Zoom Max

Non-synchronized Read only

焦点距離の下限 \( f_{\min} \) と上限 \( f_{\max} \) がミリメートル単位の浮動小数点数として設定されます。

VirtualLens2 Aperture Min, VirtualLens2 Aperture Max

Non-synchronized Read only

絞りの開き具合 (F値) の下限 \( F_{\min} \) と上限 \( F_{\max} \) が浮動小数点数として設定されます。

VirtualLens2 Exposure Range

Non-synchronized Read only

露出補正で用いるの補正値の範囲 \( E_r \) が浮動小数点数として設定されます。

VirtualLens2 Resolution X, VirtualLens2 Resolution Y

Non-synchronized Read only

VirtualLens2からの出力として期待される画像の解像度が整数値として設定されます。

使用例

カメラの出し入れに連動した手の形の変更

VirtualLens2 EnableVirtualLens2 AltMesh を参照することでVirtualLens2が有効かつカメラメッシュが手元に表示されているかを判別することができます。 これらをもとに手の形を変える場合、Gestureレイヤーのハンドサインに対応するレイヤーにステートおよびトランジションを追加することでカメラを握っているようなハンドアニメーションを再生することができます。 なお、VirtualLens2セットアップ時にはGestureレイヤーのパラメータリストは更新されないため、手動で利用するパラメータを Animator Controller に追加する必要があります。

ハンドサイン入力によるフォーカスロック

VRCAvatarParameterDriver を用いて VirtualLens2 FocusLock パラメータを書き換えることでフォーカスロック機能を利用することができます。 これを利用して、FXレイヤーにGestureLeftGestureRightの値に応じてパラメータを制御するレイヤーを追加することで特定のハンドサインによってフォーカスを固定することができるようになります。

外部ポーズ入力

パラメータ VirtualLens2 ExternalPose1 となっている場合、カメラの位置と向きはセットアップ時に External Pose Source で指定したオブジェクトと等しくなり、ドローン利用時と同様にカメラメッシュは代替モデルに置き換えられるようになります。 これを利用することでVirtualLens2以外のアバターギミックからカメラ姿勢を制御することが可能となります。

開発用スクリプト

Animator Controller の自動生成やパッケージングなど開発時に用いているスクリプトとシーンが VirtualLens2/Core/Generators/Editor, VirtualLens2/Core/Scenes 以下に含まれています。 もしVirtualLens2の内部実装に興味があるのであれば参考になるかと思います。 なお、これらのスクリプトを利用する場合、プロジェクトの定義済みマクロとして VL2_DEVELOPMENT を追加し、さらに Animator As Code を導入する必要があります。

5 - よくある質問

VirtualLens2に関するよくある質問とその回答です。

はじめに

まず更新履歴やBoothのダウンロードページからアップデートが配信されていないかご確認ください。 VirtualLens2の不具合やVRChatの仕様変更に起因する症状の場合、アップデートによってすでに修正されている場合があります。

セットアップ関連

導入後にアバターの表情やギミックが壊れた

ほとんどの場合は Write Defaults の設定に起因するものです。 VirtualLens Settings の Advanced Settings 内にある Enable Write Defaults の設定を適切に変更して再適用してください。 Write Defaults についての詳細はVRChat公式ドキュメントRyubanさんの Avatars 3.0 の導入が参考になるかと思います。

VirtualLens2ではセットアップ実行時に既存のFXレイヤー用 Animator Controller を参照して自動的にそれと合わせるように設定を試みますが、以下のようなケースでは判別に失敗してしまうため手動で調整する必要があります。

  • セットアップ実行後に設定を変更した
  • セットアップ実行時に Write Defaults 設定が混在していた

メニュー項目のインストール先を変えたい

非破壊セットアップを利用している場合 VirtualLens Settings コンポーネントを持っているオブジェクトに “MA Menu Installer” コンポーネントを追加するとその設定に沿ってメニュー項目を追加するようになります。追加したコンポーネントの “Install To” パラメータを適切に設定することでメニュー項目のインストール先を変更することができます。

操作関連

ドローンモードにするとカメラがどこかに飛んでいく

VirtualLens2のドローン機能はカメラを持っていない方の手の位置で制御します。 そのため、制御に使用する方の手を不用意に動かすとドローンが意図しない向き・速度で飛んでいってしまいます。 ドローンモードに移行する時は両手を軽く前に出した状態でメニューを操作するようにしてみてください。

その他

ドローン機能利用時に他の人からカメラが見えるようにしたい

現時点ではVRChatの制約上カメラの位置を正しく同期することが難しいため、意図的に他の人からは見えないように設定しています。

パフォーマンスランクが下がるのをどうにかしたい

現在のパフォーマンスランクの算出方法ではローカルでしか使用されないオブジェクトであってもカウントされてしまうため、VirtualLens2のような複雑なローカルギミックは実態よりも悪い値となりがちです。 実際には他の人から見た場合はほとんどのオブジェクトは一度も有効化されずパフォーマンスランクから考えられるほどの負荷はかからない場合がほとんどとなるため、現時点ではひとまず無視してください。 もし今後VRChatの仕様が変化してローカルオブジェクトを正しく扱えるようになれば、その時に対応するアップデートを行います。

参考: [FEEDBACK] Mark local objects explicitly and exclude them from performance rank calculation

うまくいかない・よくわからないときは

Boothのメッセージ機能かTwitterのDMにてご連絡ください。多くの場合画像のやり取りが発生するため、TwitterのDMでのご連絡を推奨します。 このとき、以下の情報を添付いただけるとやり取りがスムーズに進みます。

  • Apply ボタンを押したときに Console に出力されたエラーの有無とその内容
  • VirtualLensSettings のスクリーンショット
  • VRC_AvatarDescriptor のスクリーンショット
  • VRChat 内の AV3 Debug 画面のスクリーンショット(Puppet Menu → Options → Config → Debug で表示させることができます)

6 - 更新履歴

VirtualLens2の更新履歴です。

VirtualLens2 v2.10.x

Version 2.10.2 (2024-01-29)

  • NDMF 1.3.0 以降を利用している場合に NDMF のエラー報告インターフェースを利用するようにしました。
  • ドローンモードにクイックターン機能が追加されました。
  • ドローンモードにおいてパペットメニューの上下でズームが制御できるようになりました。
  • 非破壊セットアップ時にメニューボタンの配置先を制御するための MA Menu Installer を自動的に生成するようにしました。
  • アバターパラメータからスクリーンタッチを模擬するAPI (TouchOverride*) を追加しました。
  • VRCFury や Av3Emulator など特定のエディタ拡張が導入されている環境でバージョンチェックに失敗する問題を修正しました。
  • ドローンモードなどで利用される代替カメラメッシュから影を落とさないようにしました。
  • 既存の Animator Controller に Avatars 3.0 標準のパラメータが期待と異なる型で存在している場合のエラーチェックを追加しました。
  • 既存の Animator Controller に Avatars 3.0 標準のパラメータが期待と異なる初期値で存在している場合でもセットアップできるように変更しました。
  • VirtualLensPreview が存在しない場合にセットアップに失敗する問題を修正しました。

Version 2.10.1 (2023-11-05)

  • ドローンモードでカメラの動きがカクつくことがある問題を修正しました。
  • オブジェクトパス重複チェック時に MA Bone Proxy によるオブジェクト移動を考慮するように修正しました。
  • カメラメッシュの一部が Hideable Meshes として指定されたときの挙動を修正しました。
  • デスクトップモードで起動したときに通常時の視界に対しても映像を出力するようにしました。

Version 2.10.0 (2023-11-03)

  • Modular Avatar および NDM Framework を用いた非破壊セットアップに正式対応しました。
  • 自動水平出し機能に自動スナップモードが追加されました。
  • プレビューHUD機能が追加されました。
  • カスタムグリッド機能が追加されました。
  • レイヤーマスク設定機能が追加されました。
  • リモートでのアバター表示に必要な機能のみを実装する Remote Only Mode が追加されました。
    • Androidなどモバイルプラットフォーム向けビルドでの利用を想定したものです。
  • API: パラメータ VirtualLens2 Control を経由した操作が非推奨となりました。
    • VRCSDKの更新により同期対象ではないパラメータを直接操作できるようになったためそちらをご利用ください。
  • API: セットアップ時に使用した設定情報の一部をパラメータとして配信するようになりました。
  • Animator Controller 関連のパフォーマンスを改善しました。
  • VRChat 2023.4.1 以降でMSAA無効設定で利用した場合に正しく動作しない問題を修正しました。

VirtualLens2 v2.9.x

Version 2.9.9 (2023-09-26)

  • NDM Framework を利用した他ツールとの相互運用性を改善しました。

Version 2.9.8 (2023-09-12)

  • VRCSDK 3.3.0 以降を導入したプロジェクトで Modular Avatar 連携を利用した際にビルドに失敗する問題を修正しました。

Version 2.9.7 (2023-08-02)

  • Avatar Scaling 利用時に一部の機能が正常に動作しなくなる問題を修正しました。

Version 2.9.6 (2023-04-01)

  • VRCSDK 3.1.12 以降との組み合わせで Radial Puppet を用いて操作するパラメータをローカル化できるようになりました。

Version 2.9.5 (2023-03-13)

  • Interactive レイヤーに属するオブジェクトが映らない不具合を修正しました。
  • 名前の部分文字列として (WD On) もしくは (WD Off) を含むステートをセットアップ時の Write Defaults チェックから除外するようになりました。

Version 2.9.4 (2023-01-01)

  • Modular Avatar を利用したワークフローが実験的に導入されました。
  • StereoLeft および StereoRight レイヤーに属するオブジェクトが映らない不具合を修正しました。
  • VirtualLens2適用時とアバタービルド時でVirtualLens2のバージョンが異なる場合にエラーを出力するようになりました。
  • セットアップヘルパーのオプションにカスタムモデルの Transform を維持するオプションを追加しました。

Version 2.9.3 (2022-10-15)

  • カメラ判定に _VRChatCameraMode を使用するように変更しました。
    • それに伴い Transfer Mode 機能を削除しました。
  • 非4K設定時にSMAAによるアンチエイリアシングが正しく機能していない不具合を修正しました。

Version 2.9.2 (2022-05-18)

  • v2.9.0 で発生した以下の不具合を修正しました。
    • 自動生成された Expressions Menu が正しく保存されない不具合
    • 自撮り用マーカーの自動生成に失敗するアバターに対してセットアップできない不具合
  • 4K撮影時の負荷が若干低くなりました。

Version 2.9.1 (2022-05-15)

  • v2.9.0 で発生した以下の不具合を修正しました。
    • ドローンコントローラのデッドゾーン設定が無視される不具合
    • エディタでクリッピング平面についてのパラメータが編集できない不具合

Version 2.9.0 (2022-05-15)

  • ピン機能が実装されました。
  • 手ブレ補正機能のかかり具合を調整できるようになりました。
    • これにともない若干手ブレ補正の挙動が変化しています。
  • 再配置時の動きのスケーリングが実装されました。
  • ドローンの速度がフレームレート変化の影響を受けづらくなりました。
    • それにともない設定パラメータの意味が若干変化しています。必要に応じて設定パラメータ一覧もご参照ください。
  • ドローン機能と再配置機能のレスポンスを改善しました。
  • デフォルト設定をPrefabとして提供するようになりました。
  • OSCから内部パラメータを操作するためのAPIを追加しました。
  • 外部からカメラの動きを制御するための機能を追加しました。
  • VirtualLensSettingsがPrefabに含まれるときにインスタンスに対する変更が保存されない不具合を修正しました。
  • 鏡越しに下の方を見た時に負荷が著しく大きくなることがある問題を修正しました。
  • カスタムレイヤー (22-31) に属するオブジェクトが映るようにカメラ設定を変更しました。
  • Depth Enabler がデフォルトで有効となるように初期設定を変更しました。

VirtualLens2 v2.8.x

Version 2.8.5 (2022-03-15)

  • ワールドなどの環境によって不自然な影などが現れる問題に対応するための設定 (Depth Enabler) を追加しました。
    • Directional Light のない環境で _CameraDepthTexture を使用したマテリアルによって生じるアーティファクトの発生を抑えます。
    • デフォルトで無効となっているため必要に応じて Expressions Menu から有効化してください。

Version 2.8.4 (2021-11-27)

  • VRChatの更新 (Build 1154) でメニューが写りこむようになる問題に対応しました。
  • ワールドなどのカメラギミックとの干渉を減らすため画面上書きモード設定 (Transfer Mode) を追加しました。

Version 2.8.3 (2021-11-13)

Version 2.8.2 (2021-11-05)

  • VRChatの標準カメラ更新 (UI 1.5 Update) によって画面の上書きが機能しなくなる問題に対応しました。
  • 後からインスタンスにJoinした人に正しく状態を同期できない場合がある不具合を修正しました。
  • セットアップ時のエラーチェックを強化しました。

Version 2.8.1 (2021-09-20)

  • アバターの状態によって自撮り用マーカーの生成に失敗することがある不具合を修正しました。

Version 2.8.0 (2021-09-20)

  • 顔検出・瞳検出オートフォーカスと自撮り用オートフォーカスが実装されました。
  • フォーカスピーキング機能が追加されました。
  • プレビュー画面のレンダリング品質が向上しました。
  • セットアップヘルパー利用時に設定情報を Prefab から生成できるようになりました。
  • セットアップヘルパー利用時にカスタムカメラモデルを自動配置できるようになりました。
  • 他ギミックとの連携のために用いることができるパラメータを明文化しました。
  • v2.6.x互換の被写界深度シミュレーションアルゴリズム (KinoBokeh) が削除されました。
  • 4Kモード利用時にエフェクトなど一部のオブジェクトが想定と異なるタイミングで描画される不具合を修正しました。

VirtualLens2 v2.7.x

Version 2.7.9 (2021-07-23)

  • Unity 2019 環境においてセットアップツールが正しく機能しないことがある問題を修正しました。
  • デスクトップ側表示がウィンドウモードでも Stream Camera 経由で映像を出力できるようになりました。

Version 2.7.8 (2021-06-15)

  • LogiBokehにおいてマニュアルフォーカス機能の実装が省略されている場合に出力が乱れることがある不具合を修正しました。

Version 2.7.7 (2021-06-05)

  • VRChat 2021.2.3 (Build 1101) でグリッドや情報表示などのデフォルト設定が反映されなくなる不具合を修正しました。

Version 2.7.6 (2021-05-31)

  • 被写界深度シミュレーションの画質を改善しました。
    • それに伴い設定項目にサブサンプル数を指定する MSAA Levels が追加されています。
  • 設定適用時にカメラオブジェクトを無効化するようにしました。
    • Safety などでアニメーションが再生されないケースについての対策となります。
  • 代替モデル表示時のプレビュー画面が他プレイヤーから見えなくなりました。
  • Camera Object が指定されていないときに意図しないエラーが出る不具合を修正しました。
  • エラーチェックを強化しました。

Version 2.7.5 (2021-05-15)

  • カメラを手に持っている状態で Reposition ボタンを押すことでドローンモードを経由せずにカメラをワールド空間に固定できるようになりました。
  • 指での操作が難しいアバターのためのタッチペンPrefabを同梱しました。
  • アバターの Playable Layers の構成が破損している場合に可能であれば自動で修正するようになりました。

Version 2.7.4 (2021-05-08)

  • 4K撮影機能が無効となっている場合にプレビュー画面がカメラに映る状態になってしまっていた不具合を修正しました。
  • セットアップ時のエラーチェック機能を強化しました。
  • Avatars 3.0 のパラメータが一時的に誤った値となっていても復帰できるようにステートマシンを調整しました。

Version 2.7.3 (2021-05-07)

  • FX Layer に特定の名前を持つレイヤーが存在する場合に誤って Animator からパラメータの削除を試みてしまう不具合を修正しました。

Version 2.7.2 (2021-05-06)

  • LogiBokeh のボケ量の計算が誤っている不具合を再度修正しました。
    • F値をちょうど半分にしたのと同程度ボケてしまっていました。

Version 2.7.1 (2021-05-06)

  • LogiBokeh のボケ量の計算が誤っている不具合を修正しました。
  • LogiBokeh の画質に関する細かい調整を行いました。

Version 2.7.0 (2021-05-04)

  • 新しい被写界深度シミュレーションエンジン (LogiBokeh) が実装されました。
  • カメラモデル差し替えのためのテンプレート Prefab が追加されました。
  • 補助グリッドの種類として3x3+対角線と6x4が追加されました。
  • Clipping planes のデフォルト値が変更されました。 (Far=1000 → Far=5000)
  • 自動生成される Animator Layer に適切な Avatar Mask を設定するように修正しました。

VirtualLens2 v2.6.x

Version 2.6.2 (2021-03-01)

  • ワールド固定時に水準器の表示が手の姿勢に追従してしまう不具合を修正しました。
  • アバターによってカメラオブジェクトの自動配置時に期待と異なる向きで配置されてしまうことがある不具合を修正しました。

Version 2.6.1 (2021-02-28)

  • v2.6.0 でカスタムカメラモデル利用時にドローン機能などを呼び出すとカメラが意図しない方向を向くことがある不具合を修正しました。

Version 2.6.0 (2021-02-27)

  • ドローン機能が実装されました。
  • カメラ位置の再調整機能が実装されました。
  • Far Plane を一時的に遠くする機能が実装されました。
  • 新規セットアップのための補助ツールが追加されました。
  • メニュー構成を整理しました。
  • カメラモデルに関するパラメータ構成が変わりました。
  • カメラモデル位置が不安定になる機能を利用する際に代替モデルを表示するようになりました。
  • ワールド空間に固定されたカメラが他の人から見えないようになりました。
  • タッチスクリーン拡張が必須となりました。
  • カメラ以外の要素をワールド固定できなくなりました。

VirtualLens2 v2.5.x

Version 2.5.5 (2021-01-20)

  • VRCSDK3-AVATAR-2021.01.19.07.28_Public に対応しました。
    • Expression Parameters の仕様変更への対応となります。

Version 2.5.4 (2021-01-13)

  • v2.5.3 で FX layer が設定されていないアバターへのセットアップができなくなってしまっていた不具合を修正しました。

Version 2.5.3 (2021-01-09)

  • 一部メニューボタンを連打した際のレスポンスを改善しました。
  • セットアップ時のエラーチェックを強化しました。

Version 2.5.2 (2021-01-04)

  • Animator State の Write Defaults を有効化するオプションを追加しました。

Version 2.5.1 (2021-01-03)

  • マニュアルフォーカス機能を省略した際にフォーカスポイントの調整ができなくなる不具合を修正しました。

Version 2.5.0 (2021-01-02)

  • 4K撮影に対応しました。
  • メッシュ表示・非表示の制御機能を追加しました。
  • 被写界深度シミュレーションのアルゴリズムを調整しました。
  • VRChatの標準に従い、AnimatorState の Write Defaults を無効とするようになりました。
  • 自動生成されたオブジェクトを削除する際に手ブレ補正に関するオブジェクトが削除されない不具合を修正しました。
  • 手ブレ補正の制御用アニメーションを修正しました。

VirtualLens2 v2.4.x

Version 2.4.0 (2020-09-21)

  • 手ブレ補正機能が追加されました。
  • 無段階フォーカスポイント設定が追加されました。
    • v2.2.0 のタッチスクリーン誤接触防止機能を有効にする場合と同様の設定が必要となります。
  • ズーム機能の Radial Puppet の設定値 [%] から焦点距離 [mm] へのマッピングが変更されました。

VirtualLens2 v2.3.x

Version 2.3.1 (2020-09-14)

  • 自動で水平・垂直を維持する機能が追加されました。

Version 2.3.0 (2020-09-12)

  • プレビュー表示に補助データを表示できるようになりました
  • 三分割グリッド
  • 現在の設定値 (焦点距離 [mm], F値)
  • 水準器 (Roll, Pitch)

VirtualLens2 v2.2.x

Version 2.2.1 (2020-09-03)

  • 一部のシェーダがまれに出力する不正な値がシーンに含まれる場合の画像の乱れが軽減されました
  • Quick Calls 機能用のアイコンを追加しました

Version 2.2.0 (2020-08-22)

  • パラメータを一括で呼び出す Quick Calls 機能を追加しました
  • タッチスクリーン誤接触防止機能を追加しました
  • 撮影時にVRカメラの Cycle Movement Behaviour を変更する必要がなくなりました
  • タッチスクリーンの判定領域の厚みを調整できるようにしました
  • ワールド固定利用時に追加の Expression Parameters を消費しないようになりました
  • ワールド固定時にアバターが激しく移動すると被写界深度シミュレーションが安定しない問題を緩和しました

VirtualLens2 v2.1.x

Version 2.1.1 (2020-08-13)

  • v2.1.0 を新規インストールした場合に一時フォルダの自動生成に失敗する問題を修正

v2.1.0 を新規インストールしていた場合 “Assets/VirtualLens2” フォルダを削除したのち v2.1.1 のパッケージをインポートしなおしてください。

Version 2.1.0 (2020-08-12)

  • 露出補正機能の追加
  • パラメータのデフォルト値設定の追加
  • Remove Autogenerated Objects ボタンが機能していなかった不具合の修正

VirtualLens2 v2.0.x

Version 2.0.2 (2020-08-10)

  • v2.0.1 で AnimatorControllerLayer のパラメータを誤っていた問題の修正
  • その他いくつかのオブジェクトが適切に保存されていなかった問題の修正

Version 2.0.1 (2020-08-10)

  • Animator への変更が一部保存されない不具合の修正

Version 2.0.0 (2020-08-09)

  • 初回リリース

7 - Readme

利用規約や権利条項をまとめた文書です。

VirtualLens2

この度はVirtualLens2をお買い上げいただきありがとうございます。

本ツールはVRChat用アバターに組み込んで利用するVRカメラ拡張ツールです。 後処理による画質劣化を伴わない視野角調整や、深度情報を使ったポストエフェクトなどが手軽に実現できるようになります。

セットアップやアップデートについては手順を解説したWebページを用意しているのでそちらをご参照ください: https://vlens2.logilabo.dev/ja/docs/

利用規約

  • 本ツールの利用によって生じたいかなる請求や損害、その他の義務について作者は一切の責任を負わないものとします。
  • 改変の有無によらず、本ツールの一部またはすべてを再配布することを禁じます。
  • 本ツールを使用して生成したコンポーネントを含むアバターを第三者が利用可能な状態にすることを禁じます。
    • 例: publicアバターとしてのアップロードやPrefabの配布など

権利関連

本パッケージには以下のソフトウェアおよびその一部が含まれています。 各ソフトウェアのライセンス条項については同梱の LICENSE.txt をご参照ください

連絡先