VRM-Addon-for-Blender
VRM-Addon-for-Blender copied to clipboard
Feature request / 要望: FB_ngon_encoding implementation
Is your feature request related to a problem? Please describe. / バグじゃないけどアドオンの動作でなにか困ってることがあれば
FB_ngon_encoding 実装による、nGonの入出力の限定的サポートの提案です。
- 概要:入出力時の頂点インデックスの構成トリックによって、nGon(多角形)の入出力をサポートします。 トリック(と拡張の宣言)のみに依存するので、拡張実装の有無に関わらず表示できます。また、ファイルサイズもほぼ変わりません(拡張宣言の文字数分だけ増える) デメリットとして、扇状の分割を強制されるので、現状のtriangulateに比して、非対応環境での変形時の表示が汚くなります。また、凹を含む多角形をうまく扱えません。(表示はできるが見た目が壊れる また、そもそも拡張自体が提案状態のまま放置のものです。
2.実装概要:
- 出力時:nGonを特定の1点を1番目の頂点とする扇状の三角形として出力する。なお、分割前の連続するポリゴンは1番目の頂点番号が違うように出力しないといけない。
- 入力時:meshのextensionsにFB_ngon_encodingが存在する場合、連続した1番目の頂点が同じポリゴンを一つの多角形として構成する。
IO実装 ※レガシーIOのみの対応です。 9099d39
Ref:
- FB_ngon_encoding の提案 https://github.com/KhronosGroup/glTF/pull/1620
- その仕様 https://github.com/KhronosGroup/glTF/pull/1620/commits/c35ba7fe5c9f49064532f693e46690f8669a0f9d
現在の実装の問題点: 多角形が凹形状を含む場合、表示(ポリゴン構成が)壊れる。ex: https://github.com/KhronosGroup/glTF/pull/1620#issuecomment-806001170
Additional context / なんかほかに書きたいことがあれば
あくまで提案なので、扱いは煮ても焼いても生ゴ*でも良いです。本体アドオンを使っていく方針からは離れる提案なので特に。 なお、公式アドオンでは一時期対応していたようですが、アップデートで再び未対応となってから長い模様です。 https://github.com/KhronosGroup/glTF-Blender-IO/pull/622
ありがとうございます!
エクステンション無し状態と互換性あるならマージしちゃいたいところですが、ぼくの手元の購入したモデルなどでのテストデータの確認で時間かかってしまうかもです。
TODO:
- 凹型四角形を認識し、扇状分割が可能な頂点を起点に分割する
- N>4のN角形でもそれをやるかを検討する。Blenderの旧実装では三角形にしてしまっていた
いったんエクスポートを設定で有効にできるようにしました。 https://github.com/saturday06/VRM_Addon_for_Blender/releases/tag/2_3_29