VRM-Addon-for-Blender icon indicating copy to clipboard operation
VRM-Addon-for-Blender copied to clipboard

Feature request / 要望: FB_ngon_encoding implementation

Open iCyP opened this issue 2 years ago • 3 comments

Is your feature request related to a problem? Please describe. / バグじゃないけどアドオンの動作でなにか困ってることがあれば

FB_ngon_encoding 実装による、nGonの入出力の限定的サポートの提案です。

  1. 概要:入出力時の頂点インデックスの構成トリックによって、nGon(多角形)の入出力をサポートします。 トリック(と拡張の宣言)のみに依存するので、拡張実装の有無に関わらず表示できます。また、ファイルサイズもほぼ変わりません(拡張宣言の文字数分だけ増える) デメリットとして、扇状の分割を強制されるので、現状のtriangulateに比して、非対応環境での変形時の表示が汚くなります。また、凹を含む多角形をうまく扱えません。(表示はできるが見た目が壊れる また、そもそも拡張自体が提案状態のまま放置のものです。

2.実装概要:

  1. 出力時:nGonを特定の1点を1番目の頂点とする扇状の三角形として出力する。なお、分割前の連続するポリゴンは1番目の頂点番号が違うように出力しないといけない。
  2. 入力時:meshのextensionsにFB_ngon_encodingが存在する場合、連続した1番目の頂点が同じポリゴンを一つの多角形として構成する。

IO実装 ※レガシーIOのみの対応です。 9099d39

Ref:

  1. FB_ngon_encoding の提案 https://github.com/KhronosGroup/glTF/pull/1620
  2. その仕様 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

iCyP avatar Apr 02 '22 12:04 iCyP

ありがとうございます!

エクステンション無し状態と互換性あるならマージしちゃいたいところですが、ぼくの手元の購入したモデルなどでのテストデータの確認で時間かかってしまうかもです。

saturday06 avatar Apr 03 '22 03:04 saturday06

TODO:

  • 凹型四角形を認識し、扇状分割が可能な頂点を起点に分割する
  • N>4のN角形でもそれをやるかを検討する。Blenderの旧実装では三角形にしてしまっていた

saturday06 avatar Apr 29 '22 07:04 saturday06

いったんエクスポートを設定で有効にできるようにしました。 https://github.com/saturday06/VRM_Addon_for_Blender/releases/tag/2_3_29

saturday06 avatar Jun 14 '22 14:06 saturday06