vrm-c / vrm-specification

vrm specification
237 stars 37 forks source link

テクスチャ圧縮の検討について #63

Closed iCyP closed 4 years ago

iCyP commented 4 years ago

手元で試したことを共有します。 リソース:Vroid モデル1体分に含まれるすべてのテクスチャ(png)の一括変換(法線マップ・透過画像も含まれる 試したこと:

結果 ファイル数:46

フォーマット フォルダサイズ(MB) zipped(MB) 対応するgltf拡張
png(ソース) 20 20 デフォルト
jpeg 1.93 1.58 デフォルト
BMP 156 17 なし
BC3 52 7 MSFT_texture_dds
BC7 52 20 MSFT_texture_dds
KTX 117 15 なし。2はフォーマットがDraft13@2019-11-13
webp 0.8 0.7 EXT_texture_webp
basis 1.6 1.6 まだないっぽい

webpはBlenderで読み込めないのと手元でガッとやれるツールが見つけられなかったので無いです(ないです imagemagicを思い出したので追記しましたが、サムネを比べる限り正常に動いているようですが、可逆非可逆込みでオプションがわかってない上にエラー吐いてるのに出たバイナリなのでよくわかりません(でも圧縮率がえぐい) でもWebPはBlenderで現状IO出来ないので入れてほしくないです(強願望)

さらに以下より追記:basis これもコマンドラインやドキュメントのオプションでエラーが出るので無オプションです。 https://github.com/vrm-c/vrm-specification/issues/63#issuecomment-561554384

参考になれば幸いです。 p.s.

iCyP commented 4 years ago

webPを追記しました

m-sigepon commented 4 years ago

圧縮テクスチャは、モバイルでGPUで扱えるフォーマットが重要になると思います。 また、アルファチャンネルを扱えるフォーマットもベースとなると思います。 GLTFをベースにしている上では、Basis Universalの採用が最良かと思われます。

Google and Binomial Contribute Basis Universal Texture Format to Khronos’ glTF 3D Transmission Open Standard https://www.khronos.org/blog/google-and-binomial-contribute-basis-universal-texture-format-to-khronos-gltf-3d-transmission-open-standard

Unityで、JPGとKTX 2.0 Basis Universalの1024x1024の画像をアプリのメモリが無くなるまでデコード/トランスコードして読み込んでいる比較している動画です。 https://www.youtube.com/watch?time_continue=4&v=sYzkwQvaFSc&feature=emb_title

iCyP commented 4 years ago

basisの実行結果を追記しました

hiroj commented 4 years ago

返答大変遅くなって申し訳ありません。 詳しく調査して頂きありがとうございます!すごく助かります。 WebPに関してはUnityでもIOが困難なため、MSFT_lod( #74 )と同様にアプリケーションがハブサービスにWebP変換を要求した場合にだけ入手出来るものとし、 ユーザが手元の環境でWebPを取り扱うことは考慮しなくて良いかなと思いました。(同様にAndroidであればASTCにするなど) KTX 2.0 Basis Universalは良さそうですが、まだgltf拡張(KHR_image_ktx2?)が開発中になっているためspec1.0に取り込むのは難しい気がしてます。 https://github.com/KhronosGroup/glTF/blob/master/extensions/README.md

0b5vr commented 4 years ago

ひとまず、本件はglTF側で進行している・すでに存在する拡張群で解決が可能なトピックとなりますので、VRMのチームで検討すべき事柄ではないかなと思いますが、いかがでしょう。

0b5vr commented 4 years ago

一旦VRMの仕様としては圧縮テクスチャについて言及をすることはしない方針とします。