<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:838470217;
        mso-list-type:hybrid;
        mso-list-template-ids:-1284477964 -1514604038 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>Great to learn of all this potential consistency and interoperability!<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>I think it is very appropriate for X3D Working Group to collect bidirectional mapping rules between X3D and glTF metadata.<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'>This can be super informal at first,<o:p></o:p></li><li class=MsoPlainText style='mso-list:l0 level1 lfo1'>We can collect and publish examples,<o:p></o:p></li><li class=MsoPlainText style='mso-list:l0 level1 lfo1'>We can write corresponding metadata-conversion validation rules and integrate those test diagnostics in our tool suite,<o:p></o:p></li><li class=MsoPlainText style='mso-list:l0 level1 lfo1'>This can become a Web3D Consortium Recommend Practice,<o:p></o:p></li><li class=MsoPlainText style='mso-list:l0 level1 lfo1'>This will be of definite interest to Metaverse Standards Forum (MSF) 3D Web Interoperability Group,<o:p></o:p></li><li class=MsoPlainText style='mso-list:l0 level1 lfo1'>This might eventually be part of X3D 4.1 specifications.<o:p></o:p></li></ul><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 10:49 AM<br>To: Michalis Kamburelis <michalis.kambi@gmail.com><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>Thanks, Michalis. x3dom does pretty much the same mapping of extras to metadata, with minor differences:<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>The name of the MetadataSet is "extras" except for "scene_extras" and "asset_extras" for WorldInfo MetadataSets.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Numbers become MetadataFloat rather than MetadataDouble.<o:p></o:p></p><p class=MsoPlainText>MetadataDouble is more appropriate for the json number type, I believe, but MetadataFloat seems more commonly used in X3D since 32bit suffices in most cases.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Here is the full conversion:<o:p></o:p></p><p class=MsoPlainText>https://github.com/x3dom/x3dom/blob/master/src/util/glTF/glTF2Loader.js#L149<o:p></o:p></p><p class=MsoPlainText><span style='color:black'><o:p> </o:p></span></p><p class=MsoPlainText>Does CGE convert the asset object as well ?<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>I am also looking for examples of uses of the glTF metadata xmp extension but could not find much so far. I suspect Adobe may have such examples.<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>Best, Andreas<o:p></o:p></p><p class=MsoPlainText><o:p> </o:p></p><p class=MsoPlainText>On Mon, Oct 9, 2023 at 1:20 PM Michalis Kamburelis <<a href="mailto:michalis.kambi@gmail.com"><span style='color:windowtext;text-decoration:none'>michalis.kambi@gmail.com</span></a>> wrote:<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> In CGE/view3dscene we convert glTF "extras" to X3D Metadata.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> Our practical use-case for it is that Blender allows to define "custom <o:p></o:p></p><p class=MsoPlainText>> properties" on various objects (Blender meshes, objects, cameras...) <o:p></o:p></p><p class=MsoPlainText>> and the Blender->glTF exporter puts these "Blender custom properties"<o:p></o:p></p><p class=MsoPlainText>> in "glTF extras". Being able to read these things in Castle Game <o:p></o:p></p><p class=MsoPlainText>> Engine allows authors to define some things in Blender that can be <o:p></o:p></p><p class=MsoPlainText>> game-specific and that are attached to particular objects, e.g.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> - "this is a monster spawn point",<o:p></o:p></p><p class=MsoPlainText>> - "this is a destructible wall with 123 hit points",<o:p></o:p></p><p class=MsoPlainText>> - "this is lava",<o:p></o:p></p><p class=MsoPlainText>> - "walking on this floor hurts the player, taking 4 hit points per <o:p></o:p></p><p class=MsoPlainText>> second",<o:p></o:p></p><p class=MsoPlainText>> - "this is a water volume, if player is inside this then it should be <o:p></o:p></p><p class=MsoPlainText>> treated as underwater".<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> So we convert glTF extras tro X3D Metadata, and give CGE users easy <o:p></o:p></p><p class=MsoPlainText>> way to access this metadata, and everyone is happy, no matter what <o:p></o:p></p><p class=MsoPlainText>> tool and format they use -- they get possibilities :) See<o:p></o:p></p><p class=MsoPlainText>> <a href="https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcastle-engine.io%2Fblender%23_custom_properties&data=05%7C01%7Cbrutzman%40nps.edu%7C7b4de2dc055541b84b2108dbc8f0399f%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638324706343579427%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=Xpv5MHdNU54VlqbxMSsjnyQ4jB2g92%2Fxyu%2B%2FsvPZzLk%3D&reserved=0"><span style='color:windowtext;text-decoration:none'>https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2Fcastle-engine.io%2Fblender%23_custom_properties&data=05%7C01%7Cbrutzman%40nps.edu%7C7b4de2dc055541b84b2108dbc8f0399f%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C638324706343579427%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=Xpv5MHdNU54VlqbxMSsjnyQ4jB2g92%2Fxyu%2B%2FsvPZzLk%3D&reserved=0</span></a> .<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> To turn glTF (most typical) key-map into X3D Metadata, we wrap it into <o:p></o:p></p><p class=MsoPlainText>> X3D MetadataSet called "ContainerForAllMetadataValues" .<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> glTF extras like this:<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> """<o:p></o:p></p><p class=MsoPlainText>>     "meshes" : [<o:p></o:p></p><p class=MsoPlainText>>         {<o:p></o:p></p><p class=MsoPlainText>>             "extras" : {<o:p></o:p></p><p class=MsoPlainText>>                 "mesh_custom_property" : 1,<o:p></o:p></p><p class=MsoPlainText>>                 "mesh_property_2" : "some string"<o:p></o:p></p><p class=MsoPlainText>>             },<o:p></o:p></p><p class=MsoPlainText>>             "name" : "Cube",<o:p></o:p></p><p class=MsoPlainText>> """<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> -> are converted into X3D metadata like this:<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> """<o:p></o:p></p><p class=MsoPlainText>>         metadata MetadataSet {<o:p></o:p></p><p class=MsoPlainText>>             name "ContainerForAllMetadataValues"<o:p></o:p></p><p class=MsoPlainText>>             value [<o:p></o:p></p><p class=MsoPlainText>>                 MetadataDouble {<o:p></o:p></p><p class=MsoPlainText>>                     name "mesh_custom_property"<o:p></o:p></p><p class=MsoPlainText>>                     value 1<o:p></o:p></p><p class=MsoPlainText>>                 }<o:p></o:p></p><p class=MsoPlainText>>                 MetadataString {<o:p></o:p></p><p class=MsoPlainText>>                     name "mesh_property_2"<o:p></o:p></p><p class=MsoPlainText>>                     value "some string"<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>>         children Shape {<o:p></o:p></p><p class=MsoPlainText>> """<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> See<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%2Fcastle-engine%2Fdemo-models%2Ftree%2Fmaster%2Fblender%2Fcusto<o:p></o:p></p><p class=MsoPlainText>> m_properties&data=05%7C01%7Cbrutzman%40nps.edu%7C7b4de2dc055541b84b210<o:p></o:p></p><p class=MsoPlainText>> 8dbc8f0399f%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C6383247063437<o:p></o:p></p><p class=MsoPlainText>> 35644%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJB<o:p></o:p></p><p class=MsoPlainText>> TiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=kNU3YJFvT%2Br2iMl2ybY<o:p></o:p></p><p class=MsoPlainText>> 272DG4yvy2BNW79fHW3cLjpU%3D&reserved=0<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%2Fcastle-engine%2Fdemo-models%2Ftree%2Fmaster%2Fblender%2Fcusto<o:p></o:p></p><p class=MsoPlainText>> m_properties_2&data=05%7C01%7Cbrutzman%40nps.edu%7C7b4de2dc055541b84b2<o:p></o:p></p><p class=MsoPlainText>> 108dbc8f0399f%7C6d936231a51740ea9199f7578963378e%7C0%7C0%7C63832470634<o:p></o:p></p><p class=MsoPlainText>> 3735644%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLC<o:p></o:p></p><p class=MsoPlainText>> JBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7C%7C%7C&sdata=%2BBwXTwnSh81onXJMz<o:p></o:p></p><p class=MsoPlainText>> aOMktrWiJ9HZz%2B1hYoMtx9s1zY%3D&reserved=0<o:p></o:p></p><p class=MsoPlainText>> for more examples, including both glTF, resulting X3D, and also source <o:p></o:p></p><p class=MsoPlainText>> Blender files.<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> Regards,<o:p></o:p></p><p class=MsoPlainText>> Michalis<o:p></o:p></p><p class=MsoPlainText>><o:p> </o:p></p><p class=MsoPlainText>> pon., 9 paź 2023 o 16:49 Andreas Plesch <<a href="mailto:andreasplesch@gmail.com"><span style='color:windowtext;text-decoration:none'>andreasplesch@gmail.com</span></a>> napisał(a):<o:p></o:p></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 <o:p></o:p></p><p class=MsoPlainText>> > 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 <o:p></o:p></p><p class=MsoPlainText>> > value of a name string should be more abstract, or descriptive in a <o:p></o:p></p><p class=MsoPlainText>> > linguistic sense. So a dot would mean a full stop which would not <o:p></o:p></p><p class=MsoPlainText>> > make a lot of sense. But I can see that this is a rather aesthetic <o:p></o:p></p><p class=MsoPlainText>> > consideration, and that a direct json path style name has its own <o:p></o:p></p><p class=MsoPlainText>> > 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%2F"><span style='color:windowtext;text-decoration:none'>https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2F</span></a><o:p></o:p></p><p class=MsoPlainText>> > > create3000.github.io%2Fx_ite%2F&data=05%7C01%7Cbrutzman%40nps.edu%<o:p></o:p></p><p class=MsoPlainText>> > > 7C7b4de2dc055541b84b2108dbc8f0399f%7C6d936231a51740ea9199f75789633<o:p></o:p></p><p class=MsoPlainText>> > > 78e%7C0%7C0%7C638324706343735644%7CUnknown%7CTWFpbGZsb3d8eyJWIjoiM<o:p></o:p></p><p class=MsoPlainText>> > > C4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%7C3000%7<o:p></o:p></p><p class=MsoPlainText>> > > C%7C%7C&sdata=CIAucgq0iTAEa5jfliJ6ZJiRVKhxrqXn0DsUb9lRJf4%3D&reser<o:p></o:p></p><p class=MsoPlainText>> > > ved=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 <o:p></o:p></p><p class=MsoPlainText>> > > at 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 <o:p></o:p></p><p class=MsoPlainText>> > > defined 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 <o:p></o:p></p><p class=MsoPlainText>> > > a metadata extension for more structured metadata, extensible <o:p></o:p></p><p class=MsoPlainText>> > > 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%2F"><span style='color:windowtext;text-decoration:none'>https://nam10.safelinks.protection.outlook.com/?url=https%3A%2F%2F</span></a><o:p></o:p></p><p class=MsoPlainText>> > > github.com%2FKhronosGroup%2FglTF%2Fblob%2Fmain%2Fextensions%2F2.0%<o:p></o:p></p><p class=MsoPlainText>> > > 2FKhronos%2FKHR_xmp_json_ld%2FREADME.md&data=05%7C01%7Cbrutzman%40<o:p></o:p></p><p class=MsoPlainText>> > > nps.edu%7C7b4de2dc055541b84b2108dbc8f0399f%7C6d936231a51740ea9199f<o:p></o:p></p><p class=MsoPlainText>> > > 7578963378e%7C0%7C0%7C638324706343735644%7CUnknown%7CTWFpbGZsb3d8e<o:p></o:p></p><p class=MsoPlainText>> > > yJWIjoiMC4wLjAwMDAiLCJQIjoiV2luMzIiLCJBTiI6Ik1haWwiLCJXVCI6Mn0%3D%<o:p></o:p></p><p class=MsoPlainText>> > > 7C3000%7C%7C%7C&sdata=hbpLcxJiMrjkkdvJgqwCCmZ%2FygW0hVDEsLk34ipndm<o:p></o:p></p><p class=MsoPlainText>> > > Y%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 <o:p></o:p></p><p class=MsoPlainText>> > > should 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 <o:p></o:p></p><p class=MsoPlainText>> > > staying 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 <o:p></o:p></p><p class=MsoPlainText>> > > are defined once at the toplevel, and then referenced <o:p></o:p></p><p class=MsoPlainText>> > > (instantiated) from any other level. This seems to map well into <o:p></o:p></p><p class=MsoPlainText>> > > DEF/USE. A large "KHR_XMP_GLTF" root MetadataSet would contain all <o:p></o:p></p><p class=MsoPlainText>> > > metadata and just referenced by USE from Shapes/Material etc. I <o:p></o:p></p><p class=MsoPlainText>> > > think this could work well. I think json property names can become <o:p></o:p></p><p class=MsoPlainText>> > > Metadata name values, and 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 <o:p></o:p></p><p class=MsoPlainText>> > > metadata extension, any ideas or feedback would be great. Would it <o:p></o:p></p><p class=MsoPlainText>> > > be useful to start to think about a xml Metadata schema which <o:p></o:p></p><p class=MsoPlainText>> > > follows the glTF extension requirements and recommendations ? This <o:p></o:p></p><p class=MsoPlainText>> > > may not be feasible 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><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>