-
Notifications
You must be signed in to change notification settings - Fork 1.1k
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
Adding a KHR_animation2 extension #2033
Conversation
Update from Khronos
KHR_materials_transmission
KHR_materials_thickness
Upate to latest glTF
Update to latest version.
Latest changes.
Updated to latest changes
Latest updates by Alexey
If a minimum set were defined, I'd suggest it be much shorter than the "valid targets" list. The list is there to put an upper bound on the implementation complexity – that upper bound is still quite high. In an ideal world with perfect foresight, this extension would have been part of base glTF 2.0 and new extensions (like punctual lights) would simply opt-in to which of their properties could be animated. I see this extension's goal as setting that baseline now. It would be nice if existing extensions (e.g. KHR_lights_punctual) could be grandfathered in somehow without entirely new extensions. |
Would this mean that for every "animation extension - existing other extension" pair, there needs to be a separate "other extension _ animation" extension to cover which values are animated? Or would the goal be to retrospectively state for each other extensions which values can be animated? Alternative would be to have this extension here specify something like
for the current set of KHR extensions. Otherwise it feels like this is running into undefined behaviour pretty much immediately... for example, animating texture transforms is what I was most looking forward to from an animation extension. But now contrary to my understanding it doesn't sound like that is covered at all. Another example would be animating emission strength: I think it would just be natural that viewers who support both KHR_animation2 and KHR_emissive_strength support animating emmisive strength, spec or not. If that isn't written anywhere it's just "random/undefined" though and nobody can rely on it. (side note for reference, USD simply allows animating everything... not sure if that was looked into as part of this proposal) |
No — or at least I'm hoping not. Adding an "animation" appendix to ratified extensions does not seem crazy to me, nor does adding an appendix to this extension clarifying behavior for all previously-ratified extensions. Future extensions should probably specify animation-ready properties, perhaps just as a general statement and not specifically bound to
USD permits a lot of things that will not work outside its own runtime; it isn't a portable runtime format in that sense. It is focused on not losing an ounce of authoring data, as an interchange format understandably would be. In my opinion, it's better to set some upper bounds on complexity for clients. Animation that requires restructuring a glTF file or recompiling shaders is probably a bad thing, and the work of avoiding this should fall more on authoring workflows than on clients. That said, the lack of a practical "update" path for glTF extensions is a particular obstacle in the case of animation. The burden of defining a list of animatable properies perfectly, on the first try, is not a desirable design constraint. 😕 |
Hmm, maybe we add all current KHR_* extensions and mention, what property is animatable or not. |
An example of how I think this could look:
KHR_draco_mesh_compression
@UX3D-nopper I could offer to complete the list above if that's helpful? |
Please and do not forget to add your name! |
I think a list like that would be a good thing — wherever it ends up being located. The choices above look very reasonable to me. Thanks! |
I mean the goal is to get this forward and that things have beend dicusses and prepared. If this is final, you never know. |
Also added an example for animating KHR_texture_transform.
Think I got them all - Independent of what the wording is going to be (e.g. "recommended", "required", "optional") it's actually pretty helpful to have this as list. |
…ties Added all current KHR extensions and their animatable properties.
Two questions, and I apologize if either of these have already been covered here:
|
Regarding 1: Regarding 2: |
Suggestions from today's call:
|
Thank u |
The material extensions are using The suggestion was |
Ah, OK, |
The
I just looked at the latest README.md, and apparently, node rotations are (right now) the only case where a quaternion is animated. But I assume that the slerp-interpolation should always be used when interpolating a quaternion. This might warrant adding a hint in the README.md as well, maybe somewhere near https://github.com/KhronosGroup/glTF/blob/a70e8b5e7055d4d48219311362e1596d438c9390/extensions/2.0/Khronos/KHR_animation2/README.md#json-pointer, which currently says
and could be extended with
(If this is considered to be relevant, I can also put it into a PR) An aside: I'm still a bit surprised that setting/adding
This is related to KhronosGroup/glTF-Validator#172 (where the |
I can confirm that adding enum values does not violate JSON schema, because of the foresight of including the catch-all As for the validator's current warning, note that it is indeed just a warning ( However, I do think it wise to require this extension be listed in both |
The current specification also includes another carve-out for extensions: A bit of a semantic question about how |
The |
The context: #899 (comment) This certainly makes sense (and is valid) on the schema level. But I wondered about this on the level of validation. Just to confirm: I assume that it is not intended to add |
This has to be right. We can't modify the core spec. That said, I'm not sure if it's possible to augment the schema for this enum (e.g., such that vscode will be able to show them). |
Correct, it cannot go in core schema, only the extension. VSCode has always needed a transformed copy of the glTF schema, for a number of reasons including enum/extended descriptions and direct hookup of various extension schemas into core. There's a script that automates this process. Once we see some implementations embrace this extension, I'll probably update that script to inject the new enum value, making it available to VSCode autocomplete/tooltip users. I'm sure a future version of the validator will issue a warning if some user selects the new enum value without applying the extension that enables that value. |
Continued in #2147 |
No description provided.