ousttrue/UniGLTF

頂点属性の法線に不正な値(単位ベクトルでないベクトル)が設定される

Closed this issue · 5 comments

glTF Viewerで見たときにACCESSOR_NON_UNITというエラーが大量に検出されます。

VRoidが出力するVRMでは、UniVRMのバージョンが0.41だったときは発生せず、0.43になってから発生するようになりましたが、因幡はねるだとUniVRM-0.40で生成したものでは発生せず、UniVRM-0.41で生成したものから発生するようになりました(ただし現在ダウンロードできるファイルに含まれているのはUniVRM-0.40とUniVRM-0.42で生成したものです。UniVRM-0.41で生成したものはもう含まれていません)

正規化周りの修正の影響がありそうです。
法線計算後にnormalize追加を検討。

問題がないモデルを0.43でインポート→エクスポートしても問題は発生しなかったので、もしかしたらUniGLTFではなくツール側の問題かもしれません。

UniVRM-0.44_8a63.zip

v0.44を準備中です。
法線マップなどの入出力時のテクスチャ変換を改修しました。
お試しいただければと思います。

法線マップ関連の修正

  • エクスポートの法線マップのunpack処理(DXT5nmなど)
  • 入出力時のカラースペースへの配慮(sRGB, linear)
  • エディタインポート時の法線マップテクスチャアセットのTextureImporterのNormalMapフラグ付け
  • ランタイムインポート時の法線マップテクスチャのpack処理

前のバージョンでtangentを修正したのと合わせて法線マップ周りが改善されたと思います。

ランタイムの方は確認していませんが、エディタでインポートするとやはり"A Material is using the texture as a normal map."のエラーが出ました。[Fix now]で解消できるのも同じです。

UniVRM-0.44で修正