FC2ブログ
ヽ|∵|ゝ(Fantom) の 開発blog? ホーム » アプリ »【VRMLiveViewer】既知の問題(不具合など)

【VRMLiveViewer】既知の問題(不具合など)  




※このページは「VRM Live Viewer のメインページ」から分離したページです。
主に確認されている不具合や、修正された情報などを掲載しています。

それ以外の使用方法(ヘルプ)などはメインページの目次から探してみて下さい。
>> VRM Live Viewer メインページ目次


その他の情報は、以下に掲載されています。
・補足説明
・バージョンによる差異について
・更新履歴(アップデート・修正情報)
・背景GLTFの設定リスト(使用例)
・GLBで背景モデルを自作する



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

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

※仕様変更などの情報は「バージョンによる差異について」や「補足説明」にまとめられているので、参照してみて下さい。


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


[△] VMD 再生で足が寄り気味になる。
モデルの足の付け根の初期角度(T-Pose 時)など、ボーンの構造等により、足が寄ってしまうことがあるようです(なるべく、初期角度は垂直な方が良いようです)。
 また、v1.34 以降で「ボーン補正」値が大きい場合、データによっては動きが大き過ぎて寄ってしまうこともあります。
 この辺りの問題は今後のバージョンで調整機能等を追加していこうと考えてます。

[△] VMD再生で指や手、足などの角度が違う。曲がりすぎたりする。
MMD x VRMモデルの仕様違いから発生する問題と思われます。そのほとんどがモデルの「ボーンの長さ,有無,構造(位置),初期角度」の違いが原因のようです(※また、つま先IKには対応してません)。特に VRM では「正規化」と呼ばれる作業が含まれていて(ツールを使ってる分には意識することはありません)、モデルの初期角度は 0 度に固定されてます(T-Pose 固定)。

 しかし、MMDではモデルの作者によって異なることがあるため、VMDデータを作る際に使ったモデルの初期角度、手足の長さ、内股やO脚型等、ボーンの構造(独自にボーン追加してることもある)など、あらゆる箇所の仕様に依存します
 そのため、データの反映も元のモデルでの値となり、VRM ではそっくり同じになることはまずありません(MMD同士でさえ、同じにはなりません)。

 特に足においてはこの問題は顕著で、しゃがみ込む様なモーションでは、モデルによっては破綻します。これは「かかと - ひざ - 足の付根」で構成される三角形と、その上に乗る身体の角度がオリジナルとは合わないためで、例えば「ひざ - かかと」の長さの比率がオリジナルより長い場合、Y軸(垂直方向)に対して元より鋭角となり、逆に「足の付根 - ひざ」が長い場合は鈍角になります。また足の付根の初期角度が異なる場合、更に角度が変わります(実際、足が長いキャラほどずれが大きくなるため破綻しやすい傾向がある)。

 例えば、親指1の初期角度は、MMD と VRM で以下の画像のように異なっています。


MMD での初期角度
※値が 0 度となっていても曲がっている

VRM での初期角度

 そのため、MMDでは指がまっすぐに見えても、VRMでは指が反りすぎている、なんてことが起こります(これはモデルごとの初期角度に依存するため、あらゆるボーンで起こりえます)。

 VMD再生自体は単純な「位置,回転,補間」の計算でしかありません。例えば、元のMMDのモデルの初期角度が 40度であった場合、VMDモーションで +20度回転で 60度になりますが(40+20=60)、VRMモデルで初期角度が30度であれば、VMDモーションで +20度回転で 50度になります(30+20=50)。合計で 180度や -180度を超える無理な回転となった場合、角度が反転してしまう場合があります。多くの場合、こういった両者の仕様上の差異で破綻します(これはMMD同士でも起こります。例えば Aスタンスは 30度だったり、40度だったり、28度、34度等、モデルによって異なります)。

 この辺りの問題は今後のバージョンで調整機能等を追加していこうと考えてます。

[△] キャラによっては VMD を再生すると、延々と移動してしまう。
→ 特に人型でないキャラで起こることが多いようです。MMD は本来人型を想定しており、特に足の「付け根」「ひざ」「かかと」のボーンが揃ってない場合、計算が正しく行われない可能性があります。
 また、ボーンの名前(ノード名)が重複していたり、空だったりした場合は、正しくボーンを認識できない場合があります。
 なるべく人型のものを使うか、対応できるボーンが入っているモデルを使ってみて下さい(BVH は全く別の方式で再生されているため、BVH に変換して使う手もあります(※ただし、BVH は指など末端のボーンが動かないので注意)。 [※調査中]

[○] VMD 再生中にキャラを入れ替えると不自然な動きになる。[v1.34 にて Fix]
→ 足のIK情報は先頭フレーム(0) に入っていることが多く、途中再生のとき、IK情報がスキップされていました。v1.34 では修正されています。

[○] VMD 再生で足や手首が不自然な動きになる。[v1.34 にて Fix]
→ 補間の範囲のとり方に不具合がありました。v1.34 以降では修正されています。

[○] VMD 再生で表情が反映されない。リップシンク(口パク)ができない。[ver.1.28 にて、VMD モーフ再生に対応]
MMDとVRM のブレンドシェイプは互換性がないため、現在無効化してますv1.28 にてVMDモーフ再生に対応
 v1.28 以降で、VMDのリップシンクを利用するには、サイドパネルのブレンドシェイプのモードを [Preset/Auto] にして下さい。その他のリップシンクの方法としては、[Audio LipSync](または [Mic LipSync])モードにすれば、ある程度音源から音声認識で口パクできます。

[-] VMD表情モーフの設定が以前と違う。[Disable] になっているものがある。
アプリのバージョンアップでモーフ名の検出・自動バインドの精度が上がった場合、以前のモーフとは異なるバインドがされることがあります。また、以前のバージョンで検出不可(None)だったものが、新しいバージョンで候補として検出された場合、[Disable]になることがあります(どちらも未選択として記録されている)。また、表情モーフが入ってない vmd で設定パネルを開いたとき、全てを無効として保存されてしまってる可能性もあります(v1.30 以降ではそうならないよう修正が入ってます)。

 シーン保存してる場合は、その設定が優先的に反映されるため、最新のバージョンの検出のバインドにしたい場合は、「VMD表情モーフの設定」で [Default Bind] ボタンを推して下さい(やはり以前に戻したい場合は、パネルを閉じる前なら [Revert] ボタンで元のバインドに戻せます)。

[○] VMDカメラモーションで回転がオリジナルと違う [v1.33 にて、内部計算を改修]
→ Unity での回転は Quaternion(クォターニオン:-180~180度)で表され、MMD でのカメラの回転はオイラー角(±0~360度だが、それ以上もできる)で表されているため、変換の際に値が変わっているようです。
 この辺りの内部計算アルゴリズムはいずれ修正しようと考えているので、今後のバージョンアップをお待ち下さい。 → v1.33 以降にアップデートすることで、再現可能となりました (回転計算を改修済み)。

[×] VMD を読み込もうとするとエラーが出る。
VMD の内部ファイルフォーマットのバージョンの違いのせいか(?)(何度か内部的なフォーマットは更新されているため)、稀にエラーで読み込めないものがあります。過去すべてのバージョンに対応するのは難しいので、最新のバージョンで保存し直してみるなど試してみて下さい(修正できない場合もあります)。
 この辺りの問題は修正できる可能性は低いのでご了承下さい。

[×] モーションを途中で切り替えると位置や回転がずれる、タイミングが遅れる。
→ プリセットのダンスモーションは相対的に移動してるため、タイミングによっては位置や回転がずれることがあります(特に重い処理などで一時的に止まってしまう時間が長いときや、シーンからモーションを置き換えたときなど)。その場合は曲を最初から再生するか、プリセットモーションのトグルボタン(●)を押すと(ドロップダウンを押しても同じ。PCの場合 [Home] キーでも可)、音楽の再生時間に合わせたモーションに修正されます。計算で位置や回転を割り出しているため(モデルの足の長さにも依存する)、完全に正しい位置にはならないのでご了承下さい。

[△] プリセットモーション再生で表情がおかしい/意図したものと違う。[ver.1.3 にて、不正値(0)や競合を除外する仕組みを導入]
ブレンドシェイプの設定を独自カスタマイズしている場合、名前や設定値によって上手く機能しない場合があります。特に各ブレンドシェイプの値に0を設定すると、常に無効化する挙動となり、不具合になるようです(例えばBLINK:「目を閉じる100%に目を開く0%」設定と、NEUTRAL:「目を開く100%に目を閉じる0%」設定を定義すると、互いに打ち消し合いタイミングによってはおかしくなる、等)。
利用するブレンドシェイプの検出や注意点などについては「プリセットモーションと表情(VRM のブレンドシェイプ)の対応について」を参照して下さい。

[×] モデルの一部のテクスチャが読み込まれない。テクスチャが破綻している。360度画像が読み込まれない。
アプリでは特に素材のサイズ制限を設けてないため、巨大な 360度画像、GLTF/GLB などで大きなテクスチャを使っているものなどがロードされている、VRoidHub連携で大量のサムネイルをロードしているなど場合、メモリ不足で後から読み込んだ素材がロードできない場合があるようです(エラーは出ないで、一部が欠けてしまう、見た目がおかしくなる。または無視される等)。その場合は素材のサイズを小さくするか、または一旦アプリを終了し、他のアプリなども落としてメモリを確保してから試してみて下さい。特にスマホはPCよりもメモリが小さいことが多いため、ものによっては読み込めない場合もあります(スマホの場合、デフォルトでディスプレイが高解像度になってる事が多いので、解像度を下げることでメモリ確保や描画速度を軽くする方法もあります)。特に PC 用の360度画像はとても高い解像度になってる場合があるため、3840x1920以下に縮小して使うとロードしやすくなります。

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

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

[×] アプリの VRoidHubパネルとブラウザの VRoidHubページ(Web) で同時に操作してたら、次のリストボタン「See more」押下でリクエストされたまま(アプリは動いているが、戻って来ない)になった。
→ アプリとブラウザで同時に操作すると、サーバとのデータ不整合が起こる場合があります。なるべくリストをリロードして情報を同期して下さい。

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

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

UniVRMで使えるシェーダー

[×] GLTF/GLB でロード成功してるのに、表示されない
モデルによっては3Dグラフィックの品質を低く設定していると表示できない場合があります。その場合は「画面の設定」から、品質 (Quality) を [Very High] または [Ultra] に設定してみて下さい。

[×] GLTF の zip でロードでテクスチャが正しく表示されない
→ 利用している GLTF のローダー(パーサー)の不具合のようです。zip を解凍して、.gltf をロードしたら、正常に表示されることがあります。汎用フォーマットは様々なツールで作成されるため、どうしても完全互換とは行かないことをご了承下さい。

[△] GLTF/GLB を v1.10以降でロードすると、色が白っぽくなったり、黒っぽくなったりする
→ GLTF/GLB ローダーとして利用している UniVRM のベースカラーの変換挙動が修正されたため、当アプリの v1.9以前と v1.10 で色が異なってしまう現象が起きています。
ライブラリ提供元にイシューを立ててあるので、今後修正が入るか、何らロードオプション機能を追加しようかと考えてします。しばらくお待ち下さい。

UniVRM0.54以降でGLTF/GLBをロードすると、白っぽくなったり、黒っぽくなったり、見た目が以前と異なってしまうものがある

[△] GLTF でアニメーションが上手く反映されない、点滅する
→ 原因はわかりませんが、ものによっては上手くアニメーションができない(動いてはいるが、なぜかチラつく)ことがあるようです。この辺りの機能は内部ライブラリである UniVRM に完全に依存してしまっているので、今後のバージョンアップに期待するしかありません。

[-] GLTF/GLB で遠くにある背景が表示されない
→ アプリではレンダリング速度を上げるため、一定以上距離があるオブジェクトがクリッピングされます。基本的には背景オブジェクトの大きさによって変化しますが、最大は 1000m までになっています (1km先のオブジェクトまで、全てレンダリングするのはとてつもなく負荷がかかるため)。背景ドームテクスチャなどが表示されない等の場合は、原点から半径 1000m 以内に配置・リサイズ等すれば、表示できます。

[×] 音楽ファイルがエラーで読み込めない
→ ファイル名に記号が入っているとき、読み込みに失敗することがあります。その場合は記号を削除(リネーム)すれば、読み込めるようになります。内部のフォーマットが対応できない場合は読み込めません(他のフォーマットに変換すれば使える場合もあります)。

[×] mp3 を読み込もうとするとエラーが出る。
mp3 の再生は、実際には mp3 → wav に動的に変換して再生してます。そのため、変換に失敗した場合は利用できません(何らかのバイナリデータが不正である可能性があります)。その場合は、変換ツールなどで保存し直すと使える場合もあります。

[△] [CapsLock]が効いてない
→ [CapsLock]はアプリからフォーカスが外れて変更されると、上手く認識できない場合があります。その場合は、再度[CapsLock]をオフ→オンなどしてみて下さい。

[×] 移動・回転・遠近の第2キー[C][D] を押しながら、速度リスト押下中#2 [RightShift] が効かない
→ Unity もしくはキーボードの仕様なのか、3つ以上のキーが認識しない組み合わせが存在するようです。
いずれ、キーボードの設定もゲームパッドの設定のように割り当て変更できるようにしようと考えているので、お待ち下さい。

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

[-] サイドパネルに表示されている「モデル情報」とVRoidHubパネルの「利用条件」に表示されているライセンス情報が違う
→ サイドパネルに表示されている情報は基本的に VRM モデルに埋め込まれているメタデータが表示されます。ただし、VRoidHub からロードしたモデルの場合、メタデータが空 or デフォルトになっている項目を VRoidHub に登録されている情報で補完します(その場合、[*VRoid Hub] が付きます)
 VRoidHubモデルの場合、詳細画面(利用条件)に表示されるライセンスは「追加ライセンス」となるため、パネル上では各種の「その他の条件」のリンクから確認できます。また特定のキャラクターライセンスなど(例:ユニティちゃんライセンス)も「その他の条件」に設定されていることもあるので、必要であればリンク先を確認して下さい。

[-]「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 倍くらいが丁度良いことが多い)。再生速度はファイル名ごと(フォルダ名を含まない)に記憶されるので、ちょうど良い値を見つけておけば、いつでも再現できるようにしてあります。

※また、v1.18 にて、オリジナルライブラリ(UniVRM)のBVHパーサ部分に手を加え、再生速度の誤差精度を1フレーム:1/1000 → 1/10万 まで向上させています(単純計算では5時間再生し続けて約0.1秒遅延する。よって 2~4分の曲なら、ほとんど認識できない)。こちらをお使い下さい。

[○] 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個のローカルキャッシュを保持しています。これは利用頻度の高いモデルを何度もダウンロードしないようにするためです。キャッシュが無効になった時点で新しいバージョンがダウンロードされます(→ 内部 SDK のアップデートにより、自動的に最新版がダウンロードされるようになりました)。

[○] シェーダーの Fade モードが反映されなくなった? [ver.1.0 にて Fix]
→ GLTF を読み込んだ際に Fade モード(アルファで透明になる素材)が反映されてないことを確認しています(0.87~0.99β)。この問題は v1.0 以降を利用することで解消されます。

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



[○] VRoid Hub の Group を開くと「403 Forbidden」が出る。 [v.1.6 にて Fix]
→ Group 機能は登録した時点の情報が保存されています。登録されているキャラクターが更新された場合、サムネイルが古いものを参照している場合があります。まだサーバー(Hub)に残ってる場合は問題ありませんが、削除(参照不可)されている場合エラーが出るようです(白い画像になっている)。その場合はリロードボタンを押すか、クリック可能なら(「削除された」エラーが出ないなら)詳細画面の表示で更新されます。
 v1.6 にて、「403 Forbidden」が出たときは、VRoidHubから最新情報をダウンロードし、サムネイルキャッシュを自動更新するようにしました(1回のみ)。キャッシュが原因でない場合、サーバーからモデル自体が既に削除されている可能性があります。

[○] VRoid Hub の All タブでキャラが重複して表示される [v.1.6 にて Fix]
v1.6 にて不具合が確認されたため、修正を入れました。






(関連記事)
【VRMLiveViewer】VRM(VRoid)をライブステージで踊らせるアプリを作ってみた
【VRMLiveViewer】補足説明
【VRMLiveViewer】バージョンによる差異について
【VRMLiveViewer】更新履歴(アップデート・修正情報)
【VRMLiveViewer】背景GLTFの設定リスト(使用例)
【VRMLiveViewer】【Unity】GLBで背景モデルを自作する


関連記事
スポンサーサイト



category: アプリ

thread: ソフトウェア開発

janre: コンピュータ

tag: VRMLiveViewer 
tb: 0   cm: --


トラックバック

トラックバックURL
→http://fantom1x.blog130.fc2.com/tb.php/360-e5768ed5
この記事にトラックバックする(FC2ブログユーザー)

プロフィール

Social

検索フォーム

全記事一覧

カテゴリ

ユーザータグ

最新記事

リンク

PR

▲ Pagetop