【プラグイン配布】デスクトップカメラをなめらかに操作できる「Desktop Camera Control」を作りました

Click to translate to English

Virt A Mate (VaM) のカメラ操作をなめらかにしたり、カメラ回転の軸を固定したりできるデスクトップ向けのプラグイン「Desktop Camera Control」を作りました。

このプラグインを使うことにより、本来はAnimationPattern等を用いて準備しなければいけないような複雑なカメラ操作を、リアルタイムで再現できるようになります。これにより、VaMをデスクトップキャプチャで撮影するのがお手軽になります。

私がTwitter等に上げている動画も、全てこのプラグイン(の前身のプロトタイプ)を利用して撮影しています。

当プラグインはBOOTH及びGumroadで配信します。どちらも無料で入手可能です。

Desktop Camera Control概説

「Desktop Camera Control」(以下DCC)は、左手でキーボードを入力しつつ、右手でマウス操作を行うように設計されています。これにより、幅広いカメラ操作をリアルタイムに行うことができます。

DCCは、以下のような機能を持っています。

  • ズームイン・アウトを無段階にする。
  • 各カメラ速度を調整する。
  • カメラの移動や回転の始動や停止を緩やかにする。
  • カメラの移動や回転を持続させる。(任意の方向・角度に等速運動させることができる)
  • カメラの回転軸を固定する。
  • リモートデスクトップ時にもカメラ操作できるようになる。

順番に説明します。

ズームイン・アウトを無段階にする

VaMの標準カメラは、マウスのホイールを使って行います。このとき、ホイールが一定角度回転するごとに、段階的にカクカクとズームイン・アウトします。

DCCでは、キーボード入力(デフォルトでは1, 2)によって、押している間無段階でカメラがズームイン・アウトします。

各カメラ速度を調整する

VaMの標準カメラは速度調整できませんが、DCCでは、カメラの移動(WASDZX移動含む)・回転・ズームイン・アウトをそれぞれ別個に速度調整できます。

カメラの移動や回転の始動や停止を緩やかにする

VaMの標準カメラは一切のタメなくカメラが移動、回転します。

DCCでは緩やかな始動や停止が可能になります。ゆっくりはじまり、停止の際には余韻があります。また、緩やかさを調整することもできます。

カメラの移動や回転を持続させる

DCCでは余韻の最中に持続キー(デフォルトでは左Alt)を押しっぱなしにすることで、余韻を持続させることができます。これにより、任意の方向・角度にカメラ等速運動させることができます。

カメラの回転軸を固定する

VaMの標準カメラはWASDZXキーで水平や垂直方向にカメラを移動させることができますが、回転の軸を固定することはできません。

DCCでは特定のキーを押しっぱなしにすることで、水平軸、垂直軸を固定してカメラを回転させることができます。

リモートデスクトップ時にもカメラ操作できるようになる

VaMに限らずUnityで作られてるソフトウェアは、リモートデスクトップで別端末から操作している状況ではマウスの位置が直接取得できません。これにより、リモートデスクトップ環境下では、マウス移動によるカメラ操作全般が不能な場合が多いです。VaMではWASDZXキー以外のカメラ操作ができません。

DCCにはリモートデスクトップ用のモードを搭載しており、ONにすることで同様のカメラ操作が可能になります。

リモートである以上遅延が発生するので、撮影がガンガンできるかと言うと微妙です。あくまでも「リモートでもVaMを十分に操作できること」を目的に搭載した機能です。

Desktop Camera Controlの各種キーと操作イメージ

操作が特殊なので最初は難しいと思いますが、慣れるとかなり思い通りにカメラ操作ができるようになると思います。

各操作キー

各種キーはお好みで変更できますが、おそらく初期状態が最も操作しやすいです。というより、この配置でないとリアルタイムな撮影をするのは難しいと思われます。

他のプラグイン等とキーが重複してしまわない限り、そのまま使うことを想定します。

カメラ移動

VaMの標準カメラで「ホイールクリック+マウス移動」で行う操作を、「Q+マウス移動」で操作します。ホイールクリックは標準仕様のまま利用できます。

DCCではカメラに慣性が働きます。初速は遅く、カメラ移動中にQキーを離すと、その慣性の余韻を残してゆるやかに停止します。逆にカメラ停止までQキーを押しっぱなしにしていると、余韻が短くなります。

Qには中指あるいは薬指を置いておくことを想定しています。

カメラ回転

VaMの標準カメラで「右クリック+マウス移動」で行う操作を、「E+マウス移動」で操作します。右クリックは標準仕様のまま利用できます。

カメラ移動同様、初速が遅く、カメラ回転中にEキーを離すと、その慣性の余韻を残してゆるやかに停止します。カメラ停止までEキーを押しっぱなしにしていると、余韻が短くなります。

Eには人差し指を置いておくことを想定しています。

カメラ回転軸固定

DCCでのカメラ回転操作中、「左Ctrl」を押しっぱなしにすることで、カメラを水平回転のみに固定することができます。

同様に「スペース」を押しっぱなしにすることで、垂直回転のみに固定することができます。

左Ctrlは小指、スペースキーは親指で操作することを想定します。

なお、カメラ水平・垂直移動に関してはWASDZXキーが機能するのでそちらを使うと良いでしょう。(WASDZXでは慣性は働きません)

ズーム

VaMの標準カメラで「ホイール」をスクロールして行う操作を、「1」のズームインと「2」ズームアウトで操作します。ホイールのスクロールは標準仕様のまま利用できます。

DCCでは無段階にズームイン・アウトします。また、移動・回転と同様に慣性があります。

1と2は中指で操作することを想定しています。

カメラの移動・回転の持続

EやQを離した直後の余韻中に「左Alt」を押し続けると、余韻を維持します。あるいは、左Altを押しっぱなしの状態でE・Qでカメラ操作し、途中でE・Qだけを離すことでも、同様の効果を得ることができます。

どちらもやっていることは同じです。まとめて言うと「左Altのみが押しっぱなしにしなった瞬間」の勢いが維持されるということです。言葉で説明するのはややこしいですが、触ってみれば感覚をつかめると思います。

持続をやめたいときは左Altを離します。

持続中も移動・回転をそれぞれ独立して操作可能です。例えば、縦移動を持続させつつ回転だけマウス操作することが可能です。この場合、「Qでカメラ移動→Qをリリースして左Alt→左Altを押しっぱなしの状態でEでカメラ操作」となります。

カメラ回転の軸を固定させておきたい場合は、持続中も左Ctrl(水平)もしくはスペース(垂直)を押しっぱなしにしている必要があります。つまり、水平回転のみに固定して持続させたい場合は、左Altと左Ctrlの両方が押しっぱなしになっている必要があります。

左Altは親指で操作することを想定しています。

垂直カメラ回転を持続させたい場合は、スペースと左Altを両方押さなければいけないので、例外的なポジショニングが必要になります。ただ、垂直方向の回転は固定しなくてもブレにくいので、優先度低めでこのような配置になりました。

カメラの加減速

VaMの標準カメラでは「左Shift」を押している間、WASDZXキーによるカメラ移動速度が倍になります。

DCCでも同様に「左Shift」でカメラを加速(減速)可能です。WASDZXキーだけでなくカメラの移動・回転・ズームとそれらの持続のすべてを加減速できます。

左Shiftを離すことで減速(加速)が始まり、元の速さに戻ります。

標準カメラでは押した瞬間に速度が早くなりますが、DCCでは緩やかに速度を変更でき、最高(最低)速度に達するまで&元の速さに戻るまでの秒数が設定可能です。上の動画では、かなりゆっくり加速させています。

左Shiftは薬指で操作することを想定しています。

操作のイメージ

左手のポジショニングをまとめると、親指を左Alt、人差し指をE、中指をQ、薬指を左Shift、小指を左Ctrlとなります。中指でズームイン・アウトの1・2を押すことが多いです。

WASDZXボタンはそのまま使えます。

初期状態では移動も回転も、かなりマウスに対して鈍く設定してあります。たくさんマウスを動かさないと大きく移動・回転できないということです。

これにはカメラワークのシビアさを緩和する目的があります。マウスを慎重に動かすのはかなり難しいので、細かいカメラ操作をざっくりとしたマウス移動で行えるようにしてあります。

早くカメラを移動・回転させたいときは、マウスを勢いよく動かし、すぐに持続(左Alt)に移行すると良いです。マウスを動かす距離は狭くても、勢いがあるとカメラは大きく動きます。その慣性を持続させるイメージです。上の動画はデフォルトのスピード設定でカメラを素早く回転させた例です。

素早くカメラ回転させたいときは、「Eを押す→マウスを勢いよく動かす→Eを離す→左Altを押しっぱなしにする」という操作をほとんど同時にする感じです。なかなかややこしいですね。

普通に標準カメラの操作も生きているので、撮影時以外はDCCにこだわる必要はありません。

プラグインUIの設定項目

プラグイン一覧画面で「Open Custom UI…」をクリックしたときのプラグインUIでの設定項目について解説します。

Master Speed Multiplier

カメラ全体の基本スピードです。マウス感度はみなさん色々だと思うので、ここでお好みの数値に設定してください。細かいカメラ操作がしやすくなるので、鈍いと感じるくらいをおすすめします。

Position / Rotation / Zoom / WASDZX Speed

移動・回転・ズーム・WASDZXをそれぞれ別個にスピード調整できます。WASDZXは標準が早すぎると感じるので遅くしてあります。

Shifted Speed Multiplier

左Shiftでの加減速の、最高速度を設定します。この数値が基本の速度に乗算されます。1よりも小さい数値にした場合、左Shift押下時に減速するようになります。

Acceleration Time

元のスピードから、Shifted Speed Multiplierで設定したスピードに到達するまでの時間を設定できます。単位は秒です。

Smooth Amount

慣性が働き続ける量を設定します。0にすると標準カメラのように一切タメがなくなります。

イメージとしては小さい数字ほどカメラが軽く機敏性があり、大きい数字ほどマウス入力に対して鈍化します。

Remote Desktop Mode

チェックを入れるとほとんどのRDP環境下でもカメラ操作が可能になります。VaM標準のカメラ操作はできず、DCCの操作のみ可能です。

マウス位置の取得方法が変わるだけなので、普通のデスクトップ環境でも使えますが、おそらくカメラの移動・回転がオフのときよりも早くなります。

キー設定

右半分の各項目で各操作のキーを設定できます。「Save Key as Default」ボタンで保存されます。

VaMの標準のショートカットキーと重複しているキーは予め一覧から排除してあります。

導入方法

プラグインを導入するのがはじめての方はこちらの記事を参考にしてください。

Virt A Mateのプラグインを使ってみよう! 自然な視線追従「RealGaze」編

ファイルの配置

BOOTHの仕様上100円と表示されますが、商品ページ内に無料のダウンロードリンクがあります。ご支援頂ける場合は100円の方をご購入ください。コンテンツ内容に差はありません。

BOOTHまたはGumroadのお好みの方からZIPファイルをダウンロードします。

解凍した中身(Customフォルダごと)をVaMのルートフォルダ(VaM.exeがあるフォルダ)に配置します。

最終的に「VaMルートフォルダ\Custom\Scripts\VaMJapan\Desktop Camera Control.cslist」という配置に慣ればよいです。

動作環境はVaM1.19.1です。

使用方法

お好みのAtomのPluginsタブから、Desktop Camera Control.cslistを読み込みます。私はいつもメインの人物に読み込みます。(Nキーでアクセスできて楽なため)

操作方法は前項「各種キーと操作イメージ」をご参照ください。

利用規約

MaFが提供するコンテンツは、無償のもの(BOOTHとGumroadにおける無料の商品を含む)に限りクレジット無しで二次配布が可能です。ただし、改変したものを配布する場合は、必ずMaFの名前と、該当コンテンツの配布先であるBOOTH及びGumroadの商品ページのURLをRead Me等に記載してください。また、MaFの著作権は放棄されません。

まとめ

もともと非常に使いにくい状態で使っていたのですが、自分以外の人にも使ってもらえるような形に落とし込むことができました。

「動けばいい」なコーディングなので、もし負荷など改善できそうな部分があったらご教授いただけると幸いです。