2020年05月07日

バ美肉DJ配信のススメ

chrome_2020-05-06_00-24-27.png

まえがき

いまやどこもかしこも自粛ムードで、去る5月2日に行われる予定だった、私ちょむもレギュラーで参加している”ビール飲もうぜイベント"、「麦酒夜宴#24」も開催中止となってしまった。そこで同じくレギュラー出演者のせばすさんの立案のもと、出演者がリレー式で自宅からパフォーマンス映像をオンタイムで配信するオンラインライブイベント「 エア麦酒夜宴 」が、同日ネット上で行われることになった。(当日のようす)

私はかねてから バ美肉(ばびにく=バーチャル美少女受肉、おっさんが美少女のアバターを操作してなんやかんやすること)に興味があって、なにかできないか模索している最中だったので、せっかくだからこの「エア麦酒夜宴」にのっかる形で「バ美肉DJプレイ」を披露することにした。結果は概ね成功したと思う。

エア麦酒夜宴の企画面の話はせばすさんの記事に譲るとして、本記事では、バ美肉DJプレイ配信を実現するにあたって私がやったことを記録しておく。 もし同じようなことをしたいと考えている方は参考にしてほしい。参考になるかわからないが。

なお、実現するまでに必要な手順はそれほど多くないが、過程で個人的な好みの実現や勉強をかねて、かなりの寄り道をしているので、手っ取り早くバ美肉DJプレイを実現させたい人は以降の【寄り道】部分を読み飛ばして頂ければと思う。

使用したもの

【使用したハード、ソフト】

  • OBS Studio(無料) ... 定番の配信ソフト。これで無料?ってくらい高機能。
  • Luppet(5000円) ... Leap MotionとWebカメラを使ってバ美肉するソフト。
  • Leap Motion(現時点では公式ショップ通販で$89.95。だいたい1万円) ... 指の動きを取得できるハードウェアデバイス。アマゾン等で買うと異様に高いので注意
  • Webカメラ(2000〜3000円程度のもので良い。が…) ... 私が使ったのはLogicool C270m。Luppetから顔認識さえできればそれほど高価なものでなくて良いのだが、現在在宅ワークでWebカメラの需要が上がっているらしくWebカメラ全般がどこに行っても品切れ+プレミア価格っぽいのでご注意を。
  • チェストマウントハーネス(1500円ほど。もっと安いネックマウンタで良い) ... Leap Motionを身体に固定するのに使う。購入時の注意点は記事内にて。
  • VRoid Studio(無料) ... お手軽にキャラクターモデルを作れるソフト。VRM形式(後述)で出力できる事がポイント。
  • Processing(無料) ... あるいはお好きなオーディオビジュアライザーソフト。
  • DJ機材一式 ... Macbook Air、PCDJコントローラ、DJソフト、ヘッドフォン。PCDJをする場合は配信用PCとは別のPCを用意するのが望ましい(負荷的な問題で)。
  • 画像編集ソフト(フリーソフトで十分) ... Photoshopでもいいし、GIMPでもPaint.NETでも良い。

【寄り道に使ったソフト】

  • Blender 2.8(無料) ... 定番の3Dソフト。今回は自作のアクセサリのモデリングに使用。
  • Unity 2019.3.11f1(無料) ... 定番のゲーム開発エンジンだが、今回はアバターにアクセサリを装着させるためだけに使用。
  • UniVRM(無料) ... VRMファイルをUnityに取り込むのに必要。

やりたかったこと

  • 配信ソフトはOBS
  • 3Dのキャラクターを操作したい(バ美肉!)
  • DJコントローラーを操作しているように見せたい(→ 指の動きを見せたい)
  • 画面が寂しいので、プレイ中に音楽に合わせて背景をギラギラピカピカさせたい
  • 声(バ美声、ボイチェン)については今回は考えない
  • Vive等のHMDは使いたくない

【余談】バ美肉自体はLive2D+Facerigなどで2D絵でも可能だが、指の動きを見せたいなら3Dキャラじゃないと難しい。

【余談2】VRについて、Vive自体は持ってるのだが、VRは負荷がかかるのでマシンパワーが余計にかかり、配信向きではない。というか、以前Unityでそういうのが実現できないか頑張ってみた事はある。やってみてわかったのは、バーチャル世界からリアル世界のDJコントローラーが見えないため、Viveの前面カメラから手元を覗く必要があり(これの実装自体はそれほど難しくない)、またデスクトップが見えないため仮想スクリーンをVR上に持ってくる必要もある(配信PC側は比較的簡単だが、問題はPCDJ側の画面)ので、もしそういうアプリを作ろうと考えてる人がいたら、そのへん頑張って実装してください。

指の動きを見せたいならLeap Motion

指先の動きを見せたいのならそれをどうにかしてキャプチャする方法を考えねばなるまい。現在それを最もお手軽に実現できるのはLeap Motionである。これを使えばソフトウェアから指の動きをキャプチャーすることができる。

そういえば昔買ったな…。と思い出したのでひっぱり出してみた。導入方法は普通に手順通りにインストールするだけ。サンプルアプリを試すだけでも結構楽しい。

Leap MotionとWebカメラでバ美肉できるソフト、Luppet

LuppetはVRM形式(後述)の3Dモデルを読み込んで、WebカメラとLeap Motionで操作できるアプリ。今回はこれを使おう。Webカメラは若干古いものだが、すでに持っている。Leapもある。つまり、あとは自分の分身となるアバターモデルとしてVRMモデルがあれば良いのだ。

3Dアバターを作るならVRoid

まず先にVRMの説明をしよう。VRMはVRChatやVTuberが日本で流行りだした2018年頃にドワンゴが中心となって規定した3Dモデルのファイルフォーマット。一般的な汎用3Dモデルのフォーマットとは違い、UnityのHumanoidリグをベースに人間型の骨格を標準としているほか、使用できる人間を限定したり、使用する上で可能な表現の範囲をモデルごとに指定できるなど、アバターとして「人間が被る」ことを主眼に置いているのが特徴。

VRMモデル自体は探せばいくつか配布されている。でも他人を同じでは面白くない。というわけでVRoid Studio。これを使えばお手軽に3Dモデルアバターを自作できる。しかもVRMで出力できる。つまりLuppetで使える。

サンプルの女の子がかわいかったので改造して使わせてもらおう。髪をいじり、Tシャツに着せ替えてテクスチャも差し替えた。テクスチャはPhotoshopで加工。Tシャツのビールの絵はもちろんいらすとやである。

これひとつで自分好みのモデルを完成させて使うのもいい。だがせっかくなのでもうちょっとこだわりたい。例えばアクセサリをつけさせたい。DJだからヘッドフォン。あと趣味でメガネ。

【寄り道】VRoidにアクセサリをつけたい

ヘッドフォンの3Dモデルもメガネも無料で配布している場所はあるが、せっかくなので自作してみよう。つまりモデリングが必要だ。

【寄り道】モデリングならBlender

Blenderは2.7までは 地獄の操作系 をしていたが、2.8から生まれ変わったかのように改善され非常に使いやすくなった(2.7と比較して、だが)。なので昔Metaseqoia(別の3Dモデリングソフト)を触っていた経験を生かし、ところどころ調べながら作業してヘッドフォンをモデリングしてみた。もちろんMetasequoiaや、たとえばxismoとかで作ってもいいと思うし、他で配布している3Dモデル素材を持ってきてもいい。でも今回は勉強のためにBlender2.8で自作してみた。

できたぞ。テクスチャが雑だがまあ多少は問題ない。せっかくなのでうちのサークルのロゴを入れよう。

【寄り道】VRM改造にUnity

いまのところVRoidにアクセサリモデルを取り込む機能はないので(切実に求む!)、他の3DソフトでVRMファイルを取り込んで取り付けるしかない。軽く調べた所、BlenderでVRMを取り込むのは簡単だが、出力しようとすると大変なんだそうだ。というわけで、Unityを使う。

VRMの公式サイトでUnityでVRMを取り込むためのアセットUniVRMをダウンロードできる。これを使えばUnityでVRMモデルのインポート/エクスポートができる。

アセットを導入後、VRMファイルをUnityに放り込み、この画像のように各パーツの位置をあわせて…(※上記の画像ではパーツのテクスチャを設定し忘れている)

 

このように取り付けたい身体の箇所(この場合はHead)直下に配置する。

そしたらVRMメニューのExport Humanoidからエクスポートするだけ。ここまでで、アバターとなる3Dモデルは用意できた。

Luppetを試す

Leap Motionには机置きして使う方法もあるが、Luppetは首にマウントして使う前提になっている。Leap Motionを首からかけるマウンタは安く売ってるので、これを買えば解決する。

といってもLeap Motion専用のマウンタである必要はなく、アクションカムやスマホを身体に固定する用途でごく一般的に販売しているものが使える。が、注意点があり、ネジ止めのカメラ穴用ではなくスマホ用、つまり 「挟む」タイプのものを選んで買うこと が重要。Leapにはカメラ固定用の穴は無いからだ。幅が広すぎる場合は消しゴムなどをいっしょに挟んて調整する。

自分は「せっかく買うんだったら車載にも使えるしっかりしたやつがいいな」と思ったので胸にマウントするバンド(チェストマウントハーネス)を注文した。チェストマウントするときは、胸のかなり上部に巻いて、センサーが首元にくるように調整したほうが良い。

消しゴム(をガムテでぐるぐるしたもの)を挟んで固定するの図。

あとはWebカメラとLuppetがあれば、一応バ美肉できる。

使ってみた感じはなかなか良好だった。手の位置も意外に遠くまで認識する。手のひらがひっくりかえって認識してしまったり、長時間つけていると位置がちょっとおかしくなる事はあるが、それはどちらかというとLeap Motionの問題っぽい。(Leapは熱を持ちやすい)

Luppetに関して、要望というか気になるところはたしかにいくつかあるが、直接開発者に意見として投げてみたので、改善されることに期待したい。

背景をビカビカさせたい

背景でにぎやかしとなるオーディオビジュアライザを用意する。これがあるのとないのとは大違いだ。複雑な映像である必要はなく、丸とか四角とかが勝手に伸び縮みしたりカラフルに光ってるだけでいい。ただの映像ループではなく、音楽のビートに反応するやつが欲しい。プレイ中は操作できないので、それらを全部オートでやってもらいたい。

あとで調べてみるとこれとかこれなどがみつかったので、こちらで十分な人はこれでもいいと思う。※これらのソフトは私は実際には試してないので自己責任でお願いします。

他にWinampは多数のヴィジュアライザが配布されていて、Line-in入力も標準プラグインで開けるはずなので、使えるかもしれない。※私は実際には(以下略)

が、せっかくなので自作してみた。

【寄り道】ビジュアライザを自作するなら Processing

Processingは画像・映像系のプログラミングができるソフトだ。適当に書いても処理速度は結構速い。記述にはJavaを使用する。なおPython等の他の言語でもいけるが、勉強する手間が増えるのでJavaのまま書いたほうが早い。言語としてPythonは好きだがJavaも一応仕事で使ってたし。

軽くググると、Processingでビジュアライザを作ってる人がいた。これを改造させてもらおう。

Processingで自動VJというか古きwindowsのオーディオビジュアルみたいなやつ - Qiita

そんなわけでできたのがこちら。

なかなかいいかんじ。めっちゃビカビカしているが、真ん中にキャラクターが立つので単体で見るよりは目に痛いことにはならないはず。DJプレイ中はこれを裏で実行させておき、OBSでキャプチャすれば良い。

それにしても予想以上に軽快に動いたのは頼もしい。一応、標準の60FPSから30FPSに落としてCPU稼働率に多少余裕をもたせておいた。

改造したスクリプトはこちら↓に置いておくので、必要な人は持ってって欲しい。

https://github.com/chomstudio/auto_vj

前景にDJコントローラを置こう

DJしてるっぽくみせるには、DJ機材をキャラクターの前に置かなければならない。これは普通に静止画を用意して、重ねればいいだろう。

ちなみに自然にみせるコツとして、DJコントローラは斜め上からの視点ではなく、真後ろからの視点じゃないといけない。コントローラの上に手を重ねる、というのを自然に見えるようにするのは面倒な処理が必要だ。

 

PioneerDJのカタログページに真後ろからの画像があったので使わせてもらう。ちなみにDDJ-RBはリアルに私が使ってるコントローラ。これをいらすとやから貰ってきた机の上に載せて完成。ついでにケーブルを書き足した。

 

これを透過PNGで保存しておく。

これらをOBS上で合成する

素材は一通り揃ったので、OBS上で合成していこう。

まずいちばん背景にProcessingのキャプチャ画面。その上にLuppetのキャプチャ画面。これはグリーンバックで透過させる。最前景に、DJコントローラの絵と机。

LuppetとProcessingに関する注意点として、最小化していたり、デスクトップからはみ出した部分は正常にキャプチャされない。 なのでこのふたつの実行ウィンドウは、配信ソフトの下に開いたままにしておかなければならない(どういう意味でも、デュアルディスプレイはライブ放送に有利と感じた)。またOBS側の設定でマウスカーソルを非表示にしておくのを忘れないようにしよう。

あとはOBSの配信設定をして、配信するだけだ。

配信したようす

※クリックで放送アーカイブに飛びます

※一応選曲について解説。 麦酒夜宴は音楽を聞きながらビールを美味しく飲もうという趣旨のイベントなため、ビールがおいしく飲める曲という点を最も重視しており、いつもの客層に合わせておっさん向けの曲を中心に据えながら個人的な趣味をところどころブッこむという感じになっている。

完走した感想ですが

くぅ〜疲れましたw これにて完結です! まあ、余計な寄り道が多かったせいではあるが…(作業のほとんどは3DモデリングとProcessingのプログラミングだった)。

1時間オーバーのDJプレイ中、ProcessingやLuppetは止まったりオチたりすることはなかった。しかしLeap Motionは、熱を持ってくるとかなりキャプチャ精度がガビガビになってくる。ハード的なところは諦めるしかないと思う。

Lead Motionは調子のいいときは指の形はそこそこ正確に取れるが、腕の絶対位置はそれほど正確に取れるものではないので、「DJコントローラのどのツマミを触ってるか」をこの環境で伝えるのは難しいだろう。だがまあ「なんかやってる」感が伝われば良いので個人的には満足している。

あとは…声かな…。美少女の格好で、MCでしゃべったときのおっさん声はやはりショックでかいのでは。なので配信ではDJ中まったく喋らず、最後のオチとしてシャベッタァァァとしたかった。ちなみにVT4(ボイスチェンジャー)ならすでに買ってあるので、バ美声…やるかな…。

posted by ちょむ at 00:58| Comment(0) | TrackBack(0) | 日記
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

※ブログオーナーが承認したコメントのみ表示されます。
この記事へのトラックバックURL
http://blog.sakura.ne.jp/tb/187458153
※ブログオーナーが承認したトラックバックのみ表示されます。
※言及リンクのないトラックバックは受信されません。

この記事へのトラックバック