• VRMお人形遊び向けアセットバンドルの作り方

    2019-08-16 23:26
    〇概要

    VRMお人形遊び
    https://120byte.booth.pm/items/1099618
    でアセットバンドルを読み込めるようにして、強引にアニメーション&曲再生に対応させたので、そのためのアセットバンドルの作り方を書きます。

    〇作り方
    ※Unityのバージョンは2018.4.0f1です。

    アニメーションの動作確認用に何等かのVRMモデルを読み込みます。(VRMモデルの読み込みにはUniVRMが必要です。)


    アニメーションコントローラを「Controller」という名前で作成します。


    VRMモデルのアニメーターのコントローラに先ほど作成したものを付けて、アニメーションウィンドウからアニメーションクリップを作成します。たぶんですが、作成済みのアニメーションクリップをコントローラに入れても動くと思います。(アニメーションクリップの名前は何でも大丈夫です。)


    アニメーションウィンドウの左側のボタンを押して、アニメーターから動かしたい部位を追加します。


    タイムラインにキーを打って値を設定します。この時点でUnityの再生ボタンを押せば動きが確認できるはずなので、所望の動きになるまで頑張ります。軽く丸まったようになるのはUnityの持病なので諦めてください。


    動きが出来たら曲や効果音を追加します。空のゲームオブジェクトを作成して、オーディオクリップを付ければ自動的にオーディオソースが付いて便利です。必要に応じてボリューム調整やループ設定を行います。


    作成したゲームオブジェクトをprefabにします。名前は「GameObject」にする必要があります。インスペクターからプロジェクトにドラッグアンドドロップするとprefabになって便利です。


    アニメーションと音に関するファイルを全て選択し、一番右下端からアセットバンドルの名前を付けます。この名前は何でも大丈夫です。


    アセットバンドルはビルドする必要があるので、エディタ用のスクリプトを追加します。スクリプトは以下をコピペして使ってください。※なお、このスクリプトはAssets/Editor/に入れないと動きません。

    using UnityEngine;
    using UnityEditor;
    public class NewBehaviourScript : MonoBehaviour
    {
    [MenuItem("Example/Build Asset Bundles")]
    static void BuildABs()
    {
    BuildPipeline.BuildAssetBundles("Assets/ABs", BuildAssetBundleOptions.None, BuildTarget.StandaloneWindows);
    }
    }
    参考
    https://docs.unity3d.com/ja/current/ScriptReference/BuildPipeline.BuildAssetBundles.html


    前述のスクリプトを追加するとExample/Build Asset Bundlesというメニューが出てくるので、Build Asset Bundlesからビルドします。※ビルド先はAssets/ABsになっているので、ABsフォルダを作っておきます。



    ビルドできたファイルをエクスプローラで開いて、拡張子として*.abを付けてあげたら完成です。


    完成したファイルをVRMお人形遊びのANIフォルダに入れたら使えます。
  • 広告
  • niconareが死んじゃうからバーチャルキャスト向けスライドVCI作成ツールを作ったので宣伝

    2019-07-22 23:40


    ■まえがき
    niconare死んじゃいますね。
    https://blog.nicovideo.jp/niconews/104611.html

    まぁ、言うて一度も使ったことないのですが、見た事くらいはあります。
    私は普段バーチャルキャスト経由で間接的にniconareのお世話になります。

    バーチャルキャスト
    https://virtualcast.jp/about/

    バーチャルキャストでは説明資料にホワイトボードを用います。
    ホワイトボードはバーチャルキャスト内のアイテムです。
    ホワイトボードを使ったスライドの作成方法は主に2種類あります。

    一つは画像のURLを設定ファイル(json)に書き込む方法
    https://qiita.com/miyumiyu/items/bb780c9582bb21e10e1d
    ※デメリットは面倒なことです。

    もう一つはniconareです。
    https://virtualcast.jp/blog/2019/02/virtualcast151a/
    ※ご存知の通りniconareはサービス終了の予定です。

    ■VCIについて
    バーチャルキャストではバーチャルキャスト内で使えるアイテム(VCI)を自作できます。
    https://virtualcast.jp/blog/2019/02/itempublicstudio/

    自作できるのですが、ゲームエンジン(Unity)やプログラミング言語(Lua)など、
    一般ユーザーに利用を強いるのはハードルのある作業になります。

    Unity
    https://unity.com/ja

    Lua
    https://ja.wikipedia.org/wiki/Lua

    なにより、スライド内容ごとにVCI作成作業を毎回Unity+Luaで行うのはシンドイです。

    ■提案「画像から自動でスライドVCIが作れるツール」
    という事で頭に貼った画像のスライドVCIが画像から自動作成できるツールを作りました。





    宣伝
    https://120byte.booth.pm/items/1297409

    動作例
    https://twitter.com/120byte/status/1153282775220285440

    サンプル
    https://seed.online/user/items/f10da44190a607ec651f7d7b7aef856753fb20ab68be76c1930d3faa03edfdea/edit

    以上、宣伝でした。
  • VRMの着せ替え

    2019-05-14 20:38

    © Unity Technologies Japan/UCL

    余談
     いきなり余談かよ。という感じだと思うので、なんでもいいからやり方教えろ、という人は飛ばして大丈夫です。所謂ハードル下げとか、予防線というやつです。
     国内の3Dモデルの着せ替え文化は、私が知る限りMMD(PMX)→FBX→VRMです。PMXは時代的なものだったり、権利的なグレーゾーンが生まれやすい文化なのもあり、着せ替えのような改変行為はあまり語られていないように思います。無いとは言いませんが、情報の古さや独自型式故のしがらみに加えて若干のアングラ感があり、VRMからすると異世界的に映ります。また、FBXはVRChatで着せ替えがあったと思われます。「思われます。」というのは私がVRChat文化圏にあまり身を置いていないための予想です。よってここから先も予想ですが、VRChatにおけるモデル改変等の情報伝達はコミュニケーションの一環として口伝によるものが多い傾向にあり、インターネット上に情報としてあまり残らない形で伝わっているように感じます。(シェーダーについてはプログラム故に3Dモデルとは文化が若干異なり、この傾向はそこまで色濃くないように感じます。)
     これらの経緯から意外とVRMの着せ替えに相当する情報は、FBX含めなかなか無いように思われましたので、今回の記事の投稿に至りました。私はてっきりこうした情報は多種多様に出回っており、記事にするような必要はないものと思っていました。また、記事にするにあたり思い返してみると、意外と大まかなツールの種類を跨ぐために要素が多様で、需要に対しては確かに畑違いの人には辛い作業であると思われました。ただし、私も3Dモデルについては見様見真似の世界ですので、この記事の内容はあくまで一例としてご覧頂くようお願いします。前述したとおり、要素が多様であらゆる手段があり、ケースバイケース感の強い内容になると思われます。また、私は面倒が嫌いなので質より簡単さ重視です。以降の内容は悪く聞こえる言い方をすると「首のすげ替え」(首切り)であり、良く思わない人も居ますので、その点もご注意をお願いします。

    概要
     VRMの着せ替え方法を記載します。頭と体を分けた簡易的な着せ替えです。今回の例ではVRMとしますが、両方または片方がFBXの場合であっても、基本は同様です。応用が利けば小物の追加なども同様にできます。

    対象
     読者対象はVRMを作成したことがあり、Blenderの基本的な操作が分かる方とします。Blenderについては、最初に表示されている立方体を移動、回転、変形、削除できる程度で良いです。

    注意
     この記事では方法の記載に注力しますが、使用する3Dモデルの利用に関する許諾および規約、ライセンスはよく確認してから作業に入るようにお願いします。

    準備
    必要なソフトウェアをインストールします。
    ・Blender(https://www.blender.org/)
    ・VRM importer(https://icyp.github.io/)
    ・UniVRM(https://github.com/vrm-c/UniVRM)
    ・Unity(https://unity.com/ja)
    ※VRM importerの利用方法は以下が参考になると思います。
     https://www.cg-method.com/entry/blender-import-vrm/
      VRM_IMPORTERの導入
       アドオン(VRM_IMPORTER)のインポート

    環境
    念のため私の環境を記載しておきます。
    ・Blender(2.79)
    ・VRM importer(0.5)
    ・UniVRM(0.51)
    ・Unity(2018.4.0f1)
    ※BlenderのバージョンによりVRM importerのバージョンが決まります。
    ※VRM importerのバージョンによりUniVRMのバージョンがある程度決まります。
    ※よって、最新のUniVRMを使いたい場合、Blenderは2.80以上が必要かもしれません。
    ※頭と体の双方がFBXの場合、VRM importerは不要です。

    方法
    ①VRMをBlenderにインポート
    こちらもVRM importerの利用方法と同様に、以下のページにて丁寧にご説明頂いておりますので、引用させて頂きます。詳細はあちらのページをご確認願います。
    https://www.cg-method.com/entry/blender-import-vrm/
     VRM_IMPORTERの導入
      データ(.vrm)のインポート
     データ(.vrm)の確認
     ブレンドシェイプの確認
     ボーン、ウェイトの確認
    ※FBXの場合はBlenderの標準機能でインポートできます。

    ②Blender設定
    まず赤枠内のアイコンをクリックして、陰面処理を無効にします。こうすることで、見えている方から反対側の頂点も選択できるようになります。


    ③頭を消す
    モデル次第で作業の内容が全勢違いますが、今回は例としてVRoidを使用します。


    目のアイコンをクリックして切り替えながら不要な部分を探します。


    不要な部分が分かったら、そこは丸ごと右クリックで削除します。
    ボーン構造は消さないように注意します。


    モデルによっては、この時点である程度は消せます。
    残った部分は、頂点などを選択して消していきます。


    このモデルの場合、頭髪の面が繋がっているため、頂点付近で「Lキー」を押すと、繋がっている面が一度に選択できます。選択したら削除します。


    「Bキー」で大雑把に選択します。


    「Cキー」で細かい所を選択します。


    だいたい消せればOKです。


    頭を繋げるために首を伸ばします。


    頭を傾げた時にはみ出ないよう、広がっている部分は狭めます。
    一番端の辺を全て選択して「Sキー」で縮小すると簡単に狭められます。


    不要なアーマチュア(ボーン)を削除します。(必須ではありません。)


    BlenderからFBX出力すると、Unityで表示できるようになります。


    ③体を消す
    こちらも②同様、モデル次第で作業の内容が全勢違いますが、今回はVRM化したユニティちゃんを使用します。ユニティちゃんをBlenderで読み込む場合は色々問題があるので、別途記事を書きました。
    https://ch.nicovideo.jp/xelloss120/blomaga/ar1762869


    基本的に同じで、目のアイコンで不要メッシュを探して削除します。


    大雑把に選択して削除します。


    残った細かい所を削除します。首は閉じたいので1行?残します。


    頂点結合をして顎のラインで合わせます。


    不要なアーマチュア(ボーン)を削除します。(必須ではありません。)
    ※ルート(Character1_Reference)から必要部分までは残す必要があります。


    BlenderからFBX出力すると、Unityで表示できるようになります。


    ④Unityで着せ替え
    体のRigをHumanoidに変更します。


    頭と体をシーンに配置します。


    体の大きさを調整します。
    Yで首と顎を見ながら高さを合わせて、XとZに同じ値を設定するのが楽だと思います。


    体側の頭の子を作成した頭にします。(作成した頭の親を体側の頭にします。)


    ⑤VRMを作成
    あとは普通にVRMを作成するだけです。
    メタデータ、マテリアル、揺れ物、表情、目線を設定します。


    備考
    ・体の方の首をまっすぐ長めにして残す方が無難です。(はみ出しや隙間の対策)
    ・頭の方を丁寧に作り、単体のまま揺れ物設定等をしておくと便利です。(流用が利く)
    ・同じ頭なら、VRM用の表情設定ファイルは上書きで使いまわせます。
    ・VRoidの体だと、テクスチャ差し替えによるお手軽着せ替えにも対応できて便利です。
    ・肌の色が合わない時は、テクスチャのカラーバランス等を画像処理ソフトで変更します。
     下はGimpでVRoidの肌テクスチャを極端な褐色風に変更した例


    参考
    https://twitter.com/120byte/status/1089459383208050688
    https://toylabo.tech/blog/skills/52/
    https://www.cg-method.com/entry/blender-import-vrm/

    https://icyp.github.io/