<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:Wingdings;
        panose-1:5 0 0 0 0 0 0 0 0 0;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoPlainText, li.MsoPlainText, div.MsoPlainText
        {mso-style-priority:99;
        mso-style-link:"Plain Text Char";
        margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-ligatures:standardcontextual;}
span.PlainTextChar
        {mso-style-name:"Plain Text Char";
        mso-style-priority:99;
        mso-style-link:"Plain Text";
        font-family:"Calibri",sans-serif;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
/* List Definitions */
@list l0
        {mso-list-id:1218662867;
        mso-list-type:hybrid;
        mso-list-template-ids:-1063476450 -1200991340 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
        {mso-level-start-at:0;
        mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;
        mso-fareast-font-family:"Times New Roman";
        mso-bidi-font-family:"Times New Roman";}
@list l0:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Symbol;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:"Courier New";}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="#0563C1" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoPlainText">Seems like an authoring-style preference but it actually has an interoperability consideration.<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">If these names might be used as DEF identifiers, then it turns out to be important to avoid using a dot (.) notation scheme.  That is because, when converted to equivalent ClassicVRML or VRML97, that character will thwart proper execution
 of ROUTE statement which use it.<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">X3D-Edit has option of appending Script nodes as part of a tracing feature, appending debug labels to DEF names for predictability while avoiding other name collisions.  Originally those were using "." to create new names, now using
 "_" as the connecting character.<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Have recently added warnings to X3D-Edit when “.” gets used.  Continuing, will further update X3D Tooltips, X3D Schematron QA, and X3D Tidy cleanups too.  Will further update our collected hints on these issues.<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<ul style="margin-top:0in" type="disc">
<li class="MsoPlainText" style="mso-list:l0 level1 lfo1">X3D Scene Authoring Hints: Naming Conventions<o:p></o:p></li><li class="MsoPlainText" style="mso-list:l0 level1 lfo1">https://www.web3d.org/x3d/content/examples/X3dSceneAuthoringHints.html#NamingConventions<o:p></o:p></li></ul>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">I think this consideration only applies to DEF names, not seeing any problem with Metadata node name fields.<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">all the best, Don<o:p></o:p></p>
<p class="MsoPlainText"><span style="font-size:9.0pt;font-family:"Courier New"">--
<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-size:9.0pt;font-family:"Courier New"">Don Brutzman  Naval Postgraduate School, Code USW/Br        brutzman@nps.edu<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-size:9.0pt;font-family:"Courier New"">Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA    +1.831.656.2149<o:p></o:p></span></p>
<p class="MsoPlainText"><span style="font-size:9.0pt;font-family:"Courier New"">X3D graphics, virtual worlds, navy robotics https://faculty.nps.edu/brutzman<o:p></o:p></span></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">-----Original Message-----<br>
From: x3d-public <x3d-public-bounces@web3d.org> On Behalf Of Andreas Plesch<br>
Sent: Monday, October 9, 2023 7:48 AM<br>
To: Holger Seelig <holger.seelig@yahoo.de><br>
Cc: X3D <x3d-public@web3d.org><br>
Subject: Re: [x3d-public] conversion of glTF metadata to X3D metadata</p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Hi Holger,<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Thank you for your feedback. I did not think too much about the name for the Metadata node which holds the scene.extras json value.<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">To me "scene.extras" is more of a programming convention whereas the value of a name string should be more abstract, or descriptive in a linguistic sense. So a dot would mean a full stop which would not make a lot of sense. But I can
 see that this is a rather aesthetic consideration, and that a direct json path style name has its own benefits by following very closely the glTF source..<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Let us know what you think,<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">Cheers, Andreas<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">On Mon, Oct 9, 2023 at 7:25 AM Holger Seelig <<a href="mailto:holger.seelig@yahoo.de"><span style="color:windowtext;text-decoration:none">holger.seelig@yahoo.de</span></a>> wrote:<o:p></o:p></p>
<p class="MsoPlainText">><o:p> </o:p></p>
<p class="MsoPlainText">> In X_ITE I also create a WorldInfo, but parse only the toplevel metadata so far.<o:p></o:p></p>
<p class="MsoPlainText">><o:p> </o:p></p>
<p class="MsoPlainText">> I like the way you described it, but why do you translate 'scene.extras' to 'scene_extras'? I would leave it as it is.<o:p></o:p></p>
<p class="MsoPlainText">><o:p> </o:p></p>
<p class="MsoPlainText">> Holger<o:p></o:p></p>
<p class="MsoPlainText">><o:p> </o:p></p>
<p class="MsoPlainText">> --<o:p></o:p></p>
<p class="MsoPlainText">> Holger Seelig<o:p></o:p></p>
<p class="MsoPlainText">> Leipzig, Germany<o:p></o:p></p>
<p class="MsoPlainText">><o:p> </o:p></p>
<p class="MsoPlainText">> <a href="mailto:holger.seelig@yahoo.de"><span style="color:windowtext;text-decoration:none">holger.seelig@yahoo.de</span></a><o:p></o:p></p>
<p class="MsoPlainText">> <a href="https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcrea">
<span style="color:windowtext;text-decoration:none">https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcrea</span></a><o:p></o:p></p>
<p class="MsoPlainText">> te3000.github.io%2Fx_ite%2F&data=05%7C01%7Cbrutzman%40nps.edu%7Ccf4f0e<o:p></o:p></p>
<p class="MsoPlainText">> 97804a4fcea0bf08dbc8d6f0b9%7C6d936231a51740ea9199f7578963378e%7C0%7C0%<o:p></o:p></p>
<p class="MsoPlainText">> 7C638324597718881372%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQI<o:p></o:p></p>
<p class="MsoPlainText">> joiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=EBmxnT<o:p></o:p></p>
<p class="MsoPlainText">> 5bwmCp5%2BnWcoTZT3ttFfXIWF8lNjsRGR0%2FupM%3D&reserved=0<o:p></o:p></p>
<p class="MsoPlainText">><o:p> </o:p></p>
<p class="MsoPlainText">> Am 09.10.2023 um 00:14 schrieb Andreas Plesch <<a href="mailto:andreasplesch@gmail.com"><span style="color:windowtext;text-decoration:none">andreasplesch@gmail.com</span></a>>:<o:p></o:p></p>
<p class="MsoPlainText">><o:p> </o:p></p>
<p class="MsoPlainText">> glTF can contain rich metadata, on the toplevel and very targeted at
<o:p></o:p></p>
<p class="MsoPlainText">> any sublevel.<o:p></o:p></p>
<p class="MsoPlainText">><o:p> </o:p></p>
<p class="MsoPlainText">> At any level, there is an "extras" property which can contain any
<o:p></o:p></p>
<p class="MsoPlainText">> value including objects with arbitrary key:value pairs.<o:p></o:p></p>
<p class="MsoPlainText">><o:p> </o:p></p>
<p class="MsoPlainText">> At the toplevel, there is an asset object which has a set of defined
<o:p></o:p></p>
<p class="MsoPlainText">> keys such as "copyright" (as well as its own "extras" property).<o:p></o:p></p>
<p class="MsoPlainText">><o:p> </o:p></p>
<p class="MsoPlainText">> In addition to this unstructured metadata for core glTF, there is a
<o:p></o:p></p>
<p class="MsoPlainText">> metadata extension for more structured metadata, extensible through<o:p></o:p></p>
<p class="MsoPlainText">> namespaces:<o:p></o:p></p>
<p class="MsoPlainText">><o:p> </o:p></p>
<p class="MsoPlainText">> <a href="https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgith">
<span style="color:windowtext;text-decoration:none">https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fgith</span></a><o:p></o:p></p>
<p class="MsoPlainText">> ub.com%2FKhronosGroup%2FglTF%2Fblob%2Fmain%2Fextensions%2F2.0%2FKhrono<o:p></o:p></p>
<p class="MsoPlainText">> s%2FKHR_xmp_json_ld%2FREADME.md&data=05%7C01%7Cbrutzman%40nps.edu%7Ccf<o:p></o:p></p>
<p class="MsoPlainText">> 4f0e97804a4fcea0bf08dbc8d6f0b9%7C6d936231a51740ea9199f7578963378e%7C0%<o:p></o:p></p>
<p class="MsoPlainText">> 7C0%7C638324597718881372%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiL<o:p></o:p></p>
<p class="MsoPlainText">> CJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=IX<o:p></o:p></p>
<p class="MsoPlainText">> 8lXkW3K1nuBhZaurJlA6Qz0Db%2BYqjj6bicwxDg4%2FM%3D&reserved=0<o:p></o:p></p>
<p class="MsoPlainText">><o:p> </o:p></p>
<p class="MsoPlainText">> There are many ways to map glTF metadata to X3D metadata. How should
<o:p></o:p></p>
<p class="MsoPlainText">> we manage this ? It may make sense to coordinate systematic behaviour.<o:p></o:p></p>
<p class="MsoPlainText">><o:p> </o:p></p>
<p class="MsoPlainText">> x3dom uses the WorldInfo node for toplevel metadata:<o:p></o:p></p>
<p class="MsoPlainText">> - asset object properties go into the info field as key:value string pairs.<o:p></o:p></p>
<p class="MsoPlainText">> - asset.extras go into a WorldInfo MetadataSet "asset_extras"<o:p></o:p></p>
<p class="MsoPlainText">> - scene.extras  go into a WorldInfo MetadataSet "scene_extras"<o:p></o:p></p>
<p class="MsoPlainText">><o:p> </o:p></p>
<p class="MsoPlainText">> In addition, "extras" at lower levels go into MetadataSets of
<o:p></o:p></p>
<p class="MsoPlainText">> corresponding nodes, using the json value types for Metadata types.<o:p></o:p></p>
<p class="MsoPlainText">><o:p> </o:p></p>
<p class="MsoPlainText">> How do other browsers translate "extras" ?<o:p></o:p></p>
<p class="MsoPlainText">><o:p> </o:p></p>
<p class="MsoPlainText">> x3dom should also support the KHR_xmp_json_ld extension, by staying
<o:p></o:p></p>
<p class="MsoPlainText">> very close and literal to the glTF data.<o:p></o:p></p>
<p class="MsoPlainText">><o:p> </o:p></p>
<p class="MsoPlainText">> One feature of the extension is that sets (packets) of metadata are
<o:p></o:p></p>
<p class="MsoPlainText">> defined once at the toplevel, and then referenced (instantiated) from
<o:p></o:p></p>
<p class="MsoPlainText">> any other level. This seems to map well into DEF/USE. A large
<o:p></o:p></p>
<p class="MsoPlainText">> "KHR_XMP_GLTF" root MetadataSet would contain all metadata and just
<o:p></o:p></p>
<p class="MsoPlainText">> referenced by USE from Shapes/Material etc. I think this could work
<o:p></o:p></p>
<p class="MsoPlainText">> well. I think json property names can become Metadata name values, and
<o:p></o:p></p>
<p class="MsoPlainText">> json value types can be mapped into Metadata types.<o:p></o:p></p>
<p class="MsoPlainText">><o:p> </o:p></p>
<p class="MsoPlainText">> If there have been thoughts or attempts to implement the glTF metadata
<o:p></o:p></p>
<p class="MsoPlainText">> extension, any ideas or feedback would be great. Would it be useful to
<o:p></o:p></p>
<p class="MsoPlainText">> start to think about a xml Metadata schema which follows the glTF
<o:p></o:p></p>
<p class="MsoPlainText">> extension requirements and recommendations ? This may not be feasible
<o:p></o:p></p>
<p class="MsoPlainText">> due to the extensible nature of the extension..<o:p></o:p></p>
<p class="MsoPlainText">><o:p> </o:p></p>
<p class="MsoPlainText">> Cheers, Andreas<o:p></o:p></p>
<p class="MsoPlainText">><o:p> </o:p></p>
<p class="MsoPlainText">> --<o:p></o:p></p>
<p class="MsoPlainText">> Andreas Plesch<o:p></o:p></p>
<p class="MsoPlainText">> Waltham, MA 02453<o:p></o:p></p>
<p class="MsoPlainText">><o:p> </o:p></p>
<p class="MsoPlainText">> _______________________________________________<o:p></o:p></p>
<p class="MsoPlainText">> x3d-public mailing list<o:p></o:p></p>
<p class="MsoPlainText">> <a href="mailto:x3d-public@web3d.org"><span style="color:windowtext;text-decoration:none">x3d-public@web3d.org</span></a><o:p></o:p></p>
<p class="MsoPlainText">> <a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org">
<span style="color:windowtext;text-decoration:none">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</span></a><o:p></o:p></p>
<p class="MsoPlainText">><o:p> </o:p></p>
<p class="MsoPlainText">><o:p> </o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">--<o:p></o:p></p>
<p class="MsoPlainText">Andreas Plesch<o:p></o:p></p>
<p class="MsoPlainText">Waltham, MA 02453<o:p></o:p></p>
<p class="MsoPlainText"><o:p> </o:p></p>
<p class="MsoPlainText">_______________________________________________<o:p></o:p></p>
<p class="MsoPlainText">x3d-public mailing list<o:p></o:p></p>
<p class="MsoPlainText"><a href="mailto:x3d-public@web3d.org"><span style="color:windowtext;text-decoration:none">x3d-public@web3d.org</span></a><o:p></o:p></p>
<p class="MsoPlainText"><a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org"><span style="color:windowtext;text-decoration:none">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</span></a><o:p></o:p></p>
</div>
</body>
</html>