specVersionと仕様の互換性の関係を記載お願いしたいです
saturday06 opened this issue · comments
specVersionと仕様の互換性の関係を記載お願いしたいです。
例えばspringBoneのspecVersion==1.1で新たな形状のコライダーが追加されたとして、specVersion==1.0用のコードはそれを単に無視することでエラーを回避できると思います。しかし、例えばspringBoneのspecVersion==2.0でjsonの構造自体が変化した場合は、specVersion==1.0用のコードで扱おうとするとエラーになると思います。
現在BlenderのアドオンでVRM 1.0を読むコードを書いていて、その際対応しているspecVersionの範囲チェックを行いたいというモチベーションです。
個人的にはglTFのバージョン規則と同一にしてしまうのが良いと思います。
https://github.com/KhronosGroup/glTF/blob/757d942a89810840645e62254b09357dbf767fdc/specification/2.0/Specification.adoc#versioning
2.5. Versioning
Any updates made to the glTF Specification in a minor version MUST be backward and forward compatible. Backward compatibility means that any client implementation that supports loading a glTF 2.x asset will also be able to load a glTF 2.0 asset. Forward compatibility means that a client implementation that only supports glTF 2.0 can load glTF 2.x assets while gracefully ignoring any new features it does not understand.A minor version update MAY introduce new features but MUST NOT change any previously existing behavior. Existing functionality MAY be deprecated in a minor version update, but it MUST NOT be removed.
Major version updates MAY be incompatible with previous versions.
specVersionの運用について技術委員会で議論を行いましたが、具体的に明文化できるような方針を決めかねております。
したがってひとまずは、specVersionが 1.0
ではない値が確認された場合には、あくまで一例ですが、ユーザに対して「VRMを読み込むよう最大限度力はするが失敗する可能性がある」という旨をUI等で伝える、のような対応をお願いします。
承知しました。対応ありがとうございました!