FC2ブログ
ヽ|∵|ゝ(Fantom) の 開発blog? ホーム »VRM
このページの記事一覧

【Unity】【VRMLiveViewer】GLBで背景モデルを自作する  


 今回は、VRM Live Viewer で背景を自作したい人のために、GLB を使った簡単な素材作成法を書いておこう。これは実際にデモで使った素材の作り方そのものなので、同じようにやれば、そっくりそのままの背景モデルを作ることもできるだろう。



 GLB は汎用的な3Dモデルフォーマット GLTF と内部的に同じフォーマットである。簡単に言えば GLTF のアーカイブ方式が GLB と考えても良い。専用フォーマットではないため、VRM Live Viewer とは関係なく、色々なもので使える利点がある(例えば、Windows10のペイント3Dでも読み込める)。最近では「Vキャス背景」などにも大量にアップロードされているように、割と誰でも作れることもわかるだろう。

 実の所、VRMGLB と同じ GLTF を拡張したフォーマットだったりする。なので、.vrm を .glb に拡張子を変えるだけで使えるものもある。

 幸いにも Unity では UniVRM というオープンソースライブラリも無料で提供されているので、それを使えば誰でも簡単に GLB ファイルも作れる。公式にも GLB の説明は書いてあるので、一読しておくと良いだろう。今回はそれを実際にやってみたという内容だ。自作するときの参考にでもして貰えると嬉しい

glbファイルの作り方


(※) Unity 2018.4.0f1 / UniVRM 0.51.0 / Windows10(x64) で確認



■UniVRM のインポート

 今回は最終的に GLB でファイルを出力するために UniVRM というライブラリを利用しよう。Release ページへ行って、.unitypackage をダウンロードしよう。ここでは「UniVRM-0.51.0_1b36.unitypackage」と「UniVRM-samples-0.51.0_1b36.unitypackage」の2つ(※バージョンは掲載時点なので、置き換えて下さい)をダウンロードして欲しい。これはライブラリ本体とその利用サンプルだが、-samples の方に GLB エクスポートなどの機能も含まれているので、どちらも必要になる。インポートする順は本体→サンプル(-samples)の順の方が良いだろう(逆だとエラーが出る)。

UniVRM (Release)

 Unity 自体が初めての人は「Unity Hub」をダウンロードして、「インストール」から最新のバージョンをダウンロードすると良い。

Unity ダウンロード



 メニューに「VRM」が追加されていれば完了だ。実際にこれだけで、例えばシーンに1個 Cube を置いて、それをヒエラルキーで選択したまま、メニューから Export すれば glb ファイルが作れる。



 まぁ、今回は背景を作ってみるというテーマなので、アセットストアから無料素材を落として、それを glb にすることを練習にやってみよう。試してみたら、少しばかり注意すべき点もあったので、その辺りも書いておこう。



■アセットストアから素材のインポート

 今回は「Grass Road Race」という無料素材をアセットストアからダウンロードして使ってみよう。

 使う素材は何でも良いが、注意点としては Terrain の地形より、なるべく単体のメッシュで構成された素材の方が良いだろう。理由は編集しやすい事もあるが、Terrain だとそのままエクスポートできず、変換が必要となるからだ。またその変換されたメッシュはポリゴン数などが大きくなってしまうため(ツールによっては間引きできるが、感じが変わってしまう)、アプリなどに利用すると重くなってしまう傾向がある。その辺りの工夫も後述しておこう。


 Unity をあまり使ったことない人に説明しておくと、アセットストアとは Unity で直接使える素材(3Dモデルだけでなく、アニメーションやスクリプトなども含む)を購入できる専用ストアで、また自分で販売することもできる(私も Android のプラグインを無料で配布している)。無料のものも結構あるので(検索で $0 にすれば無料だけを検索できる)、色々試してみるのにも良いだろう(Unity 上からは Ctrl + 9 で検索すると良い)。


 インポートしたら準備は完了だ。次は素材を GLB 用に編集してみよう。



■GLB 用に素材を編集する(島を作る)

 まずはインポートした「GrassRoadRace」フォルダ以下のサンプルシーン「Scene_GrassRoadRace」を開いてみよう。元のシーンを残しておきたいなら、Ctrl + D で複製を作って編集しても良い。



 地形は自由に作っても良いが、私が実際にやった方法と、ちょっとした注意点を書いておこう。

 先に概略を挙げておくと、使うシェーダとアニメーション、メッシュの結合などである。特にシェーダに関しては公式にもあるように『Standard もしくは Unlit/Color, Unlit/Texture, Unlit/Transparent, Unlit/Transparent Coutout, UniGLTF/UniUnlit』となっている(掲載時点:UniVRM0.51.0)。ここでは基本的に Standard シェーダのみを使う

 完成形は1つの孤島を作ってみた。大きさは 10x10 m くらいだろうか。Unity の Scene ビューでは薄いグリッド線が見えると思うが、これが 1m となっている(拡大してるとき)。わかりずらければ Cube が 1x1x1 m なので1つ置いて基準にするのもいいだろう。最終的に VRM Live Viewer で使うなら、Capsule(高さ[Height]を 1.5m [身長]にしておく)を人型として目安にするのも良い。




 島を構成するオブジェクトは「Ground02」「Ground03」「Ground04」の3つだ。検索すればいくつか出てくるが、1つずつ取り出して、空の GameObject(ここでは「island_base」としている)に入れよう。Position は一旦 (0, 0, 0) にしてから、ぐるりと周りからみて穴が開かないように、Position を配置して欲しい。参考に値を書いておくと、Ground02: (0, 0, 0), Ground03: (0, 0, -3.809998), Ground04: (0, 0, 3.809998) となっている。調整中は邪魔なので Track は非表示にした方が良いだろう。




 また今回は島にフェンスを付けないので、ここで削除してしまおう。Unity 2018 以降を使ってるなら、各素材を選択して、「Unpack Prefab」(Unity2017 以前は「Break Prefab」だった気がする)した後で、「Fence」を削除しよう。




 次にシェーダの設定を変更しておこう。初期の状態では「Mobile/Diffuse」になってると思うが、これを全て「Standard」にしておいて欲しい。すると見た目が暗くなると思うが、「Albedo」を完全な白に、「Smoothness」を0にすれば、少し明るくなる。使えるシェーダについては公式に書いてあるので、参照して欲しい。





 最後に島全体の大きさと位置を決めておこう。親オブジェクト(island_base)をヒエラルキーで選択して、Transform を適当に調整すれば良い。




 木の配置も基本的には同じやり方だ。非表示にしている Track の中から「GroundIsland」を取り出し(Scale が (1, 1, 1) のものを選ぶと良い)、空のオブジェクト(tree_base としている)の中に入れよう。一旦全ての Position を (0, 0, 0) にした方が良い。



 島のときと同じように、「Unpack Prefab」をした後で、「Grass」と「PalmTree」を選択し、シェーダを設定して欲しい。シェーダはマテリアルごとの設定となるので、面倒ならマテリアルの方をプロジェクトビューで全て設定しても良いだろう。




 シェーダを設定したら、木を複製(ヒエラルキー上で Ctrl + D)して3つにしよう。Position は適当で良いが、参考値としては、(0, -1.108, -4), (3.4, -1.108, -4), (-3.4, -1.108, -4) となっている。



 3つ適当に並べたら、親オブジェクトである「tree_base」を複製(Ctrl + D)して、180度回転しよう。これで簡単に6つになった。少しだけ Z の値を調整している。値は適当で良い。




 後は両サイドに1つずつ木を足しておこう。空のオブジェクト(tree_base_side としている)を作って、tree_base, tree_base (1) の中の GroundIsland (2) をそれぞれ複製して(Ctrl + D)、tree_base_side 内に移動し、位置と回転を調整している。値は適当で良い。回転は木の根本にある草が島の内側に向くように調整すると良いだろう(裏からだと見えなくなるため)。




 最後にこれら全部の素材を1つにまとめる空オブジェクトを作り、その中に移動しよう。Z を動かしたのは原点から見て中心あたりにしたかったからだ。他のアプリなどで読み込むときのためにも、なるべく中心がワールド座標の原点となるように配置しておくと良い

 これで一応、島は完成だ。






■メッシュを結合する

 この操作は必須というわけではないのだが、特に今回のような複数の素材を組み合わせて作るものなどは、メッシュを結合をやっておくと良いだろう。その理由はテラシュールさんのブログを見て貰えばわかると思うが、単純に動かない物体などはなるべくまとめてしまう方が、利用時に軽くなるからだ。

Unityのシーン上に配置したモデルを結合する

 ここでは簡単にやり方を書いておこう。記事を読んでいくとソースコードが掲載されているが、github にも公開されているので、こちらから zip で落とすのが楽だろう(「Download ZIP」ボタンを押す)。

MeshCombiner.cs

 「MeshCombiner.cs」をダウンロードしたら、適当にフォルダでも作って、プロジェクトにインポートして欲しい。

 たぶん現在の Unity のバージョンではエラーが出ると思うが、エラーが出たら Console でダブルクリックし、エディタを立ち上げて欲しい。エラーの箇所は古い書き方なだけなので、今の書き方に修正するだけで良い。具体的には以下のように修正する。



●25行目(エラーが出てる行)を以下のように修正する
var mat = mesh.GetComponent<Renderer>().sharedMaterial ;


 修正してエラーが出なくなったら、MeshCombiner を完成した背景モデル(ここでは Island)にアタッチして欲しい。アタッチしたら、生成先となる空のオブジェクトをヒエラルキーで作成し、それを MeshCombiner の Generated Object にドラッグ&ドロップして設定する。



 Generated Object を設定したら、MeshCombiner の 右端にある歯車アイコンを押して、メニューから「Export」しよう。しばらくすると、元オブジェクト(Island)が無効化され、代わりにメッシュが結合されたオブジェクトが生成される。名前は後でわかり易いように変えておくと良い。




 特に見た目が変わってないので、わかりずらいかも知れないが、プロジェクトビューで見てみると、結合された新しいメッシュが生成されていることがわかる(物によっては少しテクスチャが元と違う感じになることもある。マテリアルごとにまとめられるらしい)。



 ここまででも、出来上がった背景オブジェクトをヒエラルキーで選択して、メニューから「VRM>UniGLTF-1.28>Export」すれば glb
出力できる。試しに VRM Live Viewer で読み込んで見ても良いだろう(ウィンドウに出力ファイルをドロップすれば良い)。





■海を作る

 まずは、海(Wave)を非表示にした Track の中から取り出そう。そしたら、一旦 Position を (0, 0, 0) にし、ヒエラルキーで Wave を選択した状態で「Unpack Prefab」をし、シェーダを Standard にして値を設定する。これらは今までと同じやり方だ。




 海を配置すると、原点から Z 方向に伸びていることがわかる。今後アニメーションで利用するためにも、ここでちょっと工夫しておこう。島を作るときに使った MeshCombiner を Wave にアタッチし、Position Z を -188 にして欲しい。また、MeshCombiner の出力先となる空のオブジェクト(Sea としている)を作り、設定する。そしたら歯車アイコンから Export してメッシュ結合しよう。




 実はここで MeshCombiner を使ったのはメッシュの基準を原点にしたかっただけだったりする(笑)。なので、自分で Plane を作ってマテリアルを貼り付けるのもアリだと思う。また、スケールを1にする目的もある。こういう使い方もあると覚えておくと、素材作りに役に立つかも知れない。

 あと、結合すると static(静的オブジェクト=動かないオブジェクト)となるので、チェックを外して欲しい。外そうとするとダイアログが出るが、これは「子要素も外すか?」という質問なので、「Yes」の方を選択して欲しい。これは後でアニメーションさせたいので、そのための準備だ




 最後に全体を1つにまとめる空オブジェクト(root としている)を作って、島(Island)と海(Sea)をその中に入れよう。また、少し海の Y 座標を -1.5 下げて、島が浮いている感じを出してみる。




 これで背景モデルの全体像は完成だ(カメラは少し近づけている)。もちろん、ヒエラルキーで root を選択したまま、メニューから Export すれば glb ファイルが作れる。





■アニメーションをする

 ここまでで、GLB が一応できたと思うが、ちょっと工夫して海の水の流れっぽいアニメーションを作ってみよう。と言っても、ここでやる方法はあくまで GLB 仕様のための方法で、アニメーションの例としては良い使い方というわけではない(大抵はテクスチャの UV 座標を移動する方が多いと思うが、スクリプトが必要なため)。しかし基本は同じなので、実際には自由にアニメーションを付けてみると良いだろう。

 ここで GLB の仕様を確認してみると『一番親のオブジェクトに付けてください。回転はQuaternionのキーフレームを打ってください。移動・回転・拡縮に対応しています。BlendShapeは未対応』とあるので、この場合、アニメーションは「root」にアタッチすれば良いことがわかる。

 まずはヒエラルキーの「root」を選択し、Ctrl + 6 からアニメーションビューを表示しよう。後述の「Create」でファイルが作成され、必要な Animator が自動でアタッチされる。




 アニメーションの使い方・作り方などの詳細は公式のマニュアルを読んで欲しいが、ここでは概要だけを簡単に書いておこう。あくまでも大雑把にそれっぽく作る例なので、クオリティ云々は度外視して欲しい(笑)。

アニメーション
新しいアニメーションクリップの作成

 アニメーションビューが開いたら、まずは「Create」ボタンでアニメーションクリップのファイルを作ろう(sea_move としている)。ファイル名は適当で良い。



 ビューでは「Add Property」を押し、海の Transform:「Sea>Transform>Position」を開き、(+)ボタンを押す。



 初期状態では1秒後にキーフレームが打ってあるので、それを削除しておく。



 海の移動では Z 方向だけを使うので、最初のフレーム(0)には Z:100 を、フレーム:18000(5分後)には Z:-100 を、フレーム:36000(10分後)には Z:100 にキーフレームを打っておく。一番簡単な方法は、ビューのプレイボタンの右にあるテキストボックスにフレーム数を入れ、そのすぐ左下にあるキーフレーム追加ボタン(菱形に+があるアイコン)を押して、プロパティの Position.z に直接値を入力することだ。

 ちなみにこれは、海が前後にゆっくり5分かけて移動することを意味する。



 また、プレビューで再生してみるとわかるが、初期状態ではイージングが入っているので、だんだん早く移動するようになっている。このままでも別に構わないが、動きが確認しずらいので、とりあえずビュー下にある「Curves」を押して、動きを直線的にしてみよう。



 編集方法は各ポイントを右クリックし、すべての Tangent を「Linear」にしておく。まぁ、往復する瞬間は急激なターンとなるが、その辺が気に入らなければ、カーブを付けても良いだろう(※だが、GLB では効いてない気がする)。



 最後に、作ったアニメーションクリップ(ここでは sea_move)をプロジェクトビューで選択し、「Loop Time」のチェックをオンにし、アニメーションをループ再生にしておこう。



 試しにエディタで再生してみるのも良いだろう。ただ、デモのカメラをそのまま使ってるなら、「Camera Move」はオフにし、カメラの Transform を島の近くに移動した方が良いだろう。上手く行ってれば、海が流れるように見えるハズだ(ただ移動してるだけだが(笑))。





■GLB ファイルを出力する

 ここまでで本当に完成だ。後は冒頭にも書いたように、ファイルをエクスポートするだけだ。本当にお疲れさま(笑)。

※他者の素材を利用した場合は、あくまで学習用途に限定しておき、配布などはしない方が良いでしょう。



 VRM Live Viewer で見てみるにはウィンドウにドロップするのが簡単だろう。あとは色々工夫して素材作りを楽しむのも良いと思う。Unity2018 以降を使うなら、ProBuilder で1から作っても良いかも。観た人があっと驚くようなシーンを作ってみたいね(笑)。

ProBuilderでモデリング入門







(関連記事)
【Unity】VRM(VRoid)をライブステージで踊らせるアプリを作ってみた
【Unity】VRoid(VRM)をインポートして動かす
【Unity】【C#】Android で VRM(VRoid)を動的に読み込む
【Unity】AssetStore版 FantomPlugin のセットアップ
【Unity】Androidのトーストやダイアログ、通知、音声認識、ハード音量操作など基本的な機能を使えるプラグインを作ってみた


スポンサーサイト



category: Unity

thread: ゲーム開発

janre: コンピュータ

tag: Unityオープンソースライブラリ  VRM  VRoid  VRMLiveViewer 
tb: 0   cm: --

【Unity】Unity2019 の StandardShader の処理が少し変わったらしいよ  


 ちょっと試しに Unity2019 にプロジェクトをアップグレードする実験をしてみたら、何か半透明なゴーストが現れた(笑)。


 そしたら VRoid 開発のしげぽんさんから有益な情報を頂いた。


 いずれ何ら対応しなくてはならないので、備忘録として残しておこう。情報共有しておけば、同じ問題にぶつかった人にも役に立つしね。

 Unity 本体や関連ライブラリのバージョンアップで色々な問題が出るのは、もう慣れっこだが(笑)、初期の頃は情報が少ないので、良い解決法が見つからないこともあるんだよね。けれど多くの人の目に入れば、色々な解決法も提示されやすくなる。

 Unity2019 には ShaderGraph や LWRP も導入されたし、今後こういった表現系の仕様はより複雑になりそう。私はこの辺りはあまり詳しくないので、少しは勉強して置かなければな…。有用な情報があったら教えてくれると嬉しい(笑)。[→ UniVRM 0.52以降では修正されました]






(関連記事)
【Unity】Unity2018.3.2 にアップグレードすると見た目がおかしくなることがある
【Unity】Android アプリでパーミッション(権限)要求をする
【Unity】IncrementalCompiler でのエラー:Unloading broken assembly Packages/com.unity.incrementalcompiler/Editor/Plugins/Unity.PureCSharpTests.dll, this assembly can cause crashes in the runtime
【Unity】Unity2018 でビルドエラー「CommandInvokationFailure: Gradle build failed.」が出る


category: Unity

thread: ゲーム開発

janre: コンピュータ

tag: Unityトラブルシューティング  VRM  VRoid 
tb: 0   cm: --

【Unity】Unity2018.3.2 にアップグレードすると見た目がおかしくなることがある  


 原因は不明なのだが、Unity2018.3.1 以前のプロジェクトを Unity2018.3.2 にアップグレードしたら、見た目がガタガタになった…。えっ?何これ…?


●髪など揺れものがガタガタになってる…

(※) Unity 2018.3.2f1 / Windows10(x64) で確認

 一応 Git で管理してたので、以前のバージョンに戻って調べてみたら、どうやら Quarity Settings(Edit>Project Settings...>Quarity)のデフォルトが(緑色のチェックマーク)、なぜか全て「Very Low」になっていた…。


(左) Unity2018.3.1 のデフォルト / (右) Unity2018.3.2 へのアップグレード変換失敗?



 とりあえず、デフォルトを以前の状態に戻して(手動でやるなら、下の逆三角アイコンを押して、各プラットフォームの Quarity を選択する)、ビルドしてみたら、元に戻った。


●髪がサラサラになった


 アップグレード変換失敗を失敗したのか、何らかでデータが飛んでしまったのかわからないが、設定を戻せば直るようだ。

 ちなみに、新規プロジェクトでは、以前と同じデフォルト設定だった。他のプロジェクトでアップグレードしてみたけど、同じように「Very Low」になってしまうものがあった。PC は起動時にクオリティ選べるが(ダイアログのプルダウンもデフォで「Very Low」になる)、スマホではスペックにより自動となるので、自分で選べないので困る。う~ん、これは Unity2018.3.2 特有のバグっぽいな…。





(関連記事)
【Android】【Java】パーミッションの付与(許可)のチェックと要求をする
【Unity】Androidのトーストやダイアログ、通知、音声認識、ハード音量操作など基本的な機能を使えるプラグインを作ってみた
【Unity】AssetStore版 FantomPlugin のセットアップ
【Unity】Unity2018 でビルドエラー「CommandInvokationFailure: Gradle build failed.」が出る
【Unity】【C#】モバイルビルド中の警告:Game scripts or other custom code contains OnMouse_ event handlers.~ を消す


category: Unity

thread: ゲーム開発

janre: コンピュータ

tag: Unityトラブルシューティング  VRM  VRoid 
tb: 0   cm: --

【Unity】【C#】Android で VRM(VRoid)を動的に読み込む  


 VRM Live Viewer にも利用しているが、元々は「プラグインを使って VRM を Android で読み込めるか?」という実験をしてみたら、スンナリと行けてしまったので次々とアイデアが浮かび、VRM Live Viewer をリリースするまでに至ってしまったという…(タイムスタンプを見ると、試しにライブステージ導入してから、アプリリリースまで4日しかかかってない←夢中になるといつの間にかアプリを完成させてしまうことも多い(笑))。


 まぁせっかくなので、VRMVRoid を Android でも読み込み、利用する方法を書いておこう。ちなみに VRM は VRChat やバーチャルキャストで使われるアバターフォーマットではあるが、リアルタイムで読み込むことができるので、あらかじめモデルをアプリに入れてビルドする必要もなく、読み込みもそれほど時間はかからないので、応用範囲は広いと思う。

 私は Unity4 の時代から MMD を Unity で動かしたり、一般公開されているモデルを実験で使ってたりしてたが、Unity ではいつもキャラのバリエーションが少ないな~と感じていたので、VRM で動的に読み込めるのは画期的だとさえ思う。例えば RPG でもアクションでも、好きなキャラで遊べるゲームとかも作れそうだしね(もちろん、大きさやコライダの判定などの問題もあるが、あくまで可能性として(笑))。アイデアは常に新しい発想から生まれるので、既成概念に捕らわれずに色々やってみると良いと思う。それがいつか新たな作品に繋がる。

 今回はあくまで Android で VRMVRoid を読み込む方法だけだが(どちらも "~.vrm" で扱うとして)、私が試したところ、一度 Unity 内に読み込んでしまえば、プラットフォームに関係なく扱えると思うので(見た目はシェーダなどのせいで多少変わることもあるが)、ひとつの方法として覚えておけば色々活用できるだろう。ちなみに VRM Live Viewer は Android版と Windows版を出しているが、ファイル読み込みやダイアログなどプラットフォーム固有のもの以外は全て同じだ。実際にシーン1つだけでビルドしている。つまり複数のプラットフォーム対応も簡単にできることがわかる。


(※) Unity 5.6.3p1 - 2018.2.1f1 / UniVRM 0.40 - 0.43 / VRoid Studio 0.1.1 - 0.2.8 / Windows10(x64) / Galaxy S7 Edge (Android 7.0) で確認



■UniVRM をインポートする

 Unity で VRM を読み込むには UniVRM というオープンソースが必要となる。ライセンスは「MIT License」となるので、その辺りは各自で確認して欲しい。ちなみにライセンス形態にも色々あるが、MIT License は比較的緩いライセンスだ。ついでに参考資料も載せておこう。

(参考)
GPL, LGPL, BSD などのOSSライセンスの違いと注意点まとめ
知らないと損をする6つのライセンスまとめ



 なお、新規プロジェクトで Android プラットフォームでビルドして試すなら、パッケージをインポートする前に「File>Build Settings...」であらかじめ「Switch Platform」で Android プラットフォームに切り替えておいた方が良いかも知れない。UniVRM に内包されているシェーダ(MToon 等)を再コンパイルしたりするのに結構時間がかかる(笑)。


 プロジェクトの準備ができたら、まずは UniVRM をダウンロードしよう。今回はアプリに動的に VRM を読み込むので UniVRM の本体「UniVRM-x.xx_xxx.unitypackage」(xxx はバージョンなど)の他に「UniVRM-RuntimeLoaderSample-x.xx_xx.unitypackage」のインポートも必要になる。本体「UniVRM-x.xx_xxx.unitypackage」を先にインポートしてから、ランタイムローダ「UniVRM-RuntimeLoaderSample-x.xx_xx.unitypackage」をインポートしよう。とりあえず VRM の動的読み込みに必要なものはこれだけで良い。






●API のアップデートが促されたら、「Go Ahead!」する




■VRM を動的に読み込んでみる

 UniVRM のインポートが終わったら、次にプロジェクトビューで「Assets/VRM.Samples/Scenes」で、シーン「VRMViewer」を開いてみよう。ビューワ自体は PC 用なのだが、これを改造することにより、Android 等他のプラットフォームの読み込み方法もわかると思う。



 ちなみに「VRM Live Viewer」はこのシーンを元ベースとしている(見た目もたいして変わってないのでわかると思うが(笑))。他の VRM 利用アプリを見てみると、たぶん同じようにこれを改造してるものが多い気がする。エクスポートできるアプリを作るなら、シーン「VRMRuntimeExporterSample」あたりを見てみると良いと思う。せっかくのオープンソースなのだから、遠慮なく使わせて頂こう(笑)。


 このシーンでは左上部にある「Open」ボタンを押すことにより、VRM を動的に読み込んで、シーン上にモデル(アバター)をロードすることができる。ただ、Windows 上なら 「PC, Mac & Linux Standalone」プラットフォームになってればそのまま使えるが、Android では無視される。この辺りから少し改造していこう。


1.スクリプトとしてはヒエラルキーで「Canvas」をクリックして、インスペクタで表示される「Viewer UI」にそのコードが書かれている。これを編集しよう。グレーアウトしてる「Script>ViewerUI」をダブルクリックすれば、Visual Studio で開かれる(シングルクリックなら、プロジェクトビューで移動できる)。



2.「ViewerUI.cs」を開いたら、検索で「OnOpenClicked」を探してみよう。これが前述した「Open」ボタンのイベントハンドラとなっている。ここのコードを見てみるとプリプロセッサディレクティブ(#if~文)でプラットフォームが分けられている。とりあえず Unity エディタ上でもテストできるようにディレクティブ(UNITY_EDITOR_WIN)を付け加えておこう。

void OnOpenClicked()
{
#if UNITY_STANDALONE_WIN || UNITY_EDITOR_WIN
var path = FileDialogForWindows.FileDialog("open VRM", "vrm", "glb", "bvh");
#else
var path = Application.dataPath + "/default.vrm";
#endif
・・・(略)・・・
}

 ちなみに「UNITY_EDITOR_WIN」とは「Unityエディタ上でかつ Windows である場合の条件」である。プラットフォーム依存コンパイルを上手く使えば、複数のプラットフォームを分別することも可能だ。まぁしかし、コードは見づらくなるので、機能まるごとみたいな場合は、クラスごとに用意するという手もある。今回は一部を改造して使うので、この方法でやっていこう。

プラットフォーム依存コンパイル


3.「UNITY_EDITOR_WIN」を入れたら、グレーアウトしていた文字が見えるようになったと思う。しかし「FileDialogForWindows.FileDialog」の方にエラーが出たかも知れない。まぁ、これも同じプラットフォーム依存なので、「FileDialogForWindows」部分にカーソルを合わせ、「F12」を押せば、クラスがまるごとグレーアウトしてるのがわかる。手順2と同じように「UNITY_EDITOR_WIN」を #if~文に追加しよう。

#if UNITY_STANDALONE_WIN || UNITY_EDITOR_WIN
using System;
・・・(略)・・・
#endif

namespace VRM
{
public static class FileDialogForWindows
{
#if UNITY_STANDALONE_WIN || UNITY_EDITOR_WIN
#region GetOpenFileName
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]
public class OpenFileName
{
・・・(略)・・・
}
・・・(略)・・・
#endif
}
}


 これでコンパイルが通るようになったと思う。一旦、Unityエディタに戻ってプレイしてみよう。「Open」ボタンを押して適当な「~.vrm」を読み込んで見ると良い。VRMニコニ立体で多く配布されているので、いくつかダウンロードしておくと良いだろう。「ニコニ立体ちゃん」ことアリシア・ソリッドはとても軽いのでテストするにはもってこいだ。自分で作った VRoid でも可能だが、髪の毛などメッシュが多いものほど、生成に時間がかかるようだ(なので「VRM Live Viewer」では非同期読み込みの方を利用している。非同期読み込みを使うには「.NET4.x」にする必要があるので、ここでは割愛)。

ニコニ立体ちゃん (VRM)





■VRM の動的に読み込みを Android に対応させる

 VRM を動的に読み込みに成功したなら、後は Android に対応させるだけだ。ファイル選択などはプラットフォームに依存するので、先に出てきた「FileDialogForWindows」のようなものが必要になるが、Unity の標準機能には無いので、ここではプラグインを使うことにする(自分で作ったものがあれば、それでも良い)。



 ここで紹介するプラグインは元々私がブログで公開していたものだが、様々なアプリで利用して貰えてるようなのでアセットストアにも提出したというものだ(既に GooglePlay 等で公開されてるアプリなどにも利用されている。「〇〇というアプリを作ってるんですが、使わせて貰って良いですか?」と聞かれるようになったので、気兼ねなしに使えるようにアセットストアにも出したという経緯もある)。AssetStore版GoogleDrive版に機能的な違いはないので(AssetStore版 はアセットストアの規約に合わせただけ)、どちらを利用しても構わない(※ここでは AssetStore版を例にしている)。



 セットアップは以前の記事にあるので、そちらを参照して欲しい。AssetStore版GoogleDrive版では一部ファイル名やパス、素材が違うくらいで、内容的には同じだ。注意点は「Plugins」フォルダを「Assets」直下に移動し、「Plugins/Android」フォルダにあるサンプルのマニフェストファイル(AndroidManifest.xml)を用意しておくということだ(テストだけなら、"AndroidManifest_demo.xml"[AssetStore版]、または"AndroidManifest_test.xml"[GoogleDrive版]を複製してリネームすれば良い)。

AssetStore版のセットアップ
GoogleDrive版のセットアップ


1.プラグインのインポートとセットアップの準備が済んだら、プロジェクトビューの検索で「StorageOpenFileController」のプレファブを見つけよう。見つけたら、これをヒエラルキーに置き、後述のコードを書くことにより、Android でもファイルの情報を受け取れるようになる。本来なら Android でストレージの読み取りなどにはパーミッションなども必要になるが、前述のデモのマニフェスト("AndroidManifest_demo.xml"など)を使ってる分には既に含まれている(「READ_EXTERNAL_STORAGE」または「WRITE_EXTERNAL_STORAGE」が必要。デモにはそれ以外の権限も含まれているが、通常は不要な権限は削除した方が良い→ユーザーにインストを拒否られる確率が高くなるため)。

※Unity2018 以降、Android 8.0 以上を対象にしている場合は、「File>Build Settings...>Player Settings...>Other Settings>Configuration>Write Permission」を「Exernal (SD Card)」にするか、「Android アプリでパーミッション(権限)要求をする」でパーミッション要求をした方が良いかも知れない(Unity2017 のときと違い、自動で出なくなった(?))。

(パーミッション)
Android アプリでパーミッション(権限)要求をする
READ_EXTERNAL_STORAGE(ファイル読み取り権限)
WRITE_EXTERNAL_STORAGE(ファイル読み書き権限)



2.次に「StorageOpenFileController」で取得したファイル名を受け取るハンドラを、元のコード「ViewerUI.cs」の「OnOpenClicked」に追加しよう。書き方は前述のコードに追加する形となる。Android の場合ディレクティブは「UNITY_ANDROID」となるので、それを追加し、「StorageOpenFileController」でストレージを開くコードを Android プラットフォーム用に書いておこう。「using FantomLib;」を入れておくことを忘れずに。

プラットフォーム依存コンパイル

using FantomLib;

・・・(略)・・・

void OnOpenClicked()
{
#if UNITY_STANDALONE_WIN || UNITY_EDITOR_WIN
var path = FileDialogForWindows.FileDialog("open VRM", "vrm", "glb", "bvh");
#elif UNITY_ANDROID
var path = "";
StorageOpenFileController storageOpenFileController = FindObjectOfType<StorageOpenFileController>(); //ここはインスペクタで登録できるようにしても良い
storageOpenFileController.Show(); //実機ではエクスプローラのようなもので、ファイル選択ができるようになる
#else
var path = Application.dataPath + "/default.vrm";
#endif
if (string.IsNullOrEmpty(path))
{
return;
}
・・・(略)・・・
}

※この例はやっつけ的なコードなので、「StorageOpenFileController」をインスペクタで登録できるようにしたり、任意にまとめたりして使って下さい(笑)。


3.ランタイム時では「StorageOpenFileController」は閉じられてから、コールバックで結果(選択されたファイルパス名)が返ってくるので、「UNITY_ANDROID」ディレクティブ内ではパスを空(path = "")にしていることに注意して欲しい。これはすぐ下にある「string.IsNullOrEmpty(path)」で一旦終了することを意味する。

 なので、取得したパスを受け取るハンドラを作成する必要がある。ここでは簡略のため、元の「OnOpenClicked()」内のコードを一部まるっとコピーして、もう1つ「OnStorageOpenFile()」というメソッドを定義した(メソッド名は任意)。

public void OnStorageOpenFile(string path)
{
if (string.IsNullOrEmpty(path))
{
return;
}

var ext = Path.GetExtension(path).ToLower();
switch (ext)
{
case ".gltf":
case ".glb":
case ".vrm":
LoadModel(path);
break;

case ".bvh":
LoadMotion(path);
break;
}
}

※UniVRM v0.40 以前は拡張子分岐は無いが、同じように「LoadModel(path)」を呼べば良い。

 実際には「StorageOpenFileController」をインスペクタで登録できるようにしたり、拡張子による分岐などは重複してるので「OnOpenClicked() → OnStorageOpenFile(path)」へ行くように書き換えても良いだろう。その辺りはお任せする(笑)。とりあえずはコード自体はこれで良い。


4.後はヒエラルキーに戻って「StorageOpenFileController」のコールバック「OnResult」に先程の「OnStorageOpenFile(String)」に登録しよう。これで一応完成である。ただし、実機でしか確認できないので、Android ビルドして動作確認してみよう。



5.「File>Build Settings...」を開いてシーン「VRMViewer」を追加してビルドしよう。ビルドに関してはいくつか注意点があるので、以下を参照して欲しい。

「要求 API Level」の設定
シーンを追加してビルドする
Unity 2018.1.0~1.6 での Gradle ビルドにおいて、「Cannot read packageName from~(パス)\AndroidManifest.xml」と出る。




 ここまでできれば、例えば以前の「VRoid(VRM)を動かす」のようにして、ゲームに使うことも可能だろう。1つ1つの技術は結構手間のかかるものだと思うが、プラグインも含め、全て無料でできるので、これを使わない手はない(笑)。今までにない新たな利用法を考えてみるのも良いだろう。

●実機(Android)で「ニコニ立体ちゃん (VRM)」を読み込んでみた所

ニコニ立体ちゃん (VRM)
(c) DWANGO Co.,Ltd. ニコニ立体ちゃんライセンス


 今回はただ VRM を読み込んで動的にアバターを召喚(笑)しただけだが、実際にスマートフォンで利用するには画面解像度・回転の対応やピンチなど、使い勝手を良くした方が良いだろう。プラグインにはそういったスマホらしい操作(ピンチ・スワイプ・ロングタップ等)の例も入っている。VRM Live Viewer の Android 版はまさにその使用例なので、動作確認にインストして動かしてみるのも良いだろう(またはプラグインのデモもQRコードからインストできるようにしてあるので参考に)。











(関連記事)
【Unity】VRM(VRoid)をライブステージで踊らせるアプリを作ってみた
【Unity】VRoid(VRM)をインポートして動かす
【Unity】Unity2018.3.2 にアップグレードすると見た目がおかしくなることがある
【Unity】AssetStore版 FantomPlugin のセットアップ
【Unity】Androidのトーストやダイアログ、通知、音声認識、ハード音量操作など基本的な機能を使えるプラグインを作ってみた


category: Unity

thread: ゲーム開発

janre: コンピュータ

tag: VRM  VRoid  Unityオープンソースライブラリ  Unityプラグイン  C# 
tb: 0   cm: --

【Unity】VRM(VRoid)をライブステージで踊らせるアプリを作ってみた  


 VRM には Unity で動的にモデルをインポートできる「UniVRM」というオープンソースが公開されているので、そのサンプルビューワと「ユニティちゃんライブステージ!」プロジェクト(オープンソース)を組み合わせて、VRMVRoid)を動的に読み込んでダンスさせるアプリを作ってみた。一応、音楽も BVHモーションファイルも動的に読み込めるので、やろうと思えば自由な曲でダンスもできるかも知れない。

 アプリは当初、プラグイン利用の実験も兼ねて、Android で作っていたのだが、よく考えたら VRMVRoid)自体の利用が PC 中心(主に VRChat や バーチャルキャスト)であろうと考えて、急遽 PC でも見れるように Windows版 もビルドしてみた(Mac は持ってないので、iPhone版も作れない。スマン(笑))。

 現在ベータ版として、色々な機能を試験的に導入中という感じだが、「VRoid Hub」や「ニコニ立体」「BOOTH」などでダウンロードした VRM または、自分で作った VRoid / VRoid Mobile などを踊らせてみるだけなら十分可能なので、色々試して遊んで貰えると嬉しい(※キャプチャや動画などご自由にどうぞ。また、ハッシュタグ「#VRMLiveViewer」はどなたか付けてくれたので、私も便乗させて貰ってます。感謝!)。

VRM Live Viewer ver.0.87β(ベータ版)
× VRoid Hub    



>>Windows 版(x64) をダウンロード
(Google Drive を利用。画面右上にあるダウンロードアイコン:を押す)





(Google Drive を利用)


Android 4.4以上 (※5.0以上推奨)
※「提供元不明アプリのインストール」許可が必要です。



VRM をリアルタイムに読み込ませて観ることができる
>>アクシアVRM(縞パンver.)は、Google Drive からもDLできます。


 簡単な操作説明やヘルプはアプリにも入れてあるが(ボタンを押すと出る)、既知の不具合なども一緒に、マニュアル代わりにここにも載せておこう。今後のオープンソースプロジェクトのバージョンアップやバグフィックスなどによっても修正は入るとは思うが、現在までの状態を確認するのにも良いかも知れない。

 とは言え、まずは単純に楽しんで貰えれば良いと思う。VRM の配布は「VRoid Hub」や「ニコニ立体」に多くアップロードされているが、有名キャラやオリジナルキャラは Web上でも公開されているので、そういったものも掲載しておいた

■アプリのダウンロード

■操作説明
 ●基本操作(キー・マウス[PC] / タッチ[Android])
 ●キーボードでのカメラの操作(Windows 版のみ)
 ●ジョイスティックでのカメラ操作(Windows 版のみ)

■サイドパネル
 ●ファイルの読み込み
 ●モーション
 ●ブレンドシェイプ
 ●背景
 ●音楽
 ●その他
 ●モデル情報

■ファイル関連
 ●各種ファイルを開く (Open File)
 ●VRM のフォルダーブラウズ(VRM Folder Browser)
 ●VRM のファイル移動(VRM File Move)
 ●シーンの読み込み/保存(Scene Load/Save)
 ●シーンの削除(Scene Delete)

■各種設定パネル
 ●曲リスト(Music Select)
 ●曲リストから削除(Remove Songs)
 ●音楽の遅延再生(Music Start Timing)
 ●マイク感度の設定 (Mic Sensitive)
 ●エフェクト切り替え (Effect Select)
 ●BVHモーションの再生設定 (BVH Play Setting)
 ●ユーザーオブジェクトの配置 (User Object Transform)
 ●床のサイズ変更 (User Object Size)
 ●360度画像の設定 (360deg Image Setting)
 ●カメラの設定 (Camera Setting)
 ●オプション設定等

■背景を変える
 ●背景の3Dモデルを読み込んでみる
 ●360度(全天球)画像読み込んでみる
 ●エフェクト(パーティクル)を入れてみる

■GLBで背景モデルを自作する(※別ページ)
■試験的に実装している機能
■補足説明

■バージョンによる差異について
 ●過去バージョンのダウンロード

■既知の問題(不具合など)

■VRoid Hub について(連携方法)
 ●VRoid Mobile で作ったキャラを使う

■素材の入手方法
 ●VRM(3Dアバター)の入手方法
 ●GLB(3Dモデル)の入手方法
 ●GLTF(3Dモデル)の入手方法
 ●360度(全天球)画像の入手方法
 ●BVH(モーションファイル)の入手方法

■使用できる BVH を作る(変換する)
■利用したオープンソースプロジェクト・素材など

(※) Unity 2018 / UniVRM 0.49 / VRoid SDK 0.0.17 / VRoid Studio 0.1.1 - 0.6.4 / VRoid Mobile 1.3 / Windows10(x64) / Galaxy S7 Edge (Android 7.0/8.0) で確認
(※) キャプチャーはリリース当時のバージョンのものなので、現在のバージョンとは異なってる場合があります。



■操作説明

●基本操作(キー・マウス[PC] / タッチ[Android])
(Windows 版)
[ドラッグ] カメラ回転
[ホイール] カメラ遠近
[中ボタンでドラッグ] カメラの視点移動
[画面端でスワイプ, Tabキー] パネルの開閉
[Esc] アプリ終了
>>PC版の場合、キーボードやジョイスティックでの操作もできます。

(Android 版)
[ドラッグ] カメラ回転
[ピンチ] カメラ遠近
[指3本でドラッグ] カメラの視点移動 (※先に中指と薬指を画面に置き、人指し指でドラッグすると細かい操作がしやすい)
[画面端でスワイプ] パネルの開閉
[バックキーを2回押す] アプリ終了

●キーボードでのカメラの操作(Windows 版のみ)
[←][→][↑][↓] カメラ視点を動かす
[Ctrl]+[←][→][↑][↓] カメラ視点を中心に旋回
[+][-](テンキー) カメラのズームイン・アウト

[Z][C][S][X] カメラ視点を動かす第2キー(※変更・削除される可能性があります)
[Ctrl]+[Z][C][S][X] カメラ視点を中心に旋回第2キー(※変更・削除される可能性があります)
[A][D] カメラのズームイン・アウト第2キー(※変更・削除される可能性があります)

●ジョイスティックでのカメラ操作(Windows 版のみ)
[方向スティック] カメラ視点を動かす
[A]ボタン+[方向スティック] カメラ視点を中心に旋回
[X]ボタン カメラのズームイン
[B]ボタン カメラのズームアウト
[Y]ボタン 音楽の再生/停止(切り替え)(※変更・削除される可能性があります)


[背景]
(Sketchfab)Islands (@pravsha)
(設定ファイル)islands_scene.json(右クリックで「名前を付けてリンク先を保存」)
>>背景の設定方法




■サイドパネル

●ファイルの読み込み [左パネル]

[ファイル読込] VRM(3Dアバター)/GLTF(3Dモデル) /GLB(3Dモデル)/BVH(モーション)/360度(全天球)画像(jpg, png, bmp)/音楽(wav, ogg, mp3[※Androidのみ])/JSON(設定ファイル)をアプリにロードします。
".gltf", ".glb" で読み込まれた3Dデータは背景オブジェクトとして扱われます。

※アプリによっては専用フォルダにダウンロードされることがあります(Chromeなどデフォルトの場合)。仮想フォルダやクラウドストレージでも同じようにそのアプリ専用アクセスになることがあります(※Android の場合「ダウンロード」フォルダが内部・外部ストレージ両方の仮想ダウンロードフォルダとなっているため、ファイルの情報が取得できない→直接フォルダアクセス("/storage/emulated/0/Download"等)した場合は読み込める)。その場合他のアプリからはアクセスできないことがあるので、別のフォルダに移動して読み込んでみて下さい。

VRoid Hub に接続し、直接アバターをロードできます(※連携設定が必要です)。
※スマホで利用する場合は、モデルのサイズが大きい場合もあるので、なるべくWIFIを使って下さい。

各種類ごとにファイルを開きます(PC版 / Android 8.0 以上のみ)。
シーンの読み込み/保存を開きます。
VRM フォルダブラウザ (VRM Folder Browser) を開きます。


●モーション [右パネル]

[BVH] 読み込んだ BVH を再生します。デフォルトではPC版に同梱されている「test.bvh」と同じものが使われます。
BVH(モーション)をアプリにロードします。ただし、「Y-up 右手座標系」(OpenGL系、Maya, Daz3D など)の座標系になります。「Z-up 右手座標系」(3ds Max など)の場合は、見た目がおかしくなります。[>>3Dツールごとの座標系など]
  BVHモーションの再生設定(BVH Play Setting)を開きます。
※処理落ちなどでモーションが遅れた場合は、再度クリックすると再計算されます(Sync Start がオンのとき)。
※[BVH 読込] はに変更されました。
※[Y:180], [Loop], [Speed] は再生設定パネルに置き換えられました。

[CRS] ユニティちゃんライブステージ -Candy Rock Star- のモーションを再生します。プリセット曲(Unite In The Sky)のダンスモーションです。余談ですが「CRS」(Candy Rock Star の略)はユニティちゃんのライブステージでの衣装の名前ですが、「CRS」という略記はプロジェクト名などにも使われているため、関連するものにはよく利用されます。
※処理落ちなどでモーションが遅れた場合は、再度クリックすると再計算されます(Sync Start がオンのとき)。

[T-Pose] Tポーズに固定します。





●ブレンドシェイプ [右パネル]

(リップシンク)
┌ [None / Key] なし / キーボードで口パク操作できます(PC版のみ)。
├ [AIUEO / CRS] "あいうえお"の口パクをします(※プリセット曲が再生されてないとき)。プリセット曲(Unite In The Sky)が再生されているときは曲のリップシンクが再生されます。
├ [Mic LipSync] マイクから音声を認識して口パクします。
└ [Audio LipSync] 再生中の音源(音楽)から音声を認識して口パクします。楽器音なども混ざるので正確さには欠けるのでご了承下さい。マイク入力の調整をすれば、少しだけましになります(笑) [※ストリーミング再生でのリアルタイムな認識のため、毎回必ず同じ認識になるとは限りません]。
マイク感度設定を開きます。
[Auto Blink] 目パチをします。
[Look At Me] 目でカメラを追います(※目のボーンが入ってるモデルのみ。T-Pose だとわかり易い)。




●背景 [右パネル]

(ドロップダウン) 背景を変更します。
[プリセット背景の変更] 何も無い(Plane)、ユニティちゃんステージ(CRS Stage)、浮遊(Floating)が選択できます。これら背景は 3Dモデル(gltf/glb)360度(全天球)画像などをロードすることで内容を入れ替えることもできます。ドロップダウンを切り替えると内容はリセットされます。
[床の変更] 主に透明な床のようなものを変更できます。360度(全天球)画像を読み込んだときなどに良いかも知れません。プリセットの Plane の床と同じものも入っていますが、こちらはサイズの変更ができます(Plane では背景となっていてサイズは固定されてます)。3Dモデル(gltf/glb)とは排他的で、モデルを読み込んだときは「(床なし/3D)」(=床なし、または3Dモデル)に、逆に床を切り替えると、モデルは消去されます(どちらか1方のみ表示可)。
[空の変更] 主に空の画像を変更します。360度(全天球)画像とは排他的で、360度画像を読み込んだときには「(空なし/360)」(=空なし、または360度画像)に、逆に空を切り替えると、360度画像は消去されます(どちらか1方のみ表示可)。
360度(全天球)画像(jpg, png, bmp)、または 3D背景モデル(gltf/glb)を読み込みます。PC版の場合、360度画像は 2:1 比(3840x1920)として扱われます。
3Dモデル(gltf/glb)がロードされているとき、オブジェクトのサイズや回転、位置などが編集できます。
床を使用しているとき、サイズを変更できます(元のサイズが1)。床のサイズは各床ごとに保持されます。
360度画像がロードされてるとき、全天球を回転できます。
エフェクトの切り替えを開きます。



[背景(6角物体)]
(Sketchfab)Texture Practice - Substance Stage (@Javier Da Rosa)
(設定ファイル)texture_practice_-_substance_stage_scene.json(右クリックで「名前を付けてリンク先を保存」)
[背景(円形物体)]
(Sketchfab)Aztec Stone War (@Blender Books)
(設定ファイル)aztec_stone_war_scene.json(右クリックで「名前を付けてリンク先を保存」)
[背景(SF柱物体)]
(Sketchfab)Extra Destination (@Javier Da Rosa)
(設定ファイル)extra_destination_scene.json(右クリックで「名前を付けてリンク先を保存」)
[背景(テレポート物体)]
(Sketchfab)Teleport (@soidev)
(設定ファイル)teleport_scene.json(右クリックで「名前を付けてリンク先を保存」)
[背景(チェス板)]
(Sketchfab)Chess Board (@Anthony Yanez)
(設定ファイル)chess_board_scene.json(右クリックで「名前を付けてリンク先を保存」)
[全天球画像]
(BOOTH)日本列島360 全天球静止画9枚セット (@VoxelKei)
>>背景の設定方法



●音楽 [右パネル]

[Start](= Sync Start) オンになっているとき、音楽再生ボタンを押すとモーションを最初から再生します。
[Stop](= Sync Stop) オンになっているとき、音楽停止ボタンを押すとモーションを停止し、最初のフレームに戻します。音楽なしでモーションを再開したいときは、モーションの[BVH]または[CRS](トグルボタン)をもう一度押すと再開できます(CRSの口パクのみはCRS楽曲再生で再開されます)。
音楽を再生します。
音楽を停止します。
曲リストを開きます。再生する曲・再生方法などを選択できます。
※[曲リストに追加][曲リストから削除][再生モード][遅延再生の時間設定]などは、曲リスト内に移動しました。


●その他 [左パネル or 各パネル]

オプション設定を開きます。パネルの不透明度、マイク感度、ユーザーオブジェクトの配置などの各設定へ移動できます。
「操作説明/ヘルプ」が出ます。
パネルなどを閉じます。
パネルの表示をロックできます。グレー状態のときは通常の状態で、パネル外をクリックするとパネルが閉じられます。青のときはロック状態で、パネル外でカメラを操作できます。

[画面左下のアプリ名] 長押し(2秒)するとクレジット「CREDIT」(ライセンス等)、内部ライブラリのバージョンなどが出ます。


●モデル情報 [左パネル]

 モデルに設定されている各項目の内容によってブラウザやメーラーなどを起動できるアイコンが表示されます。
 また VRoid Hub からロードされた場合、情報が追加されることもあります([*VRoid Hub] が付きます)。

ブラウザでWebページを開きます
Googleで検索します(ブラウザ)
メーラーを起動します

 内容の検出は "http://" または "https://" の場合、URLと認識されます。VRoid Hub モデルの場合、タイトル・作者のページが開きます。
 また連絡先では、Twitter アカウントの場合(@fantom_1x または Twitter: fantom_1x など)はツイッターのURLを開きます。メールアドレスの場合はメーラーが起動します。
 その他の語句はGoogle検索となります。





■ファイル関連

●各種ファイルを開く (Open File) [から]

 各種類ごとにファイルを開きます。これは [ファイル読込] がファイル種類を問わずに共通でフォルダを開くことに対し、種類ごとに最後にアクセスしたフォルダを記憶しておけるものです。ただし、フォルダの記憶はPC版とAndroid 8.0以上のみの機能になります(Android 7.0以前ではどのボタンでも共通になります[=OSが対応してないため])。
VRM フォルダブラウザ (VRM Folder Browser) を開きます。



●VRM のフォルダーブラウズ(VRM Folder Browser) [※スマホ版ではAndroid 5.0以上]

 開いたフォルダからVRMファイルを検出し、サムネイルの一覧を作成します。サムネイルをクリックすることにより、VRMをロードできます([ファイル読込]でVRMを読み込むのと同じになります)。サムネイルは縮小してキャッシュされ、2回目以降の表示はキャッシュが使われます。キャッシュは元VRMのファイル名と更新日付に依存します。VRMにサムネイルが設定されてない場合は、白い画像になります。

※アプリによっては専用フォルダにダウンロードされることがあります(Chromeなどデフォルトの場合)。仮想フォルダやクラウドストレージでも同じようにそのアプリ専用アクセスになることがあります(※Android の場合「ダウンロード」フォルダが内部・外部ストレージ両方の仮想ダウンロードフォルダとなっているため、ファルダ内の情報が取得できない→直接フォルダアクセス("/storage/emulated/0/Download"等)した場合は読み込める)。その場合他のアプリからはアクセスできないことがあるので、別のフォルダに移動して読み込んでみて下さい。

 一度開いたフォルダはドロップダウンに登録され、ドロップダウンから選択でもフォルダを移動できます。登録されているフォルダパスは、存在しないか、VRMファイルが1つも見つからなかったときに、自動的にドロップダウンから削除されます(※次回起動時に削除)。

フォルダを開きます。
VRM ファイル移動 (VRM File Move) を開きます。(※現在、Android には実装されてません)



●VRM のファイル移動(VRM File Move)(※現在、Android では利用できません)

 VRM Folder Browserで開いているフォルダの VRMファイルを「移動先」フォルダへ移動します。
チェックして、[移動]ボタンでファイルを移動できます。

[移動先を開く] ファイル移動の実行後、移動先のフォルダを VRM File Browser で開きます。

フォルダを開きます。
VRM フォルダブラウザ (VRM Folder Browser) を開きます。



●ファイルのドラッグ&ドロップができます(※PC版のみ)

 ドロップされたファイルは順次ロードされます。同種類のファイルでは意味がありませんが、例えばアバター(vrm)&モーション(bvh)&背景モデル(gltf/glb)&音楽(wav)を同時にドロップすると順次ロードされていきます。


[背景(森)]
(Sketchfab)VR Alien Forest (@FDU_oficial)
(設定ファイル)vr_alien_forest_with_download_scene.json(右クリックで「名前を付けてリンク先を保存」)
[背景(つり橋)]
(Sketchfab)Aztec Style Temple Kit (@zaxel)
(設定ファイル)aztec_style_temple_kit_scene.json(右クリックで「名前を付けてリンク先を保存」)
[背景(岩山)]
(Sketchfab)Silex - 10 (@panormandic)
(設定ファイル)silex_-_10_scene.json(右クリックで「名前を付けてリンク先を保存」)
[背景(星の海)]
(Sketchfab)sea of star (@Hedgehog Boo)
(設定ファイル)sea_of_star_scene.json(右クリックで「名前を付けてリンク先を保存」)
>>背景の設定方法


●シーンの読み込み/保存 (Scene Load/Save) [から]

 現在の各種データ(アバター, モーション, 背景モデル, 空, エフェクト, 音楽, ブレンドシェイプ, マイク感度など)の設定を1つの「シーン」という単位で保存/読み込みを行います。


 ロードは順次読み込みとなり、現在の状態に追加で読み込まれます([ファイル読込]で1つ1つ読み込むのと同じ動作になります)。
 ただし、背景モデル(gltf/glb/プリセット背景/床など)や空(360度画像/プリセット空)などは排他的となります(最後に読み込まれたものが表示されます)。
 また、背景ベース(Plane / CRS Stage / Floating など)を読み込むとプリセット背景の初期状態にリセットされます。

 各確認ダイアログには付加機能があり、[読み込み]では各種類ごとでのロード、[上書き保存]では名前のみを変更することができます。

[読み込み] 選択したシーンをロードします。
 確認ダイアログでは読み込む種類を選択できます。背景ベース以外は現在の状態に追加となります。
 例えば「アバター(VRM)」のみチェックを外して、背景のみを現在と入れ替える、なんてこともできます。
 VRoid Hub のアバターのロードは常にキャッシュが優先されます(デフォルトではタイトルに "(VRoid Hub)" が付いています)。強制的に最新バージョンをダウンロードしたいときは、VRoid Hub から「常にダウンロード」オプションで更新して下さい。
※VRoid Hubのアバターをロードするには予めログインしておく必要があります。
※VRoid Hubのアバターはリアルタイムにダウンロードされるため、なるべく高速な回線/WIFI等を使って下さい。通信状態により、繋がらない場合もあります。


[名前変更] 選択したシーンの名前を変更できます。
 設定内容は変更されません。

[新規保存] 現在の状態をシーンとして保存します。
 確認ダイアログでは名前を自由に付けられます。[自動生成]は"曲名 / アバター in 背景"になります。

[上書き保存] 選択したシーンに現在の状態を上書きします。また名前の変更も同時にできます。
 確認ダイアログでは名前を変更できます。[上書き保存]では名前と設定が保存されます。
 [名前変更]ボタンは名前だけの変更になります。設定は保存されません。
 デフォルトでは選択したシーンの名前になります。[自動生成]ボタンを押すと、現在の曲名、アバター、背景などから自動で生成します。

[Auto Save] オートセーブされているシーンをロードできます。
 シーンやファイルの読み込み、背景ベース変更、アプリの終了時など大きな変更がある前に自動バックアップとして保存されています。ただし、あくまでも変更前の状態だけなので、履歴を遡るようなことはできません。
 これも [読み込み] と同じように確認ダイアログが表示され、種類を選択して一部のみを読み込むこともできます。
シーンの削除(Scene Delete)へ移動します。


●シーンの削除 (Scene Delete) [から]

 保存されているシーンを削除します。削除されたデータは元に戻せません。
 [削除]ボタンで実行されます。
シーンの読み込み/保存(Scene Load/Save)へ移動します。




■各種設定パネル

●曲リスト (Music Select) [から]

プレイリストに曲を追加します。対応するファイルの種類は「wav」「ogg」です(Android版では「mp3」も可)。
「曲リストから削除(Remove Songs)」へ移動します。
曲の再生モードを切り替えます。「1曲停止」は曲が終わると停止、「1曲ループ」はループ再生(シームレスループ曲に向いています)、「全曲ループ」は曲が終わるとプレイリスト中の次の曲へ行き、全曲終わるとリスト最初の曲へ行きます。「シャッフル」は曲が終わるとプレイリスト中の曲でランダムに再生されます。
再生ボタンを押してから遅延して開始する時間を設定します(秒)。設定は曲のファイル名ごとに記憶されます。BVH モーションなどにタイミングを合わせたいときなどに使います。
[連続/シャッフルでプリセットを除く] 再生モードが「全曲ループ(連続)」「シャッフル」のとき、プリセット曲(Unite In The Sky)を除いて再生します。ただし、追加された曲がない場合は無効です。


●曲リストから削除 (Remove Songs) [から]

曲リストから選択されたファイルを削除します。ファイル自体は削除しません。
[削除]ボタンを押すと実行されます。


●音楽の遅延再生 (Music Start Timing) [から]

 再生ボタンを押してから、遅延して開始する時間を設定します(秒)。BVH モーションなどにタイミングを合わせたいときなどに使います。実際には処理の負荷などにより、わずかにずれることがあります。
設定は曲のファイル名ごとに記憶されます。


●マイク感度の設定 (Mic Sensitive) [ or から]

[Level] マイクまたは音源(音楽)からの入力値がリアルタイムで表示されます (0~1)。バーが赤いときは認識されない音量で、緑で認識されます。それらは以下の「Threshold」の値で分別されます。
※「Mic LipSync」「Audio LipSync」のとき測定可能です。
※ハードウェア(PC等の録音[マイク]レベル)の設定にも依存します。音源入力のときはハードウェア音量には依存しませんが、音楽ファイル自体の音量には依存します。
[Threshold] このレベルより下の場合、認識しません。主に雑音のカットに使います。
[Gain] 元のレベルを定数倍します。元の入力レベルが小さすぎたり大き過ぎたりする場合など調整するのに使用します。

※スマートフォンの場合はマイクとスピーカーが一体となっているので、購入時付属の「マイク付きイヤホン」またはヘッドホン等を利用すると声を認識しやすくなります(「Threshold」を調整すれば、ある程度は音楽付きでも認識できます)。




●エフェクト切り替え (Effect Select) [orから]

 エフェクトを選択できます。
背景を切り替えるとリセットされます。
[Emission] 効果量を調整できます。1が基準量です。0.5で半分、2.0で2倍のパーティクルが生成されます。
※パーティクルの量が多くなるほど、重くなることがあるので注意して下さい。


[背景(星の海)]
(Sketchfab)sea of star (@Hedgehog Boo)
(設定ファイル)sea_of_star_scene.json(右クリックで「名前を付けてリンク先を保存」)
[背景(家)]
(Sketchfab)Isometric House (@Raphael Baget)
(設定ファイル)isometric_house_scene.json(右クリックで「名前を付けてリンク先を保存」)
[背景(ボクセル)]
(Sketchfab)Room 07 / MagicaVoxel (@moyicat)
(設定ファイル)room_07__magicavoxel_scene.json(右クリックで「名前を付けてリンク先を保存」)
[背景(森)]
(Sketchfab)VR Alien Forest (@FDU_oficial)
(設定ファイル)vr_alien_forest_with_download_scene.json(右クリックで「名前を付けてリンク先を保存」)
>>背景の設定方法



●BVHモーションの再生設定 (BVH Play Setting) [orから]

 ロードされているBVHモーションの再生方法/速度/回転/位置を変更できます。
[Loop] オンでループ再生します。オフでは1回再生で停止します。
[Speed] 再生速度を変更できます(元の速度は1)。音楽から遅れていくときなどは、少し再生速度を早めると合わせることもできます(端末の処理速度・データにもよるが、約 1.01~1.018 倍くらい。私がテストしてる実機は 1.016 倍くらい)。また、30fpsのデータを再生すると早送りのように見えるので(当アプリは60fpsが基準)、その場合は、0.5 にするとちょうど良い感じに見えます。
[Rotation] 向きの回転をします(-180~180度)。
[Position X] ワールド座標X方向(横)に移動します。
[Position Y] ワールド座標Y方向(縦)に移動します。
[Position Z] ワールド座標Z方向(奥)に移動します。
※位置(Position)はスライダーの範囲より大きい値または小さい値をテキストボックスに入力できます。
※設定値は"ファイル名"で保存されます。

設定値をファイル(.json)から読み込みます。
設定値をファイル(.json)に保存します。



●ユーザーオブジェクトの配置 (User Object Transform) [orから]
(※この機能は仕様・UI等が大幅に変更される可能性があります)

 「モデル読込」から読み込んだ ".gltf" または ".glb" のモデルデータ(GLTF: Sketchfab 等で配布されている形式)の配置・回転・サイズを変更/消去できます。読み込まれたモデルは背景オブジェクトとして扱われます。

[Position X] オブジェクトをワールド座標X方向(横)に移動します。
[Position Y] オブジェクトをワールド座標Y方向(縦)に移動します。
[Position Z] オブジェクトをワールド座標Z方向(奥)に移動します。
[Rotation] オブジェクト回転します(-180~180度)。
[Scale] オブジェクトのサイズを変更します(元サイズは1)

※回転以外はスライダーの範囲より大きい値または小さい値をテキストボックスに入力できます。
※設定値は".gltf"のとき"フォルダ+ファイル名"で(Sketchfab では "フォルダが名前/scene.gltf" となってるため。ファイルのあるフォルダのみ)、".glb"のとき"ファイル名"で内部保存されます。

現在ロードされているオブジェクトを消去します。
設定値をファイル(.json)から読み込みます。
設定値をファイル(.json)に保存します。


[背景(森)]
(Sketchfab)VR Alien Forest (@FDU_oficial)
(設定ファイル)vr_alien_forest_with_download_scene.json(右クリックで「名前を付けてリンク先を保存」)
[背景(ダム)]
(Sketchfab)Hampton Lake Dam (Post Hurricane Irma) (@likeonions)
(設定ファイル)hampton_lake_dam_post_hurricane_irma_scene.json(右クリックで「名前を付けてリンク先を保存」)
[背景(チェス板)]
(Sketchfab)Chess Board (@Anthony Yanez)
(設定ファイル)chess_board_scene.json(右クリックで「名前を付けてリンク先を保存」)
[キャラクター(Racingミク)]
(Sketchfab)Hatsune Miku-Racing Miku 2014 (@julianu2be)
[キャラクター(スパイダーマン)]
(Sketchfab)Ultimate Spider-man (@Neytryno)
>>背景の設定方法



●床のサイズ変更 (Floor Size) [orから]

 プリセットの床(右パネルの背景の床)を使用しているとき、サイズを変更できます。

[Scale] 床のサイズを変更します(元サイズは1)





●360度画像の設定 (360deg Image Setting) [orから]

 読み込まれた360度(全天球)画像の回転・サイズを変更/消去ができます。

[Rotation] 360度(全天球)画像を回転します(-180~180度)。
[Scale] 全天球のサイズを変更します(1が元のサイズ)。

※設定値は"ファイル名"で保存されます。

現在ロードされている360度(全天球)画像を消去します。


[背景(円形物体)]
(Sketchfab)Aztec Stone War (@Blender Books)
(設定ファイル)aztec_stone_war_scene.json(右クリックで「名前を付けてリンク先を保存」)
[全天球画像]
(BOOTH)日本列島360 全天球静止画9枚セット (@VoxelKei)
>>背景の設定方法



●カメラの設定 (Camera Setting) [から]

 カメラの動きなどを調整できます。ただし、速度が一定であっても、背景やモデルの負荷によって、体感速度が違う場合があります。システムでは最後の値を記憶してますが、シーンごとにも保存できます。

[Speed] カメラの移動/回転速度を調整できます(1が基準の速度で、0.1~3倍)。マウス/キーボード/ジョイスティック共通です。


●オプション設定等 (Setting) [から]

 各設定パネルを開きます。PC版の場合は、一部ショートカットを試験的に定義しています(ショートカットは変更される可能性があります)。

[パネル位置のリセット] 全パネルの位置をリセットします。各パネルは上部(タイトル文字の上あたり)をドラッグすると移動できます。




■背景を変える

 ここではチュートリアル的に背景を変える方法を書いておきます。背景モデルには Sketchfab などで配布されている 3Dモデル(.gltf)またはニコニ立体などで配布されている背景モデル(.glb)を読み込んで配置することができます(※自作もできます)。また RICOH THETA など360度カメラで撮影・保存した画像や、フリー素材として配布されている全天球画像も背景(主に空)として利用することができます。これらは別々に配置され、「ユーザーオブジェクトの配置 (User Object Transform) 」と「360度画像の設定 (360deg Image Setting)」で大きさや回転、位置などを調整できます。

GLBで背景モデルを自作する

 また、0.38β 以降からは設定値をファイル(.json)へ保存・読み込み機能ができるので、同じオブジェクトでも設定を瞬時に切り替えて利用することも可能です。設定ファイルはPC/スマートフォンで共有できるので、PCで調整した設定をスマートフォンで読み込むこともできます(ただし、シェーダの関係で色や光沢など見た目は変わることがあります。またスマートフォンはPCに比べてメモリ/CPUが弱いので、あまり大きなデータを読み込むとフリーズすることがあります)。

 今回は一般配布されているフリー素材を利用して、背景を変えてみたいと思います。素材自体の作り方は作者によってまちまちなので、設定値は任意で構いません。あくまで調整する方法として理解して下さい。

※各素材の著作権は著作者に帰属します。各素材についての利用方法などは、各著作者が提示されてる利用規約などをご確認下さい。


●背景の3Dモデルを読み込んでみる

 背景モデルの例として Sketchfab から 3Dモデル(.gltf ファイル)を読み込んでみます。ニコニ立体からダウンロードした背景モデル(.glb)を使うときも全く同じ手順になります(置き換えて考えて下さい)。ロードした後は大きさ・回転などを調整する必要がありますが、ここでは簡略のため、0.38β 以降の「設定値の読み込み(.json)」を使って、私が実際にデモで使った設定を利用します。

 元の背景は空の変化をわかりやすくするため「Plane」を使います。「CRS Stage」でも構いませんが、オブジェクトを配置したとき、空が無く真っ暗な背景となります。




1.Sketchfab で 3Dモデルをダウンロードするには会員登録する必要があります(無料)。面倒ならツイッターなどソーシャルアカウント利用もできるので、ページの右上にある「SIGN UP」からソーシャルアイコンをクリックで登録しておきます。既に登録してある場合は「LOGIN」でログインします。




2.今回は例として「Islands(@pravsha)」モデルをダウンロードしたいと思います。作者アイコンすぐ下の「Download」を押すとダイアログが出るので「Autoconverted format (gltf)」の方の「Download」ボタンを押してダウンロードして下さい。




Author: pravsha
License: CC Attribution-ShareAlike Creative Commons Attribution-ShareAlike

※検索ボックスでキーワードを入力して「Downloadable」にチェックを入れると、ダウンロードできるモデルを探すこともできます。


3.ダウンロードしたら zip を解凍し、ファルダにある「scene.gltf」を VRMLiveViewer にドラッグ&ドロップします。Android 版の場合は SDカードなどにコピーし「モデル読込」から」同じように読み込むことができます(スマホでは読み込みに結構時間がかかります)。




4.無事読み込むことができたら(スマホの場合、フリーズすることもあります。その場合はなるべく他のアプリを終了させ、メモリなどを確保して下さい。あまりに大きなデータは何度やっても読み込めない場合があります)、設定()から「ユーザーオブジェクトの配置(User Object Transform)」を開き、大きさや回転を調整します。ここでは簡略のため、私がデモで使用した設定値ファイル(.json)を用意しておくので、それを利用することにします。


※このモデルは小さいですが、逆に大き過ぎてロードした状態では見えないものもあります。その場合は「Scale」を適当にいじって大きさを確認して下さい。



5.以下から設定値ファイル(.json)をダウンロードして下さい。ファイルは端末のデフォルトの「ダウンロード」フォルダなどに保存されるので、それを VRMLiveViewer にドラッグ&ドロップ、または「User Object Transform」パネル上のフォルダアイコン()から読み込めます。するとすぐに設定が反映され、モデルの大きさや回転、配置などが変更されます。

(Islands の設定ファイル)
islands_scene.json(右クリックで「名前を付けてリンク先を保存」)


※自分で値を調整したものをディスクアイコン()で保存することもできます(現在の値はアプリ内部でも保存されているので、毎回ファイルに保存する必要はありません。どちらかというとデータエクスポート用です)。スライダー値はある一定範囲に制限されていますが(あまりに幅が大きいと細かい値が調整できないため)、テキストボックスの方では制限値を超えた値を入力できます。自由に調整しても構いません。



●360度(全天球)画像読み込んでみる

 背景の3Dモデルを読み込んだだけでも十分ですが、ここではついでに 360度(全天球)画像を読み込んで調整する方法もやってみます。全天球画像は jpg や png ファイルで画像の縦横比が 2:1 のものが使えます。3840x1920[px] が最適です(Android の場合、あまりに大きい画像だとフリーズすることがあります)。


1.ここでは @VoxelKei さんが配布されている「日本列島360の静止画」を使ってみたいと思います。ダウンロードするには BOOTH に会員登録する必要があります(無料)。BOOTH は pixiv が運営してるサイトなので、pixiv アカウントでもログインできます。



2.ログインしたら、@VoxelKei さんの「ボクスケショップ」にお邪魔します。「日本列島360 全天球静止画9枚セット」は無料で配布されているので、そちらのページへ移動します。右側にある「無料ダウンロード」をクリックすると画像がダウンロードされます。今回サンプルに使っている夜の画像は9番目(JPN360_9.jpg : 2018/10現在では一番下)になります。



3.全天球画像をダウンロードしたら、VRMLiveViewer にドラッグ&ドロップします。または右パネルの山アイコン()を押し、ここからファイルを選択します。


4.画像がロードされたら、「設定」ボタン()を押し「360画像の回転」パネルを開きます。ここで「Rotation」で回転を調整します(任意で構いません。ここでは約 -70度くらいです)。


※全天球画像(空)を消したい場合は×アイコン()を押せば消えます。



●エフェクト(パーティクル)を入れてみる

 右パネルにあるキラキラアイコン()を押すか、設定()から「エフェクトの切り替え」でパーティクルを入れることができます。また「Emission」で放出量を調整できます(基準量を1として0.1~3倍)。これらは任意で構いません。




 後はモーションを「CRS」や「BVH」にし、音楽を再生します。カメラをズームアウトすると、遠くから眺めることもできます(更に遠くへ行くと、全天球で囲まれていることがわかります)。

 PC版ではジョイスティックにも対応しているので、まるで空中遊泳でもしてるように楽しむこともできます。




●全天球で囲まれた空中庭園みたいになる(笑)

Author: VoxelKei
License:クリエイティブ・コモンズ 表示-非営利 4.0 国際 (CC BY-NC 4.0)



■試験的に実装している機能

 掲載時点での試験的に実装している機能です。これら機能は今後、大幅な仕様変更や削除される場合もあります(要望が多いものは正式な機能として残します)。お試し機能くらいに考えておいて下さい。

(※PC版のみ)
 以下のキーはショートカットキーのように利用できます。何らかの設定パネルが開いているとき、またはデータなどのロードしているときは無視されます。

●ショートカット的なもの

[V] モデル(VRM/GLTF) 読込(ファイル選択)を開く
[B] BVH 読込(ファイル選択)を開く
[N] 音楽 読み込み(ファイル選択)を開く
[M] 音楽のリストを開く
[J] 音楽の遅延再生の時間設定を開く(※変更・削除される可能性があります)
[G] BVHモーションの再生設定を開く(※変更・削除される可能性があります)
[L] マイク感度の設定を開く(※変更・削除される可能性があります)
[F] ユーザーオブジェクトの配置を開く(※変更・削除される可能性があります)
[K] パネルの透明度設定を開く(※変更・削除される可能性があります)
[H] 操作説明・ヘルプを開く(※変更・削除される可能性があります)
[;] エフェクト切り替えを開く(※変更・削除される可能性があります)
[<] 360度画像の読み込み(ファイル選択)を開く(※変更・削除される可能性があります)
[:] 360度画像の設定を開く(※変更・削除される可能性があります)

[0](テンキー) 音楽の再生
[.](テンキー) 音楽の停止
[*](テンキー) CRS の楽曲とモーションの再生(※変更・削除される可能性があります)
[7](テンキー) リップシンクを「None / Key」にする(※変更・削除される可能性があります)
[8](テンキー) リップシンクを「AIUEO / CRS」にする(※変更・削除される可能性があります)
[9](テンキー) リップシンクを「Mic LipSync」にする(※変更・削除される可能性があります)
[6](テンキー) リップシンクを「Audio LipSync」にする(※変更・削除される可能性があります)

●一度読み込んだファイルの記憶機能

 VRM, BVH, 音楽ファイルなど、現在読み込んでいるファイルのパスを記憶し、キーを押すことにより、ファイル選択を開かずに読み込みを開始します。ファイルが見つからなかった場合は無視されます。

・記憶するときは [Shift]キー+以下の各キー
・読み込みするときは、記憶したキー

で利用できます。キーボード上では横並びの10個になります。

「VRM/GLTF」 の記憶キー:[F1]~[F10]
「BVH」 の記憶キー:[1]~[9][0] (フルキー)
「音楽」 の記憶キー:[Q][W][E]…[P]
(※変更・削除される可能性があります)

●リップのマニュアル操作(※変更・削除される可能性があります)

※「None / Key」 のとき
(全てテンキー)
[1] あ
[2] い
[3] う
[4] え
[5] お
●実は「あ、あ、マイクおっけー!」以外は、「あ」「え」「お」の3つを適当に連打してるだけ(笑)。
歌詞のひと区切りの最後や、伸ばしてる所だけ合わせれば、意外とそれっぽく見える(笑)。





■補足説明

・v0.32βにおいて、曲リストの UI が PC版 と Android版で共通化されました。
[曲リストに追加][曲リストから削除][再生モード][遅延再生の時間設定]などは、「曲リスト(Music Select)」内に移動しました。

・v0.37βにおいて、右パネルにあったBVHモーションの回転([Y:180]),ループ設定( [Loop]),再生速度設定( [Speed])は「再生設定パネル(BVH Play Setting)」にまとめられました。

・v0.42βにおいて、[VRM 読込] ボタンが [ファイル読込] に統合されました。また [BVH 読込] ボタンも に変更されました。実際にはどのボタンからも種類に関係なく読み込むことができます(ただし、各ボタンによりデフォルトのフィルタ[=拡張子]や最後にアクセスしたフォルダなどの保存状態が違います。※PC, Android8.0以上のみ)。

・v0.52βにおいて、内部ライブラリである UniVRM を 0.46c へアップグレードしました。
 それに伴い、シェーダーやノーマルマップの更新・修正等の影響で、v0.51β以前とは見た目が大きく異なってしまう場合があります(v0.51β以前の内部ライブラリバージョンは UniVRM 0.42)。
 詳しくは「バージョンによる差異について」にて確認して下さい。

・v0.81βにおいて、「360度画像の回転(360deg Image Rotation)」に全天球のサイズ変更も加わり、「360度画像の設定(360deg Image Setting)」に名前が変更されました。

・v0.87βにおいて、環境光の影響を軽減するため、光源色を Unity のデフォルトに変更しました(以前は少し青みがかっていたが、白っぽくなった)。
 詳しくは「バージョンによる差異について」にて確認して下さい。



■バージョンによる差異について

 内部ライブラリである UniVRMやシェーダ(MToonも含む)により、バージョンによって見た目が大きく異なる場合があります。

VRM Live ViewerUniVRMMToon影響のある修正内容備考
0.51β以前0.421.3 -- --
0.52~0.54β0.46c1.7UniVRM ReleaseNote v0.44(ja)
UniVRM ReleaseNote v0.45(ja)
--
0.55~0.74β0.491.7 (*1)UniVRM ReleaseNote v0.49(ja)(*1) 本来なら1.8だが、光源反映の影響範囲が大き過ぎるため、ダウングレードで対応。
0.75~0.86βPC版のCRS Stageの一部影を無くし、軽量化(Android版は元から影処理が軽量)
0.87β以降0.533.2UniVRM ReleaseNote v0.52(ja)
UniVRM ReleaseNote v0.53(ja)
MToon が v3.2 となり、環境光の反映や影の感じが変わりました。Issue 等を見てみると、環境光反映との相殺で影が打ち消されている可能性があります。今後のバージョンアップで対応されるか否かはわかりません。

 特に Android をご使用の方は試用版を用意しましたので、アップデート前に試用版で動作確認後、本アプリをアップデートするか否かを検討して下さい。Android は上書きのダウングレードができないため、以前のバージョンに戻すことができません。十分注意してインストールして下さい(OSの仕様)。必要であれば、過去のバージョン(試用版)も使って下さい(※別のアプリとしてインストールされます。Trial となってますが、内容は通常版と同じです)。

 Windows の場合は、別フォルダを作って使用すれば、過去のバージョンも併用して使えます。

(Google Drive を利用)


Android 4.4以上 (※5.0以上推奨)

●環境光の反映などのため、陰影の感じが変わっています[※PC, Android 版両方]
v0.51β以前
v0.52~0.86β

v0.87β以降

●シェーダーの追加/環境光の変更などにより、影の付き方や、一部表現されてなかったものが表示されます
[※PC, Android 版両方]
v0.51β以前
v0.52~0.86β

v0.87β以降

●CRS Stage を軽量化するため、一部影の処理を無くしました(影の処理は負荷が高いため)
[※PC版のみ (Android版は元から軽量)]
v0.74β以前
v0.75β以降

●環境光の影響を軽減するため、光源色を Unity のデフォルトに変更しました(以前は少し青みがかっていたが、白っぽくなった)。
[※PC, Android 版両方]
v0.86β以前
v0.87β以降

●シェーダーが環境光の影響を強く受けるようになったため、影が薄くなる(消える)場合があります。
[※PC, Android 版両方]
v0.86β以前
v0.87β以降

 特に VRoid に関しては「既知の問題」にあるように、VRoid Studio 0.1.x でエクスポートしたものはかなりギラ付くようです。その際は最新版の VRoid Studio で再エクスポートすれば、ある程度修正されます。同様に UniVRM 0.42以前にエクスポートしたものは、最新の UniVRM でエクスポートすれば、ある程度修正されます。

 また、0.87βでは「Fade モードを使っている素材が透過されてない」という問題も確認しています。これらの詳細は「既知の問題」にも書いてあります。


●過去バージョンのダウンロード

 過去バージョンも置いておきますので、必要な方はダウンロードして使って下さい。
 Android は OSの仕様上、ダウングレードができないので、試用版となります(※別のアプリとしてインストールされます。Trial となってますが、内容は通常版と同じです)。

[Windows 版] (※別フォルダに分ければ共存できます)
>>Windows 0.51β をダウンロード
>>Windows 0.74β をダウンロード
>>Windows 0.86β をダウンロード

[Android 版] ※Android 4.4以上 (※5.0以上推奨)
>>Android 0.51 試用版をダウンロード(※別アプリとしてインストールされますが、内容は通常版と同じです)

>>Android 0.86 試用版をダウンロード(※別アプリとしてインストールされますが、内容は通常版と同じです)





■既知の問題(不具合など)

 現在わかっている不具合を挙げておきます。しかしながら、仕様上アプリからは修正できないものもあるので、その場合はご了承下さい。

※分類
[×] 仕様上、修正は難しい
[△] 修正には調査が必要(場合によっては修正できるかも?)
[-] それは仕様だ。問題ない(笑)
[○] 解決済み


[△] シェーダーの Fade モードが反映されなくなった?(※v0.87β以降)
→ GLTF を読み込んだ際に Fade モード(アルファで透明になる素材)が反映されてないことを確認しています。
 この問題は内部ライブラリである UniVRM のバグレポートとして送ってあります。今後のバージョンで修正されると思います。

●Fade モードを使っている素材が透過されてない
v0.86β以前
v0.87β以降


[△] VRoid Hub からモデル読み込みが止まってしまう。
→ 通信状態やキャッシュの状態によって(?まだ調査中。なせがエラーが出ないことがある)、ごく稀に上手く読み込めないことがあるようです。しばらくしてエラーが出た場合は、ログウィンドウを閉じて再度試してみて下さい。出ない場合は、お手数ですがアプリを再起動して下さい。
 特にスマホで利用する場合は、なるべくWIFI等、高速な回線を使って下さい。

[×] ダウンロードした VRM が読み込めない。VRM Folder Browser で何も表示されない。
→ アプリによっては専用フォルダにダウンロードされることがあります(Chromeなどデフォルトの場合)。仮想フォルダやクラウドストレージでも同じようにそのアプリ専用アクセスになることがあります(※Android の場合「ダウンロード」フォルダが内部・外部ストレージ両方の仮想ダウンロードフォルダとなっているため、ファルダ内の情報が取得できない→直接フォルダアクセス("/storage/emulated/0/Download"等)した場合は読み込める)。その場合他のアプリからはアクセスできないことがあるので、別のフォルダに移動して(確実なのは内部ストレージ)読み込んでみて下さい。

[×] VRM/GLTF/GLB のロード(ビルド)中にフリーズする/読み込めない。
→ モデルによっては巨大なテクスチャや大量のメッシュ(ポリゴン)で作成されているものがあります。その場合は動的にモデルを生成するのにかなりのメモリやCPUパワーを必要とします。また新しくモデルが入れ替えられる直前までは、既に読み込まれているモデルがメモリを使っています(つまり消去されるまでは約2倍のメモリを喰う)。端末のキャパをオーバーした場合、フリーズすることもあるようです(またはとてつもなく重くなる)。なるべく軽いモデルを使って下さい。特にスマホではその傾向が顕著のようですシーンを連続で読み込んでいると大抵フリーズします..)。またエラーが出るものは何らかが原因で対応できないものなのでご了承下さい。

[×] VRoid を読み込むとギラギラする。
VRoidVRM が利用してる NormalMap やシェーダーの差異のようです。VRoid のバージョンアップに伴い、少しずつ良い感じに変換されるようになっています(特に VRoid Studio 0.1.x で作ったものは、かなりギラつく→ 0.2.13 以降で再エクスポートすると良くなる)。今後のバージョンアップに期待しましょう(笑)。

[×] GLTF/GLB モデルの色合いが違う。一部欠けたり描画順がおかしかったりする。
→ シェーダ等の違いにより、見た目がどうしても変わってしまいます。また透過や発光などのシェーダは無視されることがあります(シェーダ[=Standard Shader]が対応できないとき)。完璧な再現はできないのでご了承下さい。

[×] モーションを途中で切り替えると位置がずれる、タイミングが遅れる。
→ CRS のダンスモーションは相対的に移動してるため、タイミングによってはステージの中心からずれることがあります(特に重い処理などで一時的に止まってしまう時間が長いときなど)。その場合は曲を最初から再生するか、「T-Pose」で中心に移動する方法があります。また、CRS, BVH モーションはパネルのトグルボタン(●)を押すと、音楽の再生時間に合わせたモーションに修正されます

[-]「Look At Me」が効いてない気がする
→ ダンスのように大きく首を動かすモーションでは特にわかりずらいです。「T-Pose」にして試してみて下さい。
また、目にボーンが入ってないモデルでは視線を動かせません。あと、常に「こっちを見る」ギミックが入っているモデルも効果がありません(その場合は逆にオフにしても「こっちを見る」感じになります)。

[○] モデルによっては一部欠けて表示される(特にバックスクリーンカメラ)。[ver.0.19 にて Fix]
→ モデルによってはメッシュの連結(親ボーンのリンク)とバウンズが上手くマッピングできず、各パーツの bounds がカメラの表示領域から外れ、カリングされてるようでした。少し負荷は上がりますが、カメラ領域外にいるときもカリングされないように修正しました(このアプリでは1体なので、負荷より表示を優先すべきと考えた)。

[○] BVH モーションがだんだん音楽から遅れていく。[ver.0.22 にて、再生速度調整機能を追加]
→ 特に他の形式から BVH に変換した場合など、フォーマットによる誤差(BVH はフレームベース[1フレームごとにデータがある]だが、フォーマットによっては時間ベース[一定間隔ごとにデータがあり、間は自動補間する]で作成されているデータもある。MMDなど)、ものによっては実機との負荷の影響もあり、少しずつ遅れていくようです(例えば BVH が 60fps で作られていたとしても、実機で確実に 60fps 出るわけではないので、少しずつずれていく)。再生システムを変更することも考えましたが、既存のデータの見え方も変わってしまうため、独自に再生速度を調整できるようにし、より汎用的に利用できるようにしました(再生速度操作によってスローモーションや早送り再生も表現できる)。BVH のデータと現実時間の遅延誤差は実機の処理能力にもよりますが、再生速度(Motion Speed)を約 1.01~1.018 倍くらいにしておくと、音楽とも合うようです(内部処理が55fpsくらい出ている場合。実際には端末ごとに平均的な値を見つけるしかない。私がテストしている実機の場合 1.016 倍くらいが丁度良いことが多い)。再生速度はファイル名ごと(フォルダ名を含まない)に記憶されるので、ちょうど良い値を見つけておけば、いつでも再現できるようにしてあります。

[○] BVH を読み込んだが、動かない。[ver.0.24 にて Fix]
→ エクスポートした3Dツールの座標系の違いで読み込めなかったり、見た目がおかしくなったりするようです。当アプリで読み込める BVH は「Y-up 右手座標系」(OpenGL系、Maya, Daz3D など)の座標系になります。「Z-up 右手座標系」(3ds Max など)の場合は、見た目がおかしくなります。[>>3Dツールごとの座標系など]
また内部ライブラリのバージョンアップでも修正されました(当アプリでは v0.24β以降)。
参考までに初期に読み込まれている BVH ファイル(「test.bvh」)を同梱して置きます(このファイルと同じ座標系)。
[>>現在、読み込み可能が確認されているもの]

[○] 表情が反映されないものがある。少しおかしくなることがある。[ver.0.28 にて、一定パターンのみ Fix(ユーザー定義のため、全てはカバーできない)]
→ VRM のプリセット表情として使えるものが、キャラによって定義されてない場合があります。定義されてないものは無視されます。
「あいうえお」が揃ってない、片目を閉じる(ウインク)などが定義されてない、等のモデルも多くあります。
また、笑顔のブレンドシェイプ(プリセットの Joy)が「目のにっこり+口を大きく開けて笑う」のようになっているとき、リップシンクの「あいうえお」が実行されると、2重に口のモーフがブレンドされておかしくなることがあります。

※CRS では VRM のプリセット表情の「Joy」(にっこり), Blink_L」(ウィンク),「Blink」(目閉じ)と口パクに「A, I, U, E, O」(あいうえお)を使っています。当アプリでは 0.27β以降、VRoid に関しては Joy のデフォルト定義「~_ALL_Joy」の代わりに「~_EYE_Joy」を使用することによって、リップシンクとの2重モーフにならないように対処しています(VRoid Studio 0.2.8 までで生成された VRM で確認済み)。また、VRoid 以外では Joy に定義した各ブレンドシェイプの名前に "mouth", "あ", "ワ" が含まれている場合、口のブレンドシェイプとみなして無視するようにしています。

[○] 最新バージョンのモデルが VRoid Hub からロードできない。[ver.0.86 にて Fix]
VRoid Hub システムは最新10個のローカルキャッシュを保持しています。これは利用頻度の高いモデルを何度もダウンロードしないようにするためです。キャッシュが無効になった時点で新しいバージョンがダウンロードされます。強制的に最新バージョンをダウンロードしたいときは「常にダウンロード」オプションをオンにして「利用する」ボタンでダウンロードして下さい。
 また、シーンで VRoid Hub のアバターをロードするときも、常にキャッシュが優先されます。その場合も「常にダウンロード」をオンにして更新できます。



■VRoid Hub について(連携方法)

 VRoid HubVRMフォーマットで作られた 3Dモデルの共有プラットフォームです。pixiv が運営しており、同社が提供しているVRoid Studio を使えば、誰でも簡単に3Dモデルを作成/アップすることができます。

 また VRoid Hub には連携機能があり、このアプリではサイトでお気に入りを付けたもので、他の人の利用OKのモデル、または自分でアップしたモデルであれば、直接アプリにロードすることができます。

 ダウンロードしたモデルは最大10個までキャッシュされます。キャッシュを利用せず、最新バージョンをダウンロードしたいときは「常にダウンロード」オプションをオンにして「利用する」ボタンでダウンロードして下さい(ダウンロードしてる場合は進捗バーが出ます。キャッシュ利用の場合はバーは表示されません)。また、シーンに保存されているモデル(アバター)は常にキャッシュが優先されるので、強制的に最新バージョンに置き換えたいときにも使えます。



●VRoid Hub との連携方法

1.初回時は [VRoid Hub に接続] でブラウザが開きます。



2.「あなたのアカウントをVRM Live Viewerを連携しますか?」で [連携する] を押します。



3.連携許可すると認可コードが発行されるので、PCの場合はコピーして、アプリの入力ボックスに入力して下さい。スマホの場合は自動で入力されます。



 これで連携完了になります。次回以降は接続するだけでOKです(※ログアウトした場合は同じ手順をします→認可コードは毎回変わります)。




●VRoid Mobile で作ったキャラを使う

VRoid Mobile
VRoid Hub

 VRoid Mobile で作ったキャラ(アバター)なら、VRoid Hub 連携でダウンロードして使えます。

 「Yours」タブには VRoid Hub へアップロードしたキャラのみが表示されるので、「利用する」でダウンロードして踊らせて下さい。
 ※最新バージョンがダウンロードされない場合は「常にダウンロード」オプションをオンにしてダウンロードして下さい。






■VRM(3Dアバター)の入手方法

 一般的に Web で配布されているものを利用できます。各モデルの利用方法はその規約に従って下さい。


VRoid Hub
VRoid Mobile


ニコニ立体ちゃん
ニコニ立体で "vrm モデル配布" を検索


 BOOTHとはコミケなどのように、個人の創作活動でも販売できるネットショップサービスです。最近ではVRM, VRoidモデルやカステム用の素材なども販売されています。無料の素材などもあるので、色々覗いてみるのも良いかも知れません。


BOOTHで "vrm" を検索
BOOTHで "vroid" を検索
BOOTHで "vroidテクスチャ" を検索 (衣装などのカスタマイズ素材)


東北ずん子
(アプリのヘルプボタン → 下の方へスクロールして、画像アイコンをクリックでもブラウザからダウンロードできます)
アクシア[縞パン ver.]アリシア色改変モデル。@不沈空母ニコニ立体ちゃんライセンス
(アプリのヘルプボタン → 下の方へスクロールして、画像アイコンをクリックでもブラウザからダウンロードできます)
VRMファイルを作ってみたい
※アクシア(縞パン ver.) は実験用にこの手順に従ってコンバートしたものです(テクスチャ:@不沈空母)。


(c) SSS LLC.(ず・ω・きょ)
(c) DWANGO Co.,Ltd. ニコニ立体ちゃんライセンス




■GLB(3Dモデル)の入手方法

 ニコニ立体など、3Dモデル共有サイトで入手できます。各モデルの利用方法はその規約に従って下さい。


ニコニ立体で "Vキャス背景" を検索
※検索キーワード:"glb" でも出てきますが、まだほとんどのモデルがダウンロードできないようです(2018/10 時点)。

GLBで背景モデルを自作する
glbファイルの作り方



 ちなみに GLTF と GLB は内部的には同じものです。GLB は GLTF の一連のファイルをアーカイブ(圧縮)したものらしいです。しかし、GLB はバーチャルキャストでの使用が考えられていることが多いため、スケールが等倍(Unity の1ユニット=1m 基準。1ユニットの値が3Dモデルツールによって違うため、3Dモデルを他のソフトで用いると、スケールが異なってしまう問題が出る)で作られていることが多く、VRM系のアプリでは扱いやすいメリットがあります(もっと流行って欲しいですね(笑) ← 今は配布されているものがあまりにも少ない |||orz)。



■GLTF(3Dモデル)の入手方法

 Sketchfab など、3Dモデル共有サイトで入手できます。各モデルの利用方法はその規約に従って下さい。


(sea of star の設定ファイル)
sea_of_star_scene.json(右クリックで「名前を付けてリンク先を保存」)

Sketchfab
「Search」で検索し、オプション(OTHERS)で「Downloadable」にチェックを入れると、ダウンロード可能なものに絞れます。各モデルページの「Download」を押すと「Autoconverted format (glTF)」があるので、ダウンロードして「モデル読込」から "~.gltf" を読み込みます(※シェーダ等の違いにより、完璧な再現はできないのでご了承下さい)。
Sketchfab のモデルは各作者のモデリングツールに依存するため、あまり等倍(1ユニット=1m)は無いようです。ほとんどの場合、「ユーザーオブジェクトの配置 (User Object Transform)」を使ってサイズや位置を調整することになります(※大き過ぎたり、小さ過ぎたりすると見えないので、その場合はスケールを適当に変えてみると元サイズがわかります)。



■360度(全天球)画像の入手方法

 RICOH THETA など360度カメラで撮影・保存した画像や、フリー素材として配布されている全天球画像を利用できます。各素材の利用方法はその規約に従って下さい。

RICOH MIKU THETA
RICOH THETA Type HATSUNE MIKU(アプリ)

日本列島360 全天球静止画(BOOTH) [@VoxelKei]
※「日本列島360 全天球静止画」は無料でダウンロードできます。


BOOTHで "全天球" を検索



■BVH(モーションファイル)の入手方法

 一般的に Web で配布されているものを利用できます(データによっては読み込み失敗するものもあります)。各モーションファイルの利用方法はその規約に従って下さい。

Live Animation モーションライブラリ
 各サンプルの「BVHサンプルXX」(XX:番号)を右クリックで「名前を付けてリンク先を保存」でダウンロードできます。
BVHモーションの再生設定 (BVH Play Setting) で [Rotation] を 180度回転して再生した方が良いものがほとんどです。

The Daz-friendly BVH release of CMU's motion capture database
 カーネギー・メロン大のデータベースのモーションキャプチャーデータをBVHに変換したものらしいです。各 zip のリンク(「Zip file for BVH directories 01-09」など)をクリックすると、緑色のダウンロードボタンが出るので、それを押すと zip がダウンロードできます。ボタンを押すと、海外らしい結構うざい広告(笑)が出ますが、閉じてしまって構いません。現在 2548 ものモーションキャプチャーデータを利用できます(>>モーションリスト)。特に使用に制限はなく、商業利用も可能のようです。元々学術研究用でもあるので、割と好きに使っても問題ないと思われます。

 また、少しページの下へ行くと「SECONDARY RELEASE: Daz-friendly hip-UNCORRECTED BVH files release.」というのもあります。こちらは「Hips」のオフセットが0でない(補正されてない)データのようです。「フットスリップの問題が発生した場合にのみ、これらのファイルを選択して使用してください」と書いてありますが、読み込んでみると、少しスムーズな動きをする気がします。ただし、いきなりコマ飛びのような動きも多いです。

 ここの他のサンプル(3dsMAX用など)を試してわかったんですが、エクスポートした3Dツールの座標系の違いで読み込めなかったり、見た目がおかしくなったりするようです。使用ライブラリの BVH インポータは OpenGL系(「Y-up 右手座標系」:Daz3Dも同じ)なので、例えば 3dsMAXなど「Z-up 右手座標系」の場合は見た目がおかしくなります

Perfume Global Site
 Projectページの「DOWNLOAD」から BVH と音楽ファイルがダウンロードできます。「Terms of use」(利用規約)にチェックを入れるとDLできるようになります。音楽もダウンロードできるので(※配布終了してしまったようです。残念… |||orz)曲リスト(Music Select):から [プレイリストに追加]:で読み込みできます(※PC版の場合、エクスプローラからアプリにファイルをドラッグ&ドロップしても追加できます)。
BVHモーションの再生設定 (BVH Play Setting) で [Rotation] を 180度回転して再生した方が良いです。

※直接読み込める BVHファイルの情報などありましたら、ツイッターでもメールでも教えて貰えると嬉しいです。このページにまとめて掲載させて頂きます(「BVHモーション配布」みたいのはあまり無いんですよね…)。


>>Perfume Global Site でモーション/音楽配布されてます。
(※配布終了してしまったようです。残念…|||orz)




■使用できる BVH を作る(変換する)

 現在の所、ヒエラルキーによるボーン構造やオフセット値など(?)、VRMLiveViewer で利用できるものとそうでないものがあるのがわかっています(使用ライブラリの BVH インポータは OpenGL系(「Y-up 右手座標系」:Daz3Dも同じ)なので、例えば 3dsMAXなど「Z-up 右手座標系」の場合は見た目がおかしくなります)。

 なので、非常に大雑把で正しいやり方とは言えないと思いますが、以下に簡単に利用できる方法を書いておきます。それは「Live Animation」(掲載時点:β4.65)というアニメーション(モーション)作成ソフトを使うことです。このソフトはキネクト(モーションキャプチャー)を取り込んだり、他のモーションファイル形式を変換したりできるソフトです。動作確認はフリー版(β4.65)でしてます。

1.Live Animation を起動したら、キャラ(アバター)の中から「johnny」君を選択します。他のキャラでも試してみましたが、「johnny」君以外は上手く行かないようです(追加アバターも試しましたが、見た目がおかしくなるようです) BVHインポータのバージョンアップにより修正されました(当アプリでは v0.24β以降)。



2.次に再生するモーションファイルをドラッグ&ドロップします(形式は何でも構わないが、BVHエクスポートしても、読み込めるのとそうでないものがあるので注意)。例えば「モーションライブラリ」で配布されている「~.lam」なども利用できます。必要あればアニメーションを編集しても構いません。



3.メニューから「ファイル>エクスポート>BVH」をすると、BVHエクスポートのダイアログが開きます。ファイル名以外の項目では赤で囲んだ「右手座標系」と「基本ポーズの反転」をチェックする必要があるようです。他のオプションは任意で設定して下さい。



 あとはエクスポートした「~.bvh」を VRMLiveViewer の [BVH 読込] から読み込みます。何らかが原因で使用できない場合は、エラーログが表示されます([×]ボタンで閉じることができます)。fbx や他の BVH 配布サイトの bvh も試したことがありますが、利用できないものも多くあります(→ BVHインポータのバージョンアップで修正されました(当アプリでは v0.24β以降)。ただし、3dsMAXでエクスポートしたものなど「Z-up 右手座標系」の場合は見た目がおかしくなります)。

踊りのモーションla_001_SIL_TOSH.lam)をBVH変換したものと、
エキスポートサンプルをそのまま読み込んで踊らせてみた例。
顔の向きを少し上に(正面を向くように)編集している。





■利用したオープンソースプロジェクト・素材など

[VRMビューワ/VRMインポーター]
VRM
UniVRM

MIT License
Copyright (c) 2018 DWANGO Co., Ltd. for UniVRM
Copyright (c) 2018 ousttrue for UniGLTF, UniHumanoid
Copyright (c) 2018 Masataka SUMI for MToon

[VRoid SDK / VRoidHub, BOOTHロゴ]
Copyright (c) pixiv All Rights Reserved.

[リップシンク]
Oculus Lipsync
Oculus VR, LLC Software Development Kit License
Copyright (c) 2015 Oculus VR, LLC. All rights reserved.

AniLipSync
MIT License
Copyright (c) 2018 XVI Inc.

[UnityWindowsFileDrag&Drop / BMPLoader]
MIT License
Copyright (c) 2017-2018 Markus Göbel (Bunny83)

[Sphere100.fbx(全天球メッシュ)]
MIT License
Copyright (c) 2015 Makoto Ito

[ライブモーション&ステージ&楽曲]
ユニティちゃんライブステージ!

ユニティちゃんライセンス(UCL)
(c) Unity Technologies Japan/UCL

[東北ずん子アイコン]
(c) SSS LLC.(ず・ω・きょ)

[ニコニ立体ちゃん(アリシア)]
(c) DWANGO Co.,Ltd. ニコニ立体ちゃんライセンス

[日本列島360アイコン]
(c) VoxelKei

※各素材の著作権は著作者に帰属します。各素材についての利用方法などは、各著作者が提示されてる利用規約などをご確認下さい。









(関連記事)
【Unity】【VRMLiveViewer】GLBで背景モデルを自作する
【Unity】【C#】Android で VRM(VRoid)を動的に読み込む
【Unity】VRoid(VRM)をインポートして動かす
【Unity】AssetStore版 FantomPlugin のセットアップ
【Unity】Androidのトーストやダイアログ、通知、音声認識、ハード音量操作など基本的な機能を使えるプラグインを作ってみた


category: Unity

thread: ソフトウェア開発

janre: コンピュータ

tag: VRoid  VRM  サンプル  VRMLiveViewer 
tb: 0   cm: --


プロフィール

Social

検索フォーム

全記事一覧

カテゴリ

ユーザータグ

最新記事

リンク

PR

▲ Pagetop