Skip to content

Latest commit

 

History

History
196 lines (126 loc) · 9.56 KB

README.md

File metadata and controls

196 lines (126 loc) · 9.56 KB

English Readme

Logo

Logo: by @otama_jacksy

v2.0.8

  • 作成: 獏星(ばくすたー)
  • 2022/08/31

WindowsでVRMを表示し、追加のデバイスなしで動かせるアプリケーションです。

  1. できること
  2. ダウンロード
  3. 質問など
  4. (開発者向け)ビルド手順
  5. OSS等のライセンス
  6. ローカリゼーションについて

1. できること

  • VRMを読み込み、キャラクターの上半身を表示します。
  • キーボードとマウス操作をモーションとして反映します。
  • 可変のクロマキーが適用できます。

キーボードとマウス操作のみでキャラクターが動く特徴から、以下のシチュエーションで活躍します。

  • 機材の準備が面倒な時の配信
  • ライブコーディング中の賑やかし
  • デスクトップマスコット

2. ダウンロード

Boothから取得可能です。

Windows 10環境でお使いいただけます。

操作方法についてはマニュアルをご覧下さい。

3. 質問など

4. (開発者向け)ビルド手順

4.1. レポジトリの配置

適当なフォルダに本レポジトリを配置します。配置先について、空白文字を含むようなフォルダパスは避けて下さい。

Unity 2020.3系でUnityプロジェクト(本レポジトリのVMagicMirrorフォルダ)を開き、Visual Studio 2022でWPFプロジェクトを開きます。

メンテナの開発環境は以下の通りです。

  • Unity 2020.3.22f1 Personal
  • Visual Studio Community 2022 (17.0.0)
    • 「.NET Desktop」コンポーネントがインストール済みであること
    • 「C++によるデスクトップ開発」コンポーネントがインストール済みであること
      • UnityのBurstコンパイラ向けに必要なセットアップです。

4.2. アセットの導入

FinalIK, Dlib FaceLandmark Detector, OpenCV for Unityの3つは有償アセットであることに注意してください。

NuGetForUnityNAudioを導入するために使用しています。

"Fly,Baby." および "LaserLightShader"はBOOTHで販売されているアセットで、ビルドに必須ではありませんが、もし導入しない場合、タイピング演出が一部動かなくなります。

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というフォルダを作り、その下に追加します。

OpenCVforUnityについては導入後、DisposableOpenCVObject.csを次のように書き換えます。

    abstract public class DisposableOpenCVObject : DisposableObject
    {

//        internal IntPtr nativeObj;
        //Change to public member
        public IntPtr nativeObj;

以上のほか、手作業での導入は不要ですが、Unity Package Managerで下記を参照しています。

  • UniVRM v0.66.0
  • UniRx
  • MidiJack
    • オリジナルのMidiJackではなく、Forkレポジトリです。

特に初回にプロジェクトを開くとコンパイルエラーになります。これを解決するにはNuGetForUnityの導入後にNAudioLipSyncContext.cs冒頭の#defineのコメントアウトを解除し、一時的にコンパイルエラーを抑制します。 するとNAudioがNuGetから取得できます。取得後、#defineの行をコメントアウトすることで、リップシンクが有効な状態になります。

//下記を一旦コメントアウト解除したのち、ふたたびコメントアウトする
#define TEMP_SUPPRESS_ERROR

4.3. ビルド

4.3.1. コマンドラインからビルドする

Batchesフォルダ内のコマンドからビルドが可能です。 バッチファイル等の引数の指定方法については、ファイル内のコメントを参照して下さい。

Unityについては諸々のアセットを導入済みであることが必要なこと、およびbuild_unity.cmdで厳格にUnityバージョンが指定されていることに注意して下さい。 2021/11/18時点では2020.3.22f1をビルドに使用しています。 事情があって異なるバージョンのUnityエディタを用いる場合は、build_unity.cmd内のUnityのパスを修正します。

また、create_installer.cmdを使用するにはInno Setupのインストールが必要です。

# WPFプロジェクトをビルド
build_wpf.cmd standard dev

# Unityプロジェクトをビルド
build_unity.cmd standard dev

# WPF/Unityプロジェクトをビルド後に呼ぶことでインストーラを作成
create_installer.cmd standard dev v1.2.3

# version.txtに書いてあるバージョン値を用いて、ビルドおよびインストーラの作成までを実行
job_release_instraller.cmd

4.3.2. プロジェクトを開いてビルドする

Binなど、出力先フォルダを準備します。以下はフォルダ名がBinである想定での説明ですが、他のフォルダ名でも構いません。

  • Unityでのビルド時にはBinフォルダを指定します。
  • WPFでのビルドでは、VMagicMirrorConfigプロジェクトを右クリックし、発行を指定してフォルダ上にアプリケーションを配置します。
    • プロファイル設定は次のようにします。
      • 構成: Release | x86
      • ターゲットフレームワーク: netcoreapp3.0
      • 配置モード: 自己完結
      • ターゲットランタイム: win10-x86
      • ターゲットの場所: PC上の適当なフォルダ
    • 上記の設定で発行すると、ターゲットのフォルダ上にVMagicMirror.exeを含むファイル群が出力されます。これらのファイルをBin/ConfigApp/以下にコピーします。

フォルダ構成を確認したい場合、実際に配布されているVMagicMirrorも参考にしてください。

5. OSS等のライセンス

5.1. OSSライセンス

GUI中でOSSライセンスを掲載しており、その文面は下記ファイルで管理しています。

https://github.com/malaybaku/VMagicMirror/blob/master/WPF/VMagicMirrorConfig/VMagicMirrorConfig/Resources/LicenseTextResource.xaml

過去に使用したものも含むライセンス情報は以下に記載しています。

https://malaybaku.github.io/VMagicMirror/credit_license

5.2. ゲームパッドモデルについて

このレポジトリに含まれるGamepad.fbxは #616 に於いて導入しており、Attribution 4.0 International (CC BY 4.0)に従います。

作成者: Negyek

VMagicMirrorでは元モデルに対し、他のデバイスとの一貫性を保つためにマテリアルを適用しているほか、カスタマイズのためにテクスチャを変更可能にしています。

6. ローカリゼーションについて

日本語、英語以外のローカリゼーションでのContributionに興味がある場合、about_localization.mdを参照して下さい。