OGLOG

おぐらのぶろぐです。VDRAWのマニュアルを兼ねています。

VDRAWでキャラの腕が頭に埋まる問題の直し方

あけましておめでとうございます。おぐらです。

VDRAWは身長150cmくらいのアバターをデフォルトとして制作していますので、VRChatで使われているような低身長なアバターや、SDキャラのような頭身の低いアバターなどをVDRAWで読み込むとアバターの手がモニターの上部まで届かず、腕が頭に埋まることがよくあります。

f:id:OGOG_Ogura:20210104203127p:plain

右下のワイプを見るとよく分かりますが、腕が頭に埋まっていますね。
モデルによってはもっと露骨に埋まります。

この現象の原因は、使っているアバターの身長に対してVDRAW内のモニターが大きすぎる&高すぎることです。

「小さいアバター向け設定」に設定し、モデルを再読み込みする

身長が低いアバター向けに、モニターの位置や大きさ、カメラ位置などを調整したプリセットが用意されています。

f:id:OGOG_Ogura:20210104195551p:plain

これを適用すると、↓このようなアングルになります。

f:id:OGOG_Ogura:20210104195709p:plain

見え方がデフォルトとほぼ変わりませんが、モニターが小さくなって低い位置に、カメラはズームさせた状態になっています。
モデルによってはこれでも手の位置がおかしいことがあるので、一度トップ画面に戻り、VRMを再読み込みしてください。

多くのモデルはこれで解決すると思われますが、SDキャラなどの頭身が低いアバターの場合は小さいアバター向け設定にしてもまだ破綻することがあります。

SDキャラの時の対処法

SDとーこちゃん(© Unity Technologies Japan/UCL)を例に出します。
こちらは2.5頭身くらいの極端なSDキャラなので、小さいアバター向け設定にしてもまだ腕が頭に埋まります。

f:id:OGOG_Ogura:20210104200352p:plain

ここからはアバターごとに見た目の調整をすることになるので、各自でアバターに合った設定を探してください。
以下、SDとーこちゃん向けの設定を紹介します。(「小さいアバター向け設定」適用後)


【モニター設定】
・モニターの高さを 0.60 にする

f:id:OGOG_Ogura:20210104200825p:plain


【カメラ設定】
・メインカメラの高さを 0.60 にする

f:id:OGOG_Ogura:20210104200935p:plain


アバター設定】
・ペンと身体の位置関係のYを 0.15 にする
・身体の向きを -30 にする

f:id:OGOG_Ogura:20210104201321p:plain


最後にトップに戻り、VRMの再読み込みをしてください。(またはペン先をカーソル位置に合わせるボタンを5回くらいクリックしてください)
これでそれなりに見られる画面は作れるかと思います。

f:id:OGOG_Ogura:20210104201853p:plain

まだ手にペンが埋まったりしていますが、その辺りは個人で設定していただけると幸いです。

設定の保存

調整が終わったら、設定ファイルを書き出しておきましょう。
スタイル選択画面で、現在の設定をファイルに書き出すことができます。

f:id:OGOG_Ogura:20210104202357p:plain

f:id:OGOG_Ogura:20210104202210p:plain

書き出した設定ファイルは、同じ画面の「Json読み込み」から読み込めます。

ウインドウキャプチャをするとチカチカする?

こんにちはおぐらです。
VDRAWでウインドウキャプチャを使ったとき、そのウインドウがチカチカと点滅してしまうこと、ありませんか?
その解決方法を紹介します。

対処法

対策は簡単。
モニター設定の「Window Capture Mode」を「Bit Blt」にするだけです!

f:id:OGOG_Ogura:20200624174232p:plain

詳しい解説

このWindow Capture Modeは何が違うのでしょうか?

モード キャプチャ処理の速さ 特徴
Print Window 遅い ほぼすべてのウインドウをキャプチャできる
Bit Blt 速い 一部のウインドウはキャプチャできない(Google Chromeなど)

こんな感じの違いがあります。
BitBltは処理が高速なので負荷が減りますが、一部キャプチャできないウインドウもあるのでVDRAWではデフォルトがPrint Windowになっています。

配信ソフトの「ウインドウキャプチャ」でVDRAWをキャプチャできない時は

VDRAW ver1.8.0より、使用しているUnityバージョンが2019.3になったため、ゲーム画面の描画形式が変わっています。
その影響で、配信ソフトウェアの「ウインドウキャプチャ」ではうまくVDRAWの画面を取り込めません。

OBS、N Airの両方で解決方法がありますので、以下を参照してください。

解決方法(OBSの場合)

OBSの場合は「キャプチャ方法」を「Windows Graphics Capture(Windows10 バージョン1903以降)」にするとキャプチャできます。
(当然ですが、Windows UpdateをサボってWindows10を1903以降に更新していない場合は働きません。)
または、ウインドウキャプチャではなく「ゲームキャプチャ」を使うとVDRAWの画面を取得することができます。 f:id:OGOG_Ogura:20200517154829p:plain

解決方法(N Airの場合)

N Airのウインドウキャプチャは取得方式の切り替えができないので、「PCゲームキャプチャ」を使って「特定のウインドウをキャプチャ」を選択し、VDRAWのウインドウを指定してください。 f:id:OGOG_Ogura:20200517154407p:plain

VDRAWの動作を軽くするには?

こんにちはおぐらです。
今回はVDRAWが重くてOBSやゲームを同時に起動すると重くて無理!となってしまった方向けの記事です。

モニターの映像のカクつきを減らす

ウインドウキャプチャを使っていると、負荷が大きくモニターの映像がカクつきやすいです。
これは、ウインドウキャプチャのモードを変更することでカクつきを少なくすることができます。 f:id:OGOG_Ogura:20210112215423p:plain デフォルトの設定では「Print Window」になっていますが、ここを「Bit Blt」にするとモニターの描画負荷が軽くなります。
ただし、Bit BltモードはGoogle Chromeなどの一部のアプリケーションはうまくキャプチャできないことがあるので注意してください。
逆に、Print Windowモードでモニターにうまく映らないアプリケーションもありますので、その時はBit Bltモードにしてください。

また、デスクトップ全体を映す「Desktop (Recommended)」を使う方がウインドウキャプチャよりも負荷が軽いです。
他のウインドウが映り込むリスクはありますが、PCのモニターの数に余裕があり、他のウインドウが映り込む心配がない場合はこちらがおすすめです。 表示範囲のクリッピングとあわせて使ってみて下さい。

設定メニューの「システム/その他」で負荷を下げる

VDRAWのシステム/その他のタブの中に、「クオリティ設定」という項目があります。
ここで、VDRAWの描画品質を変えることができます。
初期設定ではそこそこ負荷が高い設定になっているので、思い切って「Very Low」にしてみたり、
フレームレートや解像度を下げたりしてみましょう。

f:id:OGOG_Ogura:20200502222525p:plain

設定を変えるとどれくらい変わるのか?

今回はSurface Book第一世代で検証しました。
このマシンが積んでいるCPUは「インテル® Core™ i5-6300U」です。少し昔のノートPC向けのちょっといいCPUですね。
グラフィックボードは積んでいないPCなので、GPUはCPU内臓の「インテル® HD グラフィックス 520」となります。
使用するアバターによっても多少負荷が変わります。今回はプリセットアバターのリルさんで検証しました。

最高品質の設定にした時

  • 解像度:1280*720
  • クオリティ:Ultra
  • フレームレート:60fps

f:id:OGOG_Ogura:20200502223647p:plain

めちゃくちゃGPU食ってますね。

最低品質の設定にした時

  • 解像度:1280*720
  • クオリティ:Very Low
  • フレームレート:15fps

f:id:OGOG_Ogura:20200502223824p:plain

はい。負荷がかなり低くなりました。


ちなみに15fpsだと見た目的にカクカクしてしまうので、30fpsにしてみたものがこちら

  • 解像度:1280*720
  • クオリティ:Very Low
  • フレームレート:30fps

f:id:OGOG_Ogura:20200502224026p:plain

15fpsと比べると倍くらいに増えてますね。(当たり前ではある)


さらに解像度を下げて、できる限り負荷を下げてみました。

  • 解像度:640*360
  • クオリティ:Very Low
  • フレームレート:15fps

f:id:OGOG_Ogura:20200502234521p:plain

多分これが一番軽いと思います。 負荷に一番直結するのはフレームレートですね~


なお、今回はフェイストラッキングは使用していません。
フェイストラッキングを使用するとCPU負荷が上がりますのでご注意ください。

PCゲームの場合、ゲーム側の負荷を下げることも大切

PCゲームはそれだけでPCへの負荷がかなり大きいため、VDRAWを同時に起動するとそれはもうすごい負荷になります。
PCゲーム側の設定で解像度やクオリティの設定を少し下げてみるとVDRAWもそれなりに安定して動かすことができます。 特に解像度はフルHD(1920x1080)をHD(1280x720)にするだけで負荷は大きく減ります。

フェイストラッキングの使い方/設定方法

こんにちはおぐらです。

ついにVDRAWver1.8.0からフェイストラッキング機能が追加されました。
フェイストラッキングができる条件や、設定UIがやや複雑なので解説いたします。

フェイストラッキングのシステム要件

  1. Windows8.1以降のOS
  2. OpenGL 4.3以上に対応したCPUやGPU(よほど古くない限りはだいたい対応しているはず)
  3. Visual C++ 2015以降のランタイムがインストールされている

リリース直後は3をインストールしておらずフェイストラッキングができないという方がたくさん出てしまったので、ver1.8.1ではUI上に誘導を追加しました。

https://support.microsoft.com/ja-jp/help/2977003/the-latest-supported-visual-c-downloads

ランタイムは↑こちらから、64bit版をダウンロードしてインストールしてください。

認識精度を上げるには?

カメラの映像から顔がどこにあるか判断しますので、ポイントは

  • 顔が明るく、はっきりとカメラに映ること(顔の前にライトを置いて軽く照らすとGood)
  • 余計なものがカメラに映り込んでいないこと(壁にポスター等があると誤認識されるかも?)
  • 広角ではないカメラを使うこと(理由は詳しく後述します)
  • 眼鏡を外す(着けていても認識はされますが、精度は落ちます)

こんな感じです。

設定UI解説

それでは1つずつ解説していきましょう。

f:id:OGOG_Ogura:20200426121756p:plain

基本設定

カメラ選択

ドロップダウンから、フェイストラッキングに使うカメラを選択できます。
カメラ映像はVDRAW上には絶対に表示されないのでご安心ください。
(他のウインドウに表示していたらバーチャルモニターに乗ることはあるかも(自業自得))

カメラ画質

Webカメラから送る映像の解像度を設定します。
低解像度なほど顔認識処理が軽いです。ちなみにそれぞれの設定の解像度は

  • Low:320*240
  • Medium:640*480
  • High:1280*720

としています。
Webカメラがこれらの解像度に対応していない場合は、選択した値に最も近い解像度が選択されます。


顔のトランスフォーム

f:id:OGOG_Ogura:20200426105153p:plain

位置の影響度

カメラから認識した顔の位置(前後左右上下)を、どれくらいアバターの動きに反映するかの値です。
0にするとアバターの頭の位置は固定されます。1にすると大きく動きます。

キャリブレーション

ラッキング開始時の処理と同じです。アバターの頭のベースとなる位置や向きを決定します。
3カウント終了時のリアルの顔の位置や向きが、アバターがまっすぐ正面を向いている位置や向きとして設定されます。
リラックスした姿勢でもアバターの頭の位置が左右に少しズレたり、変な方向を向いてしまう時などは、
このベース位置がズレていますので再度キャリブレーションをしてください。


まぶた認識設定

f:id:OGOG_Ogura:20200426110042p:plain

認識方法

ドロップダウンで「カメラから(片目ずつ)」「カメラから(両目同時)」「カメラを使わない」の3つが選べます。

  • カメラから(片目ずつ)

右目と左目を別々に認識します。ウインクができるのはこの設定だけです。 ただし、左右の目の開き具合が異なって違和感を感じる場面も多くなりがちです。

  • カメラから(両目同時)

左右の目を同じ閉じ具合として検出します。まばたきや目を閉じるなどの動作は違和感なくできますが、
ウインクはできません。

  • カメラを使わない

カメラからの情報を使用せず、従来の自動まばたきのみで動作させます。

しきい値を使う

しきい値とは、「この値を境界としてON/OFFを切り替える」値です。
ここでは「リアルでの目の閉じ具合が〇〇を超えたらアバターが目を閉じる」という値のことです。
しきい値をONにすると、認識方法に応じてスライダーが表示されます。
このスライダーのツマミの位置が「しきい値」です。

f:id:OGOG_Ogura:20200426111758g:plain

顔認識中であればリアル側の目の閉じ具合がスライダーの裏側にゲージで出ます。
ゲージがしきい値を超えると赤くなり、アバターは目を閉じます。
どの程度目を閉じたらアバターの目を閉じると認識させるのか、スライダー調整してください。

しきい値を使わない場合は、リアルの目の開き具合をある程度そのままアバターに反映します。
なので、しきい値を使わない時は半目ができるようになります。

f:id:OGOG_Ogura:20200426112312g:plain

笑顔検出設定

f:id:OGOG_Ogura:20200426112520p:plain

認識するか否か

笑顔検出をするかしないかを選べます。
笑顔と認識された時に使われるVRMの表情は「JOY」です。

しきい値

笑顔検出では、必ずしきい値を使って検出します。
(これスライダーの「しきい値(R)」ってコピペしたのバレバレですね…そのうち直します)

笑顔認識では、「口角の上がり具合」を見ています。しきい値の設定は大げさに笑った時でなく、自然に笑ったときくらいの設定にしておくといいでしょう。


口の制御設定

f:id:OGOG_Ogura:20200426113339p:plain

制御方法

口の制御方法をドロップダウンから「カメラ+マイク音声」「マイク音声のみ」の2種類から選べます。

  • カメラ+マイク音声

カメラから認識した口の形と、マイクから認識した声を解析してアバターの口を動かします。
声を出していない時もカメラを使って口を制御するので、比較的リアルな口の形が反映されます。
その一方で、このあと解説する口の形の設定によってはモデルの口の形が壊れることもあります。

  • マイク音声のみ

従来の音声ベースのリップシンクのみ使います。リップシンクに使うマイクは「システム/その他」から選択できます。

カメラの影響度

カメラから認識した口をどの程度敏感に反映させるかの値です。
1.00以上の値に設定すると、あまり口を開けていなくてもアバターの口に大きく反映されやすくなります。

音声入力と併用

マイク音声ベースのリップシンクを反映する度合いを設定します。
1.00ならば大きく反映されます。0にすると音声ベースのリップシンクは反映されません。

口の形設定

カメラ映像から得た口の形は、主に口を
「縦にどれくらい開いているか」「横にどれくらい開いているか」「どれくらいすぼめているか」の3つの要素で構成されています。
ここではその3要素に割り当てるアバターの口の形を設定できます。

f:id:OGOG_Ogura:20200426114527p:plain

たとえば↑このように設定すると、リアルで口をめいっぱい縦に開いたとき、アバターは「あ(A)」の口の形を60%反映する ということです。
ここでは「あ」のみを0.6にしていますが、もちろん他の形も混ぜられます。
しかし、複数の形をブレンドしたり、大きな値を設定したりしてしまうと口の形が崩れやすくなります。
音声入力との併用もしている場合は、AIUEOの各パラメータの合計が0.3~0.6くらいに調整するのがよさそうです。
崩れる例↓
f:id:OGOG_Ogura:20200426115511p:plain

ちなみに初期値ではこうなっています↓ f:id:OGOG_Ogura:20200426115213p:plain

ちょっと難解かとは思いますが、下手に設定してアバターの見た目がおかしくなってしまうのが怖い場合はあまり触らない方がいいでしょう。

フェイストラッキングに向いていないWebカメラについて

基本的にカメラであればなんでもいいですが、フェイストラッキングには向かないものもあります。

広角すぎるものは微妙かも?

会議室用などのあまりにも広角すぎるカメラはおすすめできません。
視野角120度など、広角であれば広い範囲を映すことができますが、その分カメラ映像の中に含まれる顔の面積は小さくなります。

顔が小さく映るということは、顔認識がうまくできないことが多くなるということです。
画質を上げれば精度は上がりますが、その分負荷が大きくなります。

フォーカス形式に少し気を付けよう

顔認識は画像が鮮明であることが大切です。ピントが顔に合っていない映像は認識が難しくなります。
もちろん顔にピントが常に合っていればいいですが、マニュアルフォーカスでピンボケしてしまっていたり、オートフォーカスでも部屋の背景にばかりピントが合ってしまい、顔がうまくトラッキングできないことがあります。
どちらがいいとは言い切れませんが、ちょっと気にしておくといいでしょう。

フレームレートは高い方がいい!?

Webカメラのフレームレートは大体30fpsのものが多いですが、もし手に入るならば60fps出せるカメラを選択するのもアリです。
フレームレートが低いカメラは動きに弱く、少し顔を動かすだけで映像にブレが入ってしまいます。
ブレた映像から顔を認識するのは…難しそうですよね。

実際VDRAWでフェイストラッキングを使うと、左右に動いた時にアバターが目を閉じやすくなってしまっています。
特に目がブレると正確な形を認識できなくて「閉じている」判定になりやすいようです。

というわけで、フレームレートが高いカメラならばブレも少なくなるので動きにも強くなる…かも!
しかしこのご時世、Webカメラ自体が入手しづらくなっているので難しいかもしれません。

頭の片隅に留めておいて、気が向いた時にでも いいWebカメラを検討してみてくださいね!


ちなみに2種類のWebカメラを比べてみました。

Amazon | ロジクール ウェブカメラ C270n ブラック HD 720P ウェブカム ストリーミング 小型 シンプル設計 国内正規品 2年間メーカー保証 | Logicool(ロジクール) | ウェブカメラ 通販
こちらは低価格ですが、解像度は1280x720まで、フレームレートも30fpsの一般的なWebカメラです。
これでもトラッキングするには十分ですが、やはり少し認識が外れやすいです。


Amazon | ロジクール ウェブカメラ フルHD 1080P 60FPS ストリーミング ウェブカム AI オートフォーカス 自動露出補正 自動ブレ補正 ストリームカム StreamCam C980OW オフホワイト USB-C接続 国内正規品 2年間メーカー保証 | Logicool(ロジクール) | ウェブカメラ 通販
こちらはWebカメラの中でも高性能・高品質な製品です。
解像度は1920x1080、フレームレートは60fps、フォーカス機能も優秀、さらに明るさの自動調整までついています。
これでフェイストラッキングをすると、よほど激しい動きをしない限り認識が外れることはありませんでした。
フレームレートが高い分、映像もブレがなく認識しやすい鮮明な画像となっています。

お財布と相談してWebカメラを選んでみましょう。

既知の不具合【2020/04/30 Update】

仮想Webカメラ機能の映像出力をONにして数時間放置したり、他のアプリで重い処理が同時に走ると落ちることがある

テクスチャのメモリアクセスでエラーが出ているところまでは分かっていますが、具体的な解決策についてはUnity側の修正が必要そうです。 現状では対応できません。

カスタムキャストのモデルがモデルリストに表示されない

  • 以下の記事を参照してください。

ogog-ogura.hatenablog.jp

Windows7で最新版が使えない

  • Windows7はサポートが終了したOSなので、動作対象外となります。バージョン1.5.0までのVDRAWならば動作しますが、今後のアップデートでWidows7への対応予定はありません。

消したはずのモニターが再起動すると出てくる?

仕様です。開始時にモニターが出ていないとドローイングスタイルがバグるのでこうなっています。

この時右クリックメニュー内のメインモニター表示/非表示のチェックが外れている状態になりますが、これは不具合です。

カスタムキャストのモデルがリストに表示されなくなった時の対処法

3月25日のTHE SEED ONLINEの大型アップデートの影響で、THE SEED ONLINEにアップロードしたはずのカスタムキャストモデルがVDRAWのモデルリストに表示されなくなる現象が起こります。

解決するには以下のツイートのように、THE SEED ONLINEにアクセスして自身の「インベントリ」にカスタムキャストのモデルを追加してください。

インベントリについてはこちらもご一読ください

virtualcast.jp

他のアイテムはインベントリに入っているのに、なぜカスキャだけ外れているの?

THE SEED ONLINEの大型アップデートの仕様変更によって「インベントリ」という概念ができました。
これまでのTHE SEED ONLINEには「アップロード枠」がありましたが、その中でもカスタムキャストのアップロード枠は内部的には特殊な枠という扱いだったため、アプデによるインベントリへの移行処理ができなかったという経緯があります。

ちなみに、THE SEED ONLINE登録時に最初から持っている初期アバターの「シードさん」も同じく特殊枠なのでインベントリから外れています。
シードさんを使いたい時も、同じようにインベントリに追加してくださいね。