Logo: by @otama_jacksy
v1.4.0
- 作成: 獏星(ばくすたー)
- 2020/09/24
WindowsでVRMを表示し、追加のデバイスなしで動かせるアプリケーションです。
- できること
- ダウンロード
- 質問など
- (開発者向け)ビルド手順
- OSS等のライセンス
- VRMを読み込み、キャラクターの上半身を表示します。
- キーボードとマウス操作をモーションとして反映します。
- 可変のクロマキーが適用できます。
キーボードとマウス操作のみでキャラクターが動く特徴から、以下のシチュエーションで活躍します。
- 機材の準備が面倒な時の配信
- ライブコーディング中の賑やかし
- デスクトップマスコット
Boothから取得可能です。
Windows 10環境でお使いいただけます。
操作方法についてはマニュアルをご覧下さい。
適当なフォルダ以下に、次の構成で配置します。
Bin
- (空のディレクトリ)
Unity
- このレポジトリ
WPF
Unity 2019.4系でUnityプロジェクトを開き、Visual Studio 2019でWPFプロジェクトを開きます。
メンテナの開発環境は以下の通りです。
- Unity 2019.4.1f1 Personal
- Visual Studio Community 2019 16.6.3
- .NET Core 3.1 SDKがインストール済みであること
- Visual Studioのコンポーネントで「C++によるデスクトップ開発」をインストール済みであること
- UnityのBurstコンパイラ向けに必要なセットアップです。
- FinalIK
- Dlib FaceLandmark Detector
- OpenCV for Unity
- UniVRM v0.55.0
- UniRx (アセットストアから)
- XinputGamepad v0.3b
- AniLipSync VRM v1.0.1
- AniLipSyncが依存しているOVRLipSync v1.28.0のインストールも必要です。
- VRMLoaderUI v0.3
- Zenject (アセットストアから)
- MidiJack
- SharpDX.DirectInput 4.2.0
- RawInput.Sharp 0.0.3
- DOTween (アセットストアから)
FinalIK, Dlib FaceLandmark Detector, OpenCV for Unityの3つは有償アセットであることに注意してください。
MidiJackはForkしたものを使っている点に注意して下さい。
Dlib FaceLandmark Detectorについては、アセットに含まれるデータセットをStreamingAssets
フォルダ以下に移動します。導入にあたっては、Dlib FaceLandmark Detector本体のサンプルプロジェクト(WebCamTextureExample
)を動かすなどして、ファイルが正しく置けているか確認します。
SharpDXは次の手順で導入します。
- 2つのNuGetギャラリーの
Download package
から.nupkg
ファイルを取得し、それぞれ.zip
ファイルとして展開します。 - 展開したzip内の
lib/netstandard1.3/
フォルダにそれぞれSharpDX.dll
およびSharpDX.DirectInput.dll
があるので、これらをUnityプロジェクト上の適当な場所に追加します。
RawInput.Sharpもほぼ同様の導入手順です。
- NuGetギャラリーから取得した
.nupkg
を展開し、中のlib/netstandard1.1/RawInput.Sharp.dll
を取得します。 - 取得したDLLを、Unityプロジェクト上でAssets以下に
RawInputSharp
というフォルダを作り、その下に追加します。
UniVRMについては、導入後に2箇所を変更します。
Assets/VRM/UniHumanoid/Scripts/HumanPoseTransfer.cs
の68行目付近に次のようなコードを追記します。
//...
HumanPoseHandler m_handler;
//下記の1行を追加
public HumanPoseHandler PoseHandler => m_handler;
public void OnEnable()
{
//...
また、Assets/VRM/UniVRM/Scripts/BlendShape/VRMBlendShapeProxy.cs
の20行目付近に次のようなコードを追記します。
//...
//この関数を追記
public void ReloadBlendShape()
{
m_merger?.RestoreMaterialInitialValues(BlendShapeAvatar.Clips);
if (BlendShapeAvatar != null)
{
m_merger = new BlendShapeMerger(BlendShapeAvatar.Clips, transform);
}
}
//...
- Unityでのビルド時には
Bin
フォルダを指定します。 - WPFでのビルドでは、
VMagicMirrorConfig
プロジェクトを右クリックし、発行
を指定してフォルダ上にアプリケーションを配置します。- プロファイル設定は次のようにします。
- 構成:
Release | x86
- ターゲットフレームワーク:
netcoreapp3.0
- 配置モード:
自己完結
- ターゲットランタイム:
win10-x86
- ターゲットの場所: PC上の適当なフォルダ
- 構成:
- 上記の設定で発行すると、ターゲットのフォルダ上に
VMagicMirror.exe
を含むファイル群が出力されます。これらのファイルをBin/ConfigApp/
以下にコピーします。
- プロファイル設定は次のようにします。
フォルダ構成については配布されているVMagicMirrorも参考にしてください。
設定UIであるWPFプロジェクト内でOSSライセンスを掲載しています。
https://github.com/malaybaku/VMagicMirrorConfig
プレーンテキストとしては下記を参照下さい。
このレポジトリに含まれるxbox_controller.fbx
はSketchFabにてAttribution 4.0 International (CC BY 4.0)で公開されているものを用いています。
作成者: Criegrrunov モデル取得元URL: https://sketchfab.com/3d-models/xbox-controller-fb71f28a6eab4a2785cf68ff87c4c1fc
VMagicMirrorでは元モデルに対し、マテリアルを差し替えたものを用いています。これは他のキーボード、タッチパッド等と見た目の一貫性をはかるためです。