実質無料でバーチャルユーチューバーになる方法
バーチャルユーチューバーを見ていたらバーチャルユーチューバーになりたくなるのが
必然ですが、
如何せんモーションキャプチャやらVRヘッドセットやら
何やらかんやら揃える余裕がない。
そんな貴方へ送る記事です。
こんなのを作ります。
バーチャルユーチューバーになるには
まずバーチャルユーチューバーに必要なものを考えてみます。
- 表情がつく
- 口が動く
最低限必要な部分はここだと思います。
Live2DとかFaceRigを使っている人達の部分ですね。
- 手が動く
- 全身が動く
3Dモデルの人達がやっている部分、ここを実現しようとするとVRヘッドセットやモーションキャプチャを使ってる人が多く、まあ予算15万〜ぐらいでしょうか。
が、僕はお金がないので無料でやろうと思います。
作り方
用意するもの
- MacBook Pro
- Leapmotion
- Unity
機材は私物なので実質無料です。皆さんのご家庭にもあると思います。
今回やることは
表情→Webカメラからの画像認識
手→Leapmotionでの操作
この2点です。
というか、もうやってる人います。
FaceRig無しでも中の人(二次元)になりたい!【Unity × OpenCV × Dlib × Live2D】 - Qiita
#クエリちゃん生誕祭2016 わ、忘れてたわけじゃないんですよ!今更ですが「ひみつのクエリちゃん」です。PCのカメラでdlibで顔の位置解析して、leapmotionで手の動き見て、クエリちゃんになりきるですよ(多分)
ここ見てやればいいです。
では無くて、
皆さんUnityのアセット
OpenCV for Unity - Asset Store :$95
Dlib FaceLandmark Detector - Asset Store :$40
この2点を買われて作っているのですが、
計$135!
そんな金はねえ!無料でやってやるぜ!という記事です(ここが本題)
作ったものをTwitterにあげた所、アセットですか?という質問がちょこちょこあったので…
無料です!
DlibもOpenCVもそのまま使うなら誰でも使えますからね。
お金の無い僕は何とかして無料で済む方法を探しました。
ではまず顔認識の為にDlibとOpenCVを入れます。
Dlibの高性能な顔器官検出をMacでさくっと試す - Qiita
入れました。
こちらの顔認識プログラムを使うとWebカメラから顔の特徴点座標の位置を取れます。
次に今回は顔の向きも調整したいので
Head Pose Estimation using OpenCV and Dlib | Learn OpenCV
こちらの顔向き推定のプログラムを借ります。
そうするとこちらの画像のように
鼻先から向いてる方向へ線が伸びます。
この線の端点の取得と、顔の特徴点座標、座標から判断した瞬き中か否かを判定してくれるプログラムがこちら。
Unityへ情報を送る
このプログラムでは顔認識した情報をUDPでUnityへ送っています。
JSON形式ですね。picojsonを使っています。
このデータをUnity側で受け取れればアセットを買う必要がないという事ですね。
using UnityEngine; | |
using System; | |
using System.Collections; | |
using System.Net; | |
using System.IO; | |
using System.Net.Sockets; | |
using System.Text; | |
using System.Threading; | |
using MiniJSON; | |
public class UDPReceive : MonoBehaviour | |
{ | |
CharactorActor c_actor; | |
int LOCAL_PORT = 22222; | |
static UdpClient udp; | |
Thread thread; | |
public string parameter; | |
public static Action<string> DataCallBack; | |
void Start () | |
{ | |
UDPReceive.DataCallBack += Method; | |
UDPStart(); | |
} | |
public void UDPStart(){ | |
udp = new UdpClient(LOCAL_PORT); | |
thread = new Thread(new ThreadStart(ThreadMethod)); | |
thread.Start(); | |
} | |
public void Method(string data){ | |
parameter = data; | |
} | |
void OnApplicationQuit() | |
{ | |
thread.Abort(); | |
} | |
private static void ThreadMethod() | |
{ | |
while(true) | |
{ | |
IPEndPoint remoteEP = null; | |
byte[] data = udp.Receive(ref remoteEP); | |
string text = Encoding.ASCII.GetString(data); | |
DataCallBack(text); | |
//Debug.Log(text); | |
} | |
} | |
} |
gist1bd9860794434f35d2725f83b82e9987
受け取りのスクリプトはこちら。
ここのparameterにJSONが垂れ流されるので、デシリアライズして情報を取り出せば
Unityで動かし放題!
(ヘーベルハウスって言われたけど確かに似てる)
顔向きの鼻先から伸びていた端点が球体の位置で、その向きに顔(箱)が向くようにしています。
次にせっかくなので腕も導入します。
最新のOrionはMacで使えないので(使わせて…)、v2.3系が最新?だと思います。
Release Leap Motion Core Assets v2.3.0 · leapmotion/LeapMotionCoreAssets · GitHub
サンプルをそのままぶち込みます。
やっつけだな
後はOBS等のキャプチャソフトでウィンドウやらゲーム画面と重ね合わせれば完成。
出来ました。
まとめ
アセットすら買わずにバーチャルユーチューバーになる方法をお伝えしました。
アセット買えばいいだろという方じゃあ金くれよもいると思います。
もちろんアセットを買えばUnity単体で完結するので、WebGLやアプリ化がそのまま出来るメリットがあるのですが、
自分のPCでバーチャルユーチューバーになるだけならPC(+Leapmotion)のみで実質無料(顔のキャプチャだけなら本当にノートPCのみで可能)で出来るよというお話でした。
ちなみにバーチャルユーチューバーになる方法とか書いてますが別に活動する予定はありません。
美少女モデルが出来るかヘーベルハウスからお話が来るか僕が美少女ボイスになったら考えようと思います。無料でVtuberになりたい人の参考になったら幸いです。
ちなみに僕は電脳少女シロちゃんが好きです。
それでは。
電脳少女シロちゃんのTPSゲームを作った話 - こたつにっき