-
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
KHR_XMP #1553
KHR_XMP #1553
Conversation
Some quick thoughts:
{
"meshes": [
{
extensions : {
"KHR_XMP": {
"dc": {
"contributor" : [ "Creator1Name", "[email protected]", "Creator3Name<[email protected]>"],
"coverage" : "Bay Area, California, United States",
"creator" : [ "CreatorName", "[email protected]"],
... the colon is more of a XML convention, I believe. Are colons a problem in js property names ? Probably not, but unusual.
|
Assuming the DC namespace is sufficient for this extension (seems likely, but let's allow a little time for more feedback) I think that renaming the extension to In my opinion, this extension should follow the pattern of
If we're specifying attachment points here, |
Following our recent discussions on extension design, I'd suggest against using nested objects. |
I think nodes as a grouping mechanism would definitely benefit from being targeted. In fact, everywhere where extras is allowed this extension could apply. Otherwise, extras may be used instead by authors. If attributing many meshes or images or materials is a concern, then being able to reference the same set of metadata becomes necessary. Perhaps by a short name rather than index but this is not important. |
@andreasplesch @donmccurdy: I think restricting the extension makes sense if we only care about dc. I think we should talk more about this though. I wish I could cherry-pick properties from different namespaces (for instance, referencing the comment above, drop @donmccurdy I am concerned about potential repetitions as well. Adding an indirection as you suggested could help. I almost wonder if we should take all these XMPs out of the json and place them in a buffer, worth considering? |
Some random thoughts, take or leave:
|
The problem with cherry-picking properties from namespaces or within a namespace is that the extension becomes decoupled from XMP. It becomes questionable to even keep XMP in the extension name as it would be just XMP inspired. But perhaps a home grown metadata system is what is best suited. From what I read on XMP, there are general requirements for XMP conforming file readers and writers. For example, custom properties need to be allowed and preserved when writing back a file with embedded XMP. One idea of XMP seems to be that it should be possible to use a generic XMP reader to extract metadata from a file (a jpg or pdf), perhaps after some preprocessing. This is rdf based, and there is a rdf json encoding: https://dvcs.w3.org/hg/rdf/raw-file/default/rdf-json/index.html . But JSON-LD seems to supercede rdf-json. There is probably no appetite to explore RDF or JSON-LD. |
I side with @andreasplesch regarding cherry picking. Either we embrace XMP or we work on a simpler custom metadata extension. An in-between solution might bring more burden than good. My opinion is that there is value in aligning glTF metadata to XMP to avoid another custom metadata language (this way XMP metadata can be transferred to a glTF, can be read and interpreted in the same way as for other types of assets and can be passed around). |
I don't have experience with XMP. Would current XMP parsers/readers be able to read from JSON inside the proposed extension here? |
https://www.adobe.com/products/xmp.html is the main portal for XMP. That would be a question for the XMP community. There is a seemingly inactive forum and a SDK which is probably used by most XMP using applications. To me it looks the SDK is XML focused but the standard separates an abstract data model from serialization. meaning there is an opening for JSON serialization. |
Some more digging found exiftool at https://sno.phy.queensu.ca/~phil/exiftool/ and https://github.com/mattburns/exiftool.js which apparently is popular metadata parser, and can deal with XMP. |
no current XMP parsers that I am aware of. But talking to the XMP community there appear to be an active effort to serialize XMP as JSON (ISO/PWI 16684-3). |
You probably noticed that we introduced a |
I'm still not sure I understand why the
If we go this route, consider |
@donmccurdy I am leaning towards opening up the specs to allow for any XMP namespace in glTF, not only
An alternative could be a custom metadata type inspired by dc and XMP (Andreas' comment). That would make the extension simpler and the interop with XMP harder.
|
Ok, if there's a possibility of including other namespaces in this extension, then I have no problem with the As to whether we should allow any XMP namespace, that's pretty broad yes? Would we normatively reference the XMP spec? And what's the process by which XMP is updated over time? There is definitely a lot of possible XMP metadata with no bearing on a 3D model... I very much appreciate the prior work of XMP here, and I like the goal of striving for interoperability with it, but we should also recognize that the large majority of glTF i/o tools will not be bundling an XMP parser/writer, and simplicity has some value. :) I don't have that much preference between |
Using XMP as a normative reference would allow us not defining specific properties at all. glTF loaders should just skip those fields they don't understand (like |
Other defined XMP namespaces use more complex data types which would need to be converted to json. Ideally, this has been done elsewhere already but seems unlikely. Or the conversion could be left unspecified which would limit interoperability but may be ok within organizations. |
Hi @donmccurdy , regarding @andreasplesch I agree regarding type conversion. I took a look at the data types. Most of them can be boiled down to |
I think a KHR extension could just point to the relevant ISO standard so that updates are handled implicitly. Let's discuss it on the nearest call. |
extensions/README.md
Outdated
@@ -9,6 +9,7 @@ | |||
* [KHR_materials_pbrSpecularGlossiness](2.0/Khronos/KHR_materials_pbrSpecularGlossiness/README.md) | |||
* [KHR_materials_unlit](2.0/Khronos/KHR_materials_unlit/README.md) | |||
* [KHR_texture_transform](2.0/Khronos/KHR_texture_transform/README.md) | |||
* [KHR_XMP](2.0/Khronos/KHR_XMP/README.md) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Depending on when this pull request is merged, we might want to move this to the In progress Khronos and multi-vendor extensions section below - that way the PR can be merged before Khronos ratification is finished.
Please add the copyright appendix from the clearcoat extension, at the bottom with a link under the contributors. |
Hi @donmccurdy please let me know if this is sufficient bd4daa5 , thanks. |
I just opened a PR in the glTF-Sample-Models repository that contains a real-world example of the Damaged Helmet updated with KHR_xmp metadata. cc: @emackey as I know you were interested in looking at a real-world example. |
Closing in on complete clarity on preferences around Adobe/ISO linking following working group discussions today. Our two goals are:
If we link to Adobe XMP materials to avoid the ISO pay wall - would we reference the: GitHub repo: https://github.com/adobe/xmp-docs - which has a permissive outbound LICENSE.md which would seemingly let us fork a copy for stability - but... are we actually linking to the Adobe XMP spec (which is presumably the equivalent to the ISO spec): https://wwwimages2.adobe.com/content/dam/acom/en/devnet/xmp/pdfs/XMP%20SDK%20Release%20cc-2016-08/XMPSpecificationPart1.pdf The copyright notice on that spec prohibits reproduction and transmission - so we would not be able to fork/snapshot that spec without permission from Adobe after all? Finally, we need to be very precise on what sections of the Adobe materials we are normatively referencing to minimize patent licensing obligations when we ratify the glTF extension spec. Have we done everything we can to precisely define our normative links to be as narrowly defined as possible? |
On Wed, Jun 10, 2020 at 1:24 PM neiltrevett ***@***.***> wrote:
Closing in on complete clarity on preferences around Adobe/ISO linking
following working group discussions today. Our two goals are:
- to not link to specs behind pay walls
Given that many major international standards come from the ISO (eg. ISO
8601 - time & date formatting, ISO 10646 - Unicode, etc) and that those
are the documents that governments and regulated industries around the
world make official - this restriction seems pretty limiting to your
ability to develop a solution that will be adopted at the same levels of
compliance in those arenas.
- to snapshot our own copy of the referenced XMP spec for stability
and legal clarity
We can't do this for the ISO document (XMP Part 1), since that is not ours.
However, if this is a necessary requirement for other XMP documents, I am
happy to start the conversations with Adobe Legal to prepare the necessary
paperwork to grant you such permission. We have done so with other groups
for other documents.
are we actually linking to the Adobe XMP spec (which is presumably the
equivalent to the ISO spec):
https://wwwimages2.adobe.com/content/dam/acom/en/devnet/xmp/pdfs/XMP%20SDK%20Release%20cc-2016-08/XMPSpecificationPart1.pdf
That document is *NOT* identical to the ISO document. It was the document
that served as input to the original version of ISO 16684-1. However, the
final version of 16684-1 has numerous editorial improvements and the recent
dated revision (16684-1:2019) has technical changes not reflected in the
Adobe document.
Finally, we need to be very precise on what sections of the Adobe
materials we are normatively referencing to minimize patent licensing
obligations when we ratify the glTF extension spec. Have we done everything
we can to precisely define our normative links to be as narrowly defined as
possible?
This is another excellent reason to refer to the ISO documents, as they are
covered by the ISO IP policy and therefore there are no questions.
Leonard
|
Should we link to both, then? Even something like:
|
Hi @lrosenthol - firstly - thank you for all the great work you and and Adobe have put into the XMP spec - it is enabling - and we look forward to glTF becoming a part of the XMP family :)
Thank you for that clarity - which definitely changes the calculus - and I agree in that case we should reference the canonical ISO 16684-1:2019.
Khronos loves ISO! In fact we are working to bring glTF into a future PDF version :) I know from experience that we will get some push-back from the glTF community about the paywall - but it is just a minor irritant that we were hoping to avoid all other things being equal.
Agreed - the ISO license for XMP simplifies the patent license TO the glTF community. My comment was concerning the patent licensing FROM Khronos members. Links to external specs are considered normative when a Khronos specification is ratified under the Khronos IP framework - and so it is good practice to minimize Khronos member patent licensing obligations by precisely defining which sections of a external spec are being made normative - I want to check that we have gone through that exercise before we ratify. As an aside - whether we end up referencing the complete ISO spec, or sections of it, the good news is that the Khronos ratification will provide additional patent protection for usage of ISO 16684-1:2019 in the context of glTF. |
If there are differences between the two specs I don't think we should link to both - it would create obvious legal and technical confusion |
We should evaluate exact differences between Adobe and ISO published versions and see if those differences are relevant for glTF.
While the original ISO-branded PDFs are behind the paywall, nothing prevents Khronos (or Adobe) from making and publishing a Markdown gist (without copy-pasting ISO language) that contains all the technical information needed for community implementations. |
Interesting idea - we could include an informative link to the Gist in the spec - and would also help us clarify what sections of the underlying ISO spec need to be normative. @emilian0 what do you think? |
Hi @neiltrevett Thanks for bringing up the need for specifying which sections of external specs are normative, no I haven't gone through this exercise yet.
For each normative reference I can point to the ISO paragraph. @lexaknyazev @neiltrevett in regards to |
@neiltrevett @lrosenthol @lexaknyazev @donmccurdy |
@emilian0 For complete clarity we should include a statement: The referenced paragraphs of ISO 16684-1:2019 are normative and so are INCLUDED in the Scope of this Specification and may contain contributions from non-members of Khronos that are not covered by the Khronos Intellectual Property Rights Policy. The links to https://github.com/adobe/xmp-docs are purely informative and so are EXCLUDED from the Scope of this Specification, but are provided for convenience. The references to ISO 16684-1:2019 shall remain normative if there are differences to information provided at any informative links. If you agree I suggest we this either in the copyright / license header. |
Thanks @neiltrevett , updated at 8832254 |
@emilian0 could you rebase this PR and update the status in the spec? Thanks! |
@donmccurdy No need for rebase, right? Let's just merge it and then update the status. I'm not a fan of squash/rebase, it destroys the history of how things evolved. |
KHR_xmp draft.
TODOes (feel free to update the list):
asset
). -> under assetasset
is the place where to reference a packet that applies to the entire gltf.-> Talked to XMP chair regarding qualifiers, no need for adding them to the extension.