<div dir="auto">Sorry Joe, I really have difficulty looking at anything that’s not email, API, VRML, XML, JSON or program code.</div><div dir="auto"><br></div><div dir="auto">I don’t see how the JSON examples you link help me understand.  Do you have a full JSON animation example?</div><div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, Jul 30, 2024 at 7:42 PM Joe D Williams <<a href="mailto:joedwil@earthlink.net">joedwil@earthlink.net</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><div style="font-family:arial,sans-serif;font-size:12pt;color:rgb(0,0,0)"><p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">> <span style="font-family:"Times New Roman";font-size:medium;white-space:normal;float:none;display:inline;color:rgb(0,0,0)">Perhaps a next step is to provide an HAnim to glTF mapping.</span> </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">  </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">that is what I am talking about. Please take a look at the gltf tutorial link and see what you think.</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">It is easy to see that the gltf asset file(s) can be created from x3d content and that gltf ascii can be created with text editor.</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif"> </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">All Best,</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif">Joe</p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif"> </p>
<p style="margin:0.1rem 0px;line-height:1;font-family:arial,sans-serif"> </p>
</div>
<div style="border-left-width:1px;border-left-style:solid;box-sizing:border-box;padding:10px 0px 10px 15px;margin:0px;border-left-color:rgb(170,170,170)"></div><div style="border-left-width:1px;border-left-style:solid;box-sizing:border-box;padding:10px 0px 10px 15px;margin:0px;border-left-color:rgb(170,170,170)">
<p>-----Original Message-----<br>From: John Carlson <<a href="mailto:yottzumm@gmail.com" target="_blank">yottzumm@gmail.com</a>><br>Sent: Jul 30, 2024 5:29 PM<br>To: Extensible 3D (X3D) Graphics public discussion <<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a>><br>Cc: Joe D Williams <<a href="mailto:joedwil@earthlink.net" target="_blank">joedwil@earthlink.net</a>>, <<a href="mailto:hanim@web3d.org" target="_blank">hanim@web3d.org</a>>, <<a href="mailto:x3d-ecosystem@web3d.org" target="_blank">x3d-ecosystem@web3d.org</a>><br>Subject: Re: [x3d-public] gltf for Humanoid loa4 level 1</p>
<p style="margin:0.1rem 0px;line-height:1"> </p>
<div dir="auto">Joe, we’ve discussed how Blender conversions of animation in X3D to glTF get played in various X3D browsers.  Feel free to import as VRM [ sic ] and export as glTF.  Feel free to import as BVH and export as glTF.</div>
<div dir="auto"> </div>
<div dir="auto">Vince has tried to get X3D meshes converted to glTF with a stylesheet.</div>
<div dir="auto"> </div>
<div dir="auto">We’re kind of waiting on the folks who do conversions from X3D to STL to produce X3D to glTF.  Triangles and transforms are not an HAnim solution.</div>
<div dir="auto"> </div>
<div dir="auto">Using the OOTB blender x3d importer is a non-starter since it doesn’t import HAnim.  This might change, but I’m not seeing Blender people wanting to help with X3D.</div>
<div dir="auto"> </div>
<div dir="auto">There may be other Blender importers.</div>
<div dir="auto"> </div>
<div dir="auto">There may be online X3D to glTF converters.</div>
<div dir="auto"> </div>
<div dir="auto">glTF interactivity extension may be right around the corner.</div>
<div dir="auto"> </div>
<div dir="auto">Perhaps a next step is to provide an HAnim to glTF mapping.</div>
<div><br>
<div class="gmail_quote">
<div class="gmail_attr" dir="ltr">On Tue, Jul 30, 2024 at 6:57 PM Joe D Williams via x3d-public <<a href="mailto:x3d-public@web3d.org" target="_blank">x3d-public@web3d.org</a>> wrote:</div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-style:solid;padding-left:1ex;border-left-color:rgb(204,204,204)"><br><a href="https://github.khronos.org/glTF-Tutorials/gltfTutorial/gltfTutorial_002_BasicGltfStructure.html" rel="noopener noreferrer" target="_blank">https://github.khronos.org/glTF-Tutorials/gltfTutorial/gltfTutorial_002_BasicGltfStructure.html</a><br><br>gives some example tutorials with some user code. Even shows skinning with a simple set of rotation transforms.<br>At least gltf is down to it and doesn't mind calling a joint a joint as the primary animation driver.<br><br>Image 2a: The glTF JSON structure<br><br>and following summary of elements text shows x3d we have everything needed to transcode hanim skeleton(s), geometries, and animations from x3d hanim to gltf and back. Well, not quite transcoding, because some level of relatively simple computational text name and value transformations might be needed to match x3d native xml nodes and fields to native gltf node and field names and content.<br><br>This is to be expected, because x3d hanim nodes and fields and SAI are meant to be best authortime in terms of basic human-readable syntax, hierarchies, data stuffing, and realtime event processing, while the gltf has no 'runtime' or event system of any kind that I have seen. So our gltf oriented more toward the idea that the x3d hanim authortime has made it possible to simply reorganize or even precompute gltf data structures and elements for best transport and to optimize realtime delivery by the expected host runtime.<br>Or, even transport to another gltf or x3d authortime.<br>In fact the interchangability of using basic standard native gltf assets integrated with x3d native assets in a 'live' x3d authortime is handled just fine using standard x3d SAI.<br><br>Image 2b: The glTF structure<br><br>Gives a bit more detail about how a set of assets, even a single file of multiple embedded or in local or remote files of assets can be documented. Again, the basic is the 'scene' and it is composed of strongly typed but very versatile nodes and fields, some represented as buffers that appear to have few default definitions, but can be derived by the x3d definition of its SF form and content. So, for a gltf source collection of names and data, by the time it gets to the gltf it better be ready to execute without much ado. That is why x3d xml schema validation of the original input can be important and that comparable schema validation for the gltf json form be developed to the same degree.<br><br>On and on through the tutorial and we see that like I said, there appear to be few defaults, like gltf may not be aware or types like MFvect3F, you must tell the name and parameter and how to interpret and access the data structure for every element. However, we are happy to see some familiar names for things like skin and joints<br><br>Not to worry because the x3d native data, or data the live browser runtime would have to compute anyway for data is very well known and literally every standardized gltf asset definition is covered by x3d node and data types.<br><br>Has anyone tried a conversion of an example hanim model into a single or set of gltf asset files?<br>Attached is most simple loa4 with small geometry and basically just the skeleton Joint, Segment, Site nodes and measurements.<br>We need an loa4 because lower loas can be easily found by reduction.<br><br>The top reason for HAnim is transportable animations. The gltf can accommodate and even accelerate this good thing. It providing a very condensed form for a 'standard' skeleton hierarchy with realistic and custom dimensions then import realistic 'standard' and custom animations (learn unit quaternions, not hard just something about cosines and half angles and square roots?) along with geometry and behaviour accessories faster and easier and more reliably for interactive operations in a 'standard' time and event-driven virtualized environment.<br><br><br>please note: "The local transform matrix always has to be computed as M = T * R * S."<br>also see: <a href="https://www.web3d.org/documents/specifications/19775-1/V4.0/Part01/components/grouping.html#Transform" rel="noopener noreferrer" target="_blank">https://www.web3d.org/documents/specifications/19775-1/V4.0/Part01/components/grouping.html#Transform</a><br><br>If you want to know about x3d hanim Displacers, check out gltf sparse accessors.<br><br><a href="https://github.khronos.org/glTF-Tutorials/gltfTutorial/gltfTutorial_007_Animations.html" rel="noopener noreferrer" target="_blank">https://github.khronos.org/glTF-Tutorials/gltfTutorial/gltfTutorial_007_Animations.html</a><br><br>Some artifacts move around using the basic stuff of x3d. True, it is like gltf is made for convenient use by x3d and www. <br>Because it is.<br><br>Thanks and Best,<br>Joe<br><br><br><br>. le<br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br><br>_______________________________________________<br>x3d-public mailing list<br><a href="mailto:x3d-public@web3d.org" rel="noopener" target="_blank">x3d-public@web3d.org</a><br><a href="http://web3d.org/mailman/listinfo/x3d-public_web3d.org" rel="noopener noreferrer" target="_blank">http://web3d.org/mailman/listinfo/x3d-public_web3d.org</a></blockquote>
</div>
</div>
</div>

<p style="margin:0.1rem 0px;line-height:1"> </p></blockquote></div></div>