-
Notifications
You must be signed in to change notification settings - Fork 38
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
material の emissiveFactor が HDR Range の値を扱えるように拡張する定義の提案 #213
Comments
以下のコメントでは、追加のプロパティを KhronosGroup/glTF#1083 (comment) 個人的には、提案のようにオーバーライドするのが仕様としては扱いやすそうと思っていますが、 |
オーバーライドする形の提案を行ったのは、仕様の明快さ、そして Exposure などの累乗計算での浮動小数点数の計算誤差を嫌ったためです。 また HDR Color を 現状の UniVRM の Exporter 実装は RGB コンポーネントの最大値で割るという実装になっていて、色味が保持できそうですね。 |
@fms-cat こちらの Issue ですが、既存の VRM 0.x MToon を表現するのに必須の拡張となっています。 したがって、議論を Future から戻していただけると嬉しいです。 |
技術委員会で議論を行いました。
また、拡張はMToonだけでなく他のマテリアルにも適用することができるものとする方針です。 |
これは UI で値としては残らないらしい。仕様作ります。 |
選択肢として
がありました。相談して後者を取らせていただきました。
等の確認をよろしくお願いします。 |
要旨は #280 で達成されました。クローズします。 |
前説
VRM の Material 定義は glTF 2.0 の Material 定義に依存しています。
したがって以下の
material.emissiveFactor
の制約にも依存しています。https://github.com/KhronosGroup/glTF/tree/master/specification/2.0#materialemissivefactor
ここでいう制約とは次の文、つまり要素のとりうる値を
[0, 1]
に制約するというものです。実際に、この制約を満たすための UniVRM 実装は以下の PullRequest で行われています。
vrm-c/UniVRM#102
ここまでが、前提の話です。
問題の提起
実際的なユースケースにおいては
emissiveFactor
の要素の取りうる値は1
を超える場合が多いと思われます。したがって glTF 2.0 の
[0, 1]
への制約はかなりの表現力制限となってしまいます。実際に glTF 2.0 の specification に対する issue としても、以下で議論されています。
KhronosGroup/glTF#1083
しかしこの議論の争点にあるように
1
を超える値を扱うには「それが何のパラメータであるかの単位」を明確に定義しなければならず、波及するポイントが多岐にわたります。この懸念については私も同意するので glTF 2.0 への導入はいまのところ不可能だと考えられます。
ただしそういった懸念を考えてもなお、 VRM というスコープにおいては
emissiveFactor
が1
以上の値を取ることは必須であると考えます。なぜなら VRM は Toon つまり単位が明確ではない NPR 表現を定義にすでに含有しているからです。
また、実際に現在作られている VRM の作成例にも
emissiveFactor
が1
以上の値になっているマテリアルのアバターは多いと思います。したがって、以下のような定義を提案します。
提案
material
に対する拡張VRMC_materials_hdr_emissiveFactor
内包するプロパティ
number[3]
VRMC_materials_hdr_emissiveFactor
が存在するときに期待する動作material.emissiveFactor
を上書きする形で解釈・インポートするThe text was updated successfully, but these errors were encountered: