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

Feature request / 要望: FB_ngon_encoding implementation #101

Open
iCyP opened this issue Apr 2, 2022 · 3 comments
Open

Feature request / 要望: FB_ngon_encoding implementation #101

iCyP opened this issue Apr 2, 2022 · 3 comments

Comments

@iCyP
Copy link
Collaborator

iCyP commented Apr 2, 2022

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 の提案 FB_ngon_encoding extension. KhronosGroup/glTF#1620
  2. その仕様 KhronosGroup/glTF@c35ba7f

現在の実装の問題点: 多角形が凹形状を含む場合、表示(ポリゴン構成が)壊れる。ex: KhronosGroup/glTF#1620 (comment)

Additional context / なんかほかに書きたいことがあれば

あくまで提案なので、扱いは煮ても焼いても生ゴ*でも良いです。本体アドオンを使っていく方針からは離れる提案なので特に。
なお、公式アドオンでは一時期対応していたようですが、アップデートで再び未対応となってから長い模様です。
KhronosGroup/glTF-Blender-IO#622

@saturday06
Copy link
Owner

ありがとうございます!

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

@saturday06
Copy link
Owner

TODO:

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

@saturday06
Copy link
Owner

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants