リモートワークでバ美肉ビデオ会議
みなさん体調は大丈夫ですか?私は咳が止まらない毎日を送っています。医師の診断によるとただの風邪らしいです。 巷では新型肺炎が流行しているようで、情勢を鑑み出社を禁止する会社もちらほら出てきている現状です。 弊社も例に漏れず、状況によってリモートワークが推奨されることとなりました。
処方された薬を飲み続けていて身体はすこぶる元気なものの、咳がまだ止まらないので最近はリモートワークの毎日です。 ズボラな私は、家から出ないと決めた日は寝起きのまま、髪はボサボサ、目は半開き、家庭用の微妙なデザインのメガネ。 リモートワークなのだからソレくらいがちょうどいいんですが、社会はそんなに甘くありませんでした。
ビデオ会議の存在です。
目次
Open 目次
ビデオ会議
ビデオ会議ではカメラを通して自分自身をメンバーに晒す必要があります。 ボサボサの髪・開ききらない目・クソダサメガネを備えた姿を、たとえ低画質のカメラを通したとしても人に見せるわけにはいきません。 そのためには、現代のテクノロジーでなんとかできる方法を探るしかありません。
バーチャル美少女受肉、通称 バ美肉 です。
バ美肉
https://ja.wikipedia.org/wiki/バ美肉
バ美肉がなんたるかはWikipediaで確認してもらうとして、バ美肉をどのようにするかを考えなければなりません。 リモートワークでバ美肉の必要性を感じる人はちらほらいるようで、以下の記事でも実践していました。
これからのリモートワークの話をしよう|schemelisp|note
FaceRig
先ほどの記事にはFaceRigとLive2D Moduleを用いているとの記載があります。 これで受肉できる!と、考えたのも束の間、利用環境が全くもって合致しませんでした。
業務で用いているのはMacBook Proで動かしているOSはmacOS Catalina。そもそもWindows向けに作られているFaceRigの起動すらできない環境です。 そしてそこそこの計算資源が必要とあり、障壁はなかなかに高いものでした。
さて、この解決策は使えないと知り、振り出しに戻ったかと思ったものの、FaceRig Live2D Moduleの説明に既視感のある文字列を見つけました。
Live2D Cubismです。
ARKit-Live2D 2.0
iOS 11でARKitのAPIが提供され始めた時のこと、Face TrackingしてLive2D Cubismのパラメーターを操作するデモアプリを作った過去があります。
iPhone X+ARKit+Live2Dがどんな感じに動くかのサンプル
— 劇場版ハイスクール・フリート4DX (@mzyy94) November 16, 2017
(音声はPCで再生してるやつを録音したもの)
まだ表情のパラメーターは弄りがいがある感じ pic.twitter.com/xNQZcQhsTY
そうだこれを使えばいいんだ。FaceRigから遠回りしたものの、一つの解決策にたどり着きました。
これが今でもそのまま動けばよかったものの、最後の更新から2年以上の月日が経っていたり、利用しているLive2D Cubism 2.0の配布が終了していたりで今のiPhoneで動かすことはできませんでした。
この三連休は咳が酷くてずっと家にいたため、これを手直し、最新のLive2D Cubism 4.0への対応と新しいEye Trackingにも対応しました。バージョン2.0です。
誰でも簡単に使えるようになっているので、READMEを読んで動かしてみてください。
こんな感じで動きます
ビデオ会議風景 pic.twitter.com/9jIyNgwBki
— 劇場版ハイスクール・フリート4DX (@mzyy94) February 26, 2020
ちょっとアップデートして背景色と位置の変更ができるようになりました。
macOSでiPhoneの画面表示
さて、これでiPhoneでのバ美肉はできるようになりました。しかし、これだけではビデオ会議にこの映像を使うことはできません。 MacでiPhoneに表示されてる映像を使えるようにする必要があります。 ここで考えられる方法は、以下の2つがあります。
QuickTimeでビデオ録画
USBで接続したiPhoneの画面をQuickTime Playerでプレビューする方法が、最も手軽にiPhoneの画面をmacOSに表示する手段です。これを画面共有するなどして、ビデオ会議に用いる方法がまず浮かびました。
QuickTime Player を使う方法 - Apple サポート
ただ、遅延が大きいのと、計算資源を大きく消費することが気になります。
CoreMediaIO DAL
macOSに備わるフレームワークを用いてメディアデバイスを仮想的に作り上げる方法があります。CoreMediaIOです。 QuickTimeの画面録画もこれを用いています。
まず、このCoreMediaIOのDevice Abstraction Layer (DAL) を通して、仮想カメラをmacOSに作成し、iOSからの映像を受け取る算段を思いつきました。 ARKit-Live2DはReplayKitに対応しているため、RTMP配信対応アプリを通して、以下のような流れが実現できるはずでした。
iOS -> ReplayKit - RTMP -> macOS -> CoreMediaIO DAL -> Camera
ただ、CoreMediaIO DALのサンプルコードが古いのと、Kernel Extensionのデバッグに難航してしまったので、仮想カメラを作るのは諦めました。
OBS + OBS Virtual Camera
ゲーム実況やYouTubeでの配信に用いられる、OBSという配信ソフトウェアがあります。
Open Broadcaster Software®️ | OBS
OBSでは映像や音声、テキストなど、複数の入力ソースを組み合わせて一つの動画を作り上げることができます。 それらの入力ソースの中に、映像キャプチャデバイスがあり、これによりiPhoneの画面出力をLightningケーブルで取り込むことができます。 これはCoreMediaIOを用いて実現しています。
そしてOBSはプラグインシステムで拡張でき、obs-mac-virtualcamというプラグインを用いることで、作った動画を仮想Webカメラとして、他のアプリケーションに取り込むことができるのです。
iOS -> CoreMediaIO -> OBS -> CoreMediaIO DAL -> Camera
Zoomビデオ会議
弊社では、ビデオ会議にはZoomを用いています。
Zoomは少し前まで仮想Webカメラからの映像入力ができないようになっていました。 Zoomバージョン5.0.4からホワイトリストで一部の仮想Webカメラが使えるようになり、バージョン5.1.1から全ての仮想Webカメラが使えるようになりました。
New updates for macOS – Zoom Help Center
OBSとobs-mac-virtualcamをインストール、そして、OBSで映像キャプチャデバイスを設定して動画を準備しツールメニューから”Start Virtual Camera”を選択すると、Zoomのカメラ一覧に”OBS Virtual Camera”が現れ、映像入力として使えるようになります。
あとはこれでミーティングに参加すれば、バ美肉ビデオ会議が叶うこととなりました☺️
声がおじさんのまま?よしなに頑張ってください。
まとめ
WindowsでFaceRig+Live2D Module+OBSを用いてやるよりも、低負荷で実現できていそうな気がします。
リモートワークでLet’sバ美肉。