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

Support exporting texture as jpg #245

Closed
yamayuski opened this issue May 16, 2019 · 5 comments
Closed

Support exporting texture as jpg #245

yamayuski opened this issue May 16, 2019 · 5 comments
Assignees
Milestone

Comments

@yamayuski
Copy link

return new BytesWithMime

現在の UniGLTF 実装では、全てのテクスチャを png として出力していますが、アルファチャンネルを利用していないテクスチャを jpg として出力することで、 VRM ファイルの容量を削減出来るのではないでしょうか。

例えば ニコニ立体ちゃん (VRM) は 10,462 KB のうち 5,038 KB と約半分がテクスチャです。

テクスチャ出力の際、全てのピクセルでアルファチャンネルを利用していないか確認するか、 NormalMap や Emission など、アルファチャンネルが利用されないことが判明しているテクスチャを自動的に判別し出力時に変換することで、 VRM ファイルサイズを小さく抑えることが出来るのではないでしょうか。

例に挙げたニコニ立体ちゃんを純粋に全て jpg 85% に変換した所、合計 916 KB と約 18% まで削減することが可能でした(サムネイル用画像が 1.5 MB もあるのが問題な気がしますが)。

実際はアルファチャンネルのあるテクスチャが多いためここまでの削減率にはならないと思いますが、ご検討いただければと思います。

@saturday06
Copy link
Contributor

非可逆圧縮を使うなら、最近glTFに入ったWebPテクスチャの拡張に乗っかるのもアリだと思います。
https://github.com/KhronosGroup/glTF/blob/05e819829fb9aae5a2f614daa37cb7c01ba32718/extensions/2.0/Vendor/EXT_texture_webp/README.md

また、NormalMapなどのRGB三原色では無い値を格納しているテクスチャに対して jpg など画像用の非可逆圧縮をしてしまうと、テクスチャーの表示が歪む事象が発生するので、それらの圧縮は可逆圧縮を使うような工夫が必要になると思いました。

@hiroj
Copy link
Contributor

hiroj commented May 16, 2019

WebPはアルファ付きで圧縮率も良さそうなので検討してみます

@esperecyan
Copy link

PNGのエクスポートについてですが、テクスチャの設定でAlpha SourceがNoneになっている場合は、アルファチャンネルを含めずに24bitでエクスポートできないでしょうか。できれば元のPNGファイルのbit数に応じて、エクスポート時のPNGのbit数が変わればと思います。

@esperecyan
Copy link

UniVRM-0.55.0現在、サムネイルがPNGの場合、サムネイルファイルがそのままエクスポートされます。

  • ファイル容量の肥大化
  • エクスポートに時間がかかる

再圧縮による上記の問題を回避するため、同じようにすべてのテクスチャで再圧縮しないようScripting Define Symbolsなどで切り替えられるようにすることはできないでしょうか。

@hiroj hiroj added this to the v0.57 milestone Jun 1, 2020
@hiroj hiroj modified the milestones: v0.57, v0.56 Jun 15, 2020
ousttrue added a commit to ousttrue/UniVRM that referenced this issue Jun 15, 2020
@hiroj
Copy link
Contributor

hiroj commented Jun 16, 2020

EditorExport時にAssets以下にjpgが存在していた場合はそれを書き込むように変更しました。
メタのサムネイル画像も同様にjpgを設定して出力を行うとjpgで出力されるようになります。

@hiroj hiroj closed this as completed Jun 16, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants