<html 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;}
@font-face
        {font-family:Consolas;
        panose-1:2 11 6 9 2 2 4 3 2 4;}
@font-face
        {font-family:"Segoe UI";
        panose-1:2 11 5 2 4 2 4 2 2 3;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
code
        {mso-style-priority:99;
        font-family:"Courier New";}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
        {mso-style-priority:34;
        margin-top:0in;
        margin-right:0in;
        margin-bottom:0in;
        margin-left:.5in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
.MsoChpDefault
        {mso-style-type:export-only;}
@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:363481716;
        mso-list-template-ids:-47681342;}
@list l0:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l0:level2
        {mso-level-start-at:0;
        mso-level-number-format:bullet;
        mso-level-text:\F0D8;
        mso-level-tab-stop:none;
        mso-level-number-position:left;
        text-indent:-.25in;
        font-family:Wingdings;
        mso-fareast-font-family:"Times New Roman";
        mso-bidi-font-family:"Segoe UI";}
@list l0:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level5
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level8
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l0:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1
        {mso-list-id:1546871743;
        mso-list-template-ids:-1;}
@list l1:level1
        {mso-level-number-format:bullet;
        mso-level-text:\F0B7;
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Symbol;}
@list l1:level2
        {mso-level-number-format:bullet;
        mso-level-text:o;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:"Courier New";
        mso-bidi-font-family:"Times New Roman";}
@list l1:level3
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level4
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level5
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level6
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level7
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level8
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
@list l1:level9
        {mso-level-number-format:bullet;
        mso-level-text:\F0A7;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:left;
        text-indent:-.25in;
        mso-ansi-font-size:10.0pt;
        font-family:Wingdings;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
--></style></head><body lang=EN-US link=blue vlink="#954F72" style='word-wrap:break-word'><div class=WordSection1><div><p style='mso-margin-top-alt:0in;margin-right:0in;margin-bottom:12.0pt;margin-left:0in;background:white'><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F'>TODO. Work in-progress.<o:p></o:p></span></p><ul style='margin-top:0in;box-sizing: border-box;font-variant-ligatures: normal;font-variant-caps: normal;orphans: 2;text-align:start;widows: 2;-webkit-text-stroke-width: 0px;text-decoration-thickness: initial;text-decoration-style: initial;text-decoration-color: initial;word-spacing:0px' type=disc><li style='color:#24292F;margin-top:0in;margin-bottom:0in;mso-list:l0 level1 lfo1;background:white;box-sizing: border-box'><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif'>into </span><code><span style='font-size:10.0pt;font-family:Consolas'>TimeSensor</span></code><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif'> + </span><code><span style='font-size:10.0pt;font-family:Consolas'>CoordinateInterpolator</span></code><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif'>. This means that at runtime, we just do </span><code><span style='font-size:10.0pt;font-family:Consolas'>CoordinateInterpolator</span></code><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif'> animation, not skinned mesh animation anymore. <em><span style='font-family:"Segoe UI",sans-serif'>This is not the final solution</span></em>. Although in practice it works very nicely:<o:p></o:p></span></li></ul><p style='margin:0in;background:white'><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F'><o:p> </o:p></span></p><p style='margin:0in;background:white'><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F'>… For making videos<o:p></o:p></span></p><p style='margin:0in;background:white'><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F'><o:p> </o:p></span></p><div><ul style='margin-top:0in' type=disc><ul style='margin-top:0in' type=disc><li style='color:#24292F;margin-top:12.0pt;margin-bottom:12.0pt;mso-list:l0 level2 lfo1;background:white'><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif'>Still, there are some big drawbacks:<o:p></o:p></span></li></ul></ul><ul type=disc><li class=MsoNormal style='color:#24292F;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo2;background:white;box-sizing: border-box'><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif'>You can no longer transform bones (just </span><code><span style='font-size:10.0pt;font-family:Consolas'>Transform</span></code><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif'> nodes) to modify skin at runtime <o:p></o:p></span></li></ul><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:white'><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F'>So, the gltf folks aren’t telling us how they recommend to setup a gltf file for realtime skeleton-driven skin animations? They are only storing data showing something that allows a fixed interpolator displacements for the skin?  Not surprising because the real animations hidden in the delivery of this type of interpolated skin gltf is some of the hardest to develop and stuff most wanted to keep hidden. <o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:white'><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F'>I hope all can sidestep this skeleton-driven skin animation deficit of the current gltf and get all browsers doing Hanim. Actual implementation of animation technique designed to produce realltime anytime interactive animation of shapes and skins. <o:p></o:p></span></p><ul type=disc><ul type=disc><li class=MsoListParagraph style='color:#24292F;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:0in;mso-list:l0 level2 lfo1;background:white'><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif;background:white'>The memory use of long-running animation is significant</span><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif'><o:p></o:p></span></li></ul></ul><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:white'><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F;background:white'>Lots better than just outputting complete frames of pixels for the video, which was once the best we could get. <o:p></o:p></span></p><ul type=disc><ul type=disc><li class=MsoListParagraph style='color:#24292F;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:0in;mso-list:l0 level2 lfo1;background:white'><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif;background:white'>In CGE we have also implemented H-Anim, which is X3D way of doing skinned mesh animation.<o:p></o:p></span></li></ul></ul><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:white'><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F'>I think it is just the x3d way of encoding skeleton-driven skin animations as proven by years of implementations driving this technique for realtime, and really, also the Displacer animations. When this is mastered, I think it will give clues to how to encode a gltf example humanoid. For example, when storing a file for a humanoid using gltf, it might include the matrix at issue that was computed by the author tool and used directly by the runtime tool. Otherwise, doing the level2 skeleton-driven skin animation has always been heavy learning for every x3d browser maker willing to take the step. <o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:white'><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F'>To me this also shows that we need to turn this around a bit an develop some gltf tuned for x3d. How much easier it is to read and organize user code when I can just reference a json file to hold data and thus clean up my listing. <o:p></o:p></span></p><ul type=disc><ul type=disc><li class=MsoListParagraph style='color:#24292F;mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;margin-left:0in;mso-list:l0 level2 lfo1;background:white'><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif;background:white'>If any major 3D authoring software becomes capable of exporting to H-Anim,</span><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif'><o:p></o:p></span></li></ul></ul><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:white'><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F'>BSContact? VIZX3D, xite? 3dsmax? You mean if any major authoring software extends themselves from making videos and moves towards realtime interactive live scenegraph simulations?<o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:white'><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F'>Thanks,, <o:p></o:p></span></p><p class=MsoNormal style='mso-margin-top-alt:auto;mso-margin-bottom-alt:auto;background:white'><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F'>Joe<o:p></o:p></span></p></div><p style='margin:0in;background:white'><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F'><o:p> </o:p></span></p><p style='margin:0in;background:white'><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F'><o:p> </o:p></span></p><p style='margin:0in;background:white'><span style='font-size:12.0pt;font-family:"Segoe UI",sans-serif;color:#24292F'><o:p> </o:p></span></p></div><p class=MsoNormal><o:p> </o:p></p><div style='mso-element:para-border-div;border:none;border-top:solid #E1E1E1 1.0pt;padding:3.0pt 0in 0in 0in'><p class=MsoNormal style='border:none;padding:0in'><b>From: </b><a href="mailto:michalis.kambi@gmail.com">Michalis Kamburelis</a><br><b>Sent: </b>Wednesday, March 30, 2022 4:19 PM<br><b>To: </b><a href="mailto:joedwil@earthlink.net">Joseph D Williams</a><br><b>Cc: </b><a href="mailto:x3d-public@web3d.org">X3D Graphics public mailing list</a><br><b>Subject: </b>Re: [x3d-public] PBR in X3D4 using glTF and import as Inline</p></div><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>This is all documented on</p><p class=MsoNormal>https://github.com/michaliskambi/x3d-tests/wiki/Converting-glTF-to-X3D</p><p class=MsoNormal>.</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>It is linked from the bottom of</p><p class=MsoNormal>https://github.com/michaliskambi/x3d-tests/wiki/2022-Talk-About-X3D-PBR-glTF</p><p class=MsoNormal>:)</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Regards,</p><p class=MsoNormal>Michalis</p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>czw., 31 mar 2022 o 00:05 Joseph D Williams <joedwil@earthlink.net> napisał(a):</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> HI All, Thanks Michalis, for the show. PBR stuff very impressive and looking usable. For the gltf files imported as Inlines, I hope you will show more about how you  extract the data from tha gltf node file to create the model as an Inline. Which fields of the gltf node file are used to create what at least must be a Shape with some sort of geometry and colors? Where does the mesh and color come from and how to use this to create the vizualized model? Also the animations. How to generate the behavior model from what is in the gltf file(s)?</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Thanks Again for the presentation.</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> Joe</p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>><o:p> </o:p></p><p class=MsoNormal>> _______________________________________________</p><p class=MsoNormal>> x3d-public mailing list</p><p class=MsoNormal>> x3d-public@web3d.org</p><p class=MsoNormal>> http://web3d.org/mailman/listinfo/x3d-public_web3d.org</p><p class=MsoNormal><o:p> </o:p></p></div></body></html>