Sator Imaging - はてなブログ

作業用のメモや、読んだ資料のまとめが置いてあります。 アメドラ好き。 最近は ・プリプロ ・演出シーンやアセットの制作 が半々ぐらいです。 ◆ 短編アニメシリーズ ◆ VR進撃の巨人 THE HUMAN RACE ◆ 出資向けVTuber ◆ 版権物スマホゲー ◆ https://twitter.com/sator_imaging

#VTuber開発まとめ

開発記録とメモのまとめ

目次

  1. ソフトウェア篇
  2. ハードウェア篇
続きを読む

複数のマイクをつないでキャラごとにリップシンク(その2)

はじめに

キャラごとにショートカットキーを設定して、キーを押しているときだけ対応したキャラがリップシンクする、という仮組はしてあるけど、操作が辛いし一人がベタ付きはコスト掛かりすぎ。

なので、複数マイクを使ってそれぞれのキャラに一つマイクを割り当てて口パクをさせよう、というお話。

動作結果

まずは動作結果。基本的には想定したとおりに動く。

下手側のキャラは日本語、上手側のキャラは英語のボイスに合わせてリップシンク

--

自宅にオーディオインターフェイスが無いので、3体以上のキャラで試せてないのがちょっと不安。 2体の時とはまた別の罠がありそうではある。

続きを読む

Hi5 グローブのセットアップから Unity への組み込みまで

Manus VR から、界隈で人気と噂の Hi5 グローブに乗り換え。

単三電池を左右に一本ずつ入れるだけで数時間動く。充電式バッテリーがへたる心配もないし、電池が切れたら買ってくればすぐに撮影再開できる。 購入直後に Noitom 社来日、新製品発表へ、とのメールを受けてちょっと焦る。

Unity 用アセットのダウンロード

続きを読む

【Unity】 キャラクターのポーズ編集用エディター拡張

Unity で DCC ツールっぽいスケルトンを表示して、キャラクターのポーズが編集できるようになるエディター拡張。

続きを読む

複数のマイクをつないでキャラごとにリップシンク

概要

同じシーンに OVR Lipsync を適用したキャラが複数いる状態で、それぞれのキャラに別々のマイクの音声を割り当てる、を実現出来そうなヤツ。

※まだ試してない。 試した。

指定したのマイクの音声を拾う方法

以下より。

サンプルをちょっと編集。

[SerializeField] string deviceName = "マイクのデバイス名をここに";

void Start()
{
   var audio = GetComponent<AudioSource>();
   if(null == audio)
   {
      return;
   }
   audio.clip = Microphone.Start(deviceName, true, 10, 44100);
   audio.loop = true;

   /* https://support.unity3d.com/hc/en-us/articles/206485253-How-do-I-get-Unity-to-playback-a-Microphone-input-in-real-time-
    *
    * To control latency you will also need to call Microphone.GetPosition(); and choose your desired latency sample rate.
    * If you want no latency you can set this to “0” samples before the audio starts to play.
    */
   // 指定したサンプル数だけディレイさせる。0 なら即時。
   //while (!(0 < Microphone.GetPosition(deviceName))){ }

   //Debug.Log("start playing... position is " + Microphone.GetPosition(deviceName));
   audio.Play();
}

バイス名一覧をインスペクターに表示する。 Inspector 用のエディター拡張を作るほどでも無いので、表示された一覧からコピペする。

#if UNITY_EDITOR
        public string[] microphoneDeviceNames;

        void Reset()
        {
            LoadMicrophoneDeviceNames();
        }

        void OnValidate()
        {
            LoadMicrophoneDeviceNames();
        }

        [ContextMenu("Load Microphone Device Names")]
        void LoadMicrophoneDeviceNames()
        {
            microphoneDeviceNames = Microphone.devices;
        }
#endif

UnityEngine.Microphone リファレンス

--

こちらもどうぞ

OVR Lipsync 更新(2019-04-23日版)

Oculus の Avatar SDK と OVR Lipsync にアップデートが来ていたので更新。

OVR Lipsync 1.36.0(2019/04/23 リリース)

解析エンジン自体は、相変わらず高音の伸びが怪しい、というか、喋り用のリップシンクなので、音の変化のある瞬間しかとらえてない感じなのは変わらず。。。

VTuber のスクショタイムなどで、「いーーーー」と言って笑顔を作ろうとしても作れず、言い始めた最初だけ口が開いて、その後すぐ閉じちゃうのはこのせいだろうな。

「い、い、い、い、い、い」と言い続けないと笑顔を維持できない地獄は変わらず。

追加でそれ用の処理を実装。

OVRLipSyncContextMorphTarget

OVRLipSyncContextMorphTarget から LateUpdate が(多分)無くなってる? カスタマイズしやすくなった。

あと、Inspector が便利に。

続きを読む

HTC Vive Pro(Base Station 2.0)に切り替え

Base Station 1.0 から 2.0 へ変えた時に調べた諸々。

Valve の HMD が発表されたりリークされたり、縁が切れそうで切れないベースステーション

Azure Kinect DK と Valve Index が出てくる6月までは頑張ってもらいます。

続きを読む