Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

UnityのスタンドアロンアプリでVRMアバターを入出力するとglTFのマテリアル情報の一部が欠損する #1406

Closed
kuni-0930 opened this issue Dec 6, 2021 · 2 comments
Labels
bug Something isn't working
Milestone

Comments

@kuni-0930
Copy link

環境情報

  • UniVRM version: 0.88.0
  • おそらく0.90.0でも同様
  • Unity version: Unity-2019.4.20f1
  • OS: Windows 10

バグについて

  • バグの内容
    UnityのスタンドアロンアプリでVRMアバターを入出力するとglTFのマテリアル情報の一部が欠損します。
    具体的に見つかったのはemissiveFactor等です。
    VRMアバターをglbにしてJSONを読むと該当項目がありませんでした。
    ブレークポイントで追ってみるとUniGLTFのImporterContextのLoadAsyncをした時にUnityのGameObjectに変換しているようで、その時にGLTF情報を失っているようにみえます。

VRM_SamplesのRuntimeExporterSampleで出力したVRMアバターも同様でした。
よく解っていないのですが #1214 も関係あるのでしょうか?
仕様な気もするのですが対処法がありましたら教えてください。
例えばロード時にglTFマテリアルの情報を保存しておいて、セーブ時にマテリアル情報を上書きする方法などありますか?
よろしくお願いします。

vrm_avatar_gltf_material_info.txt

  • スクリーンショット
  • 再現方法
  • エラーの発生するファイル(ここに貼り付けても差し支えの無いもの)
@kuni-0930 kuni-0930 added the bug Something isn't working label Dec 6, 2021
@ousttrue ousttrue added this to the v0.92 milestone Dec 9, 2021
@Santarh
Copy link
Contributor

Santarh commented Dec 9, 2021

報告ありがとうございます。

結論から言うと、添付のファイルを見る限り、これは UniVRM の仕様だと考えます。

添付の vrm_avatar_gltf_material_info.txt を見ると、入力のマテリアルは KHR_material_unlit 拡張が付与されています。
これにより glTF の仕様 に従って baseColor 以外のプロパティをすべて無視して読み込まれます。
つまり、読み込み先の Unity の Material は emissiveFactor の情報を含みません。
したがって、その Material を出力しても emissiveFactor は存在しません。

glTF の表現は Unity での表現と 1:1 で対応するわけではありません。
Import して生成される GameObject は「glTF ファイルそのもの」ではなく「glTF ファイルを Unity に Import したもの」になります。
これは例えば、画像編集ソフトにおける画像フォーマットの関係と同様かなと思われます。
入出力を繰り返したときに、正常な挙動の範囲外の細かな情報に関しての冪等性は保証しません。
したがってこの挙動は仕様であると考えます。

glTF を glTF のまま操作したい場合は、Unity 内での表現を経由しないことが望ましいと思われます。

@kuni-0930
Copy link
Author

ご回答ありがとうございます。
やはり仕様ですか。
その動作を踏まえて検討していこうと思います。
ありがとうございました。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
bug Something isn't working
Projects
None yet
Development

No branches or pull requests

3 participants