<html><head><meta http-equiv="content-type" content="text/html; charset=us-ascii"></head><body style="overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div>In X_ITE I also create a WorldInfo, but parse only the toplevel metadata so far.</div><div><br></div><div>I like the way you described it, but why do you translate 'scene.extras' to 'scene_extras'? I would leave it as it is.</div><div><br></div><div>Holger</div><div><br></div><div>
<div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-align: start; text-indent: 0px; text-transform: none; white-space: normal; word-spacing: 0px; -webkit-text-stroke-width: 0px; text-decoration: none; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div dir="auto" style="text-align: start; text-indent: 0px; overflow-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;"><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; -webkit-text-stroke-width: 0px;">--</div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; -webkit-text-stroke-width: 0px;">Holger Seelig</div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; -webkit-text-stroke-width: 0px;">Leipzig, Germany</div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; -webkit-text-stroke-width: 0px;"><br></div><div style="caret-color: rgb(0, 0, 0); color: rgb(0, 0, 0); letter-spacing: normal; text-transform: none; white-space: normal; word-spacing: 0px; text-decoration: none; -webkit-text-stroke-width: 0px;">holger.seelig@yahoo.de</div><div>https://create3000.github.io/x_ite/</div></div></div></div></div></div></div>
</div>
<div><br><blockquote type="cite"><div>Am 09.10.2023 um 00:14 schrieb Andreas Plesch <andreasplesch@gmail.com>:</div><br class="Apple-interchange-newline"><div><div>glTF can contain rich metadata, on the toplevel and very targeted at<br>any sublevel.<br><br>At any level, there is an "extras" property which can contain any<br>value including objects with arbitrary key:value pairs.<br><br>At the toplevel, there is an asset object which has a set of defined<br>keys such as "copyright" (as well as its own "extras" property).<br><br>In addition to this unstructured metadata for core glTF, there is a<br>metadata extension for more structured metadata, extensible through<br>namespaces:<br><br>https://github.com/KhronosGroup/glTF/blob/main/extensions/2.0/Khronos/KHR_xmp_json_ld/README.md<br><br>There are many ways to map glTF metadata to X3D metadata. How should<br>we manage this ? It may make sense to coordinate systematic behaviour.<br><br>x3dom uses the WorldInfo node for toplevel metadata:<br>- asset object properties go into the info field as key:value string pairs.<br>- asset.extras go into a WorldInfo MetadataSet "asset_extras"<br>- scene.extras go into a WorldInfo MetadataSet "scene_extras"<br><br>In addition, "extras" at lower levels go into MetadataSets of<br>corresponding nodes, using the json value types for Metadata types.<br><br>How do other browsers translate "extras" ?<br><br>x3dom should also support the KHR_xmp_json_ld extension, by staying<br>very close and literal to the glTF data.<br><br>One feature of the extension is that sets (packets) of metadata are<br>defined once at the toplevel, and then referenced (instantiated) from<br>any other level. This seems to map well into DEF/USE. A large<br>"KHR_XMP_GLTF" root MetadataSet would contain all metadata and just<br>referenced by USE from Shapes/Material etc. I think this could work<br>well. I think json property names can become Metadata name values, and<br>json value types can be mapped into Metadata types.<br><br>If there have been thoughts or attempts to implement the glTF metadata<br>extension, any ideas or feedback would be great. Would it be useful to<br>start to think about a xml Metadata schema which follows the glTF<br>extension requirements and recommendations ? This may not be feasible<br>due to the extensible nature of the extension..<br><br>Cheers, Andreas<br><br>-- <br>Andreas Plesch<br>Waltham, MA 02453<br><br>_______________________________________________<br>x3d-public mailing list<br>x3d-public@web3d.org<br>http://web3d.org/mailman/listinfo/x3d-public_web3d.org<br></div></div></blockquote></div><br></body></html>