<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;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{margin:0in;
margin-bottom:.0001pt;
font-size:11.0pt;
font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
{mso-style-priority:99;
color:blue;
text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
{mso-style-priority:99;
color:#954F72;
text-decoration:underline;}
p.MsoListParagraph, li.MsoListParagraph, div.MsoListParagraph
{mso-style-priority:34;
margin-top:0in;
margin-right:0in;
margin-bottom:0in;
margin-left:.5in;
margin-bottom:.0001pt;
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:515582287;
mso-list-type:hybrid;
mso-list-template-ids:-891259222 -1 67698691 67698693 67698689 67698691 67698693 67698689 67698691 67698693;}
@list l0:level1
{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:"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:\F0A7;
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:\F0B7;
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:\F0A7;
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:\F0B7;
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:\F0A7;
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></head><body lang=EN-US link=blue vlink="#954F72"><div class=WordSection1><p class=MsoNormal><o:p> </o:p></p><ul style='margin-top:0in' type=disc><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo1'>… glTF supports animation of transformation components but does not define exactly when an animation is played,<o:p></o:p></li></ul><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>So, if I remember, as if I just awoke from a long sleep, then the gltf is to provide a secure and reliable way to transport carefully defined data structures into and out of either an unknown authortime or a known runtime. Maybe I am focusing of the binary forms for various gltf syntax. <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>gltf took collada and the rest into the deepest parts of best practice highly optimized data structures of mesh and field simulations in a form the best practice realtime 3D graphics processing tools wanted to get it -- Validated trusted secure binary the runtime can swallow without chewing. <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>The runtime can import this binary directly because the runtime is a ‘standard’ runtime using ‘standard’ known best-practice runtime data structures. These data structures are defined by the preferred forms for binary data used directly by geometry and animation processors. The gltf incidentally has an authortime text form to provide systematic human-readable editing and validation, but the human-readable form is just to allow data specialists to define carefully denominated strongly typed definitions for the binary form actually used by features of the runtime. <o:p></o:p></p><p class=MsoNormal> <o:p></o:p></p><p class=MsoNormal>The x3d deals mainly with the authortime form and does not define any runtime data structures except for runtime external and internal scenegraph event flows. An x3d tool would be expected to produce its internal runtime structures from the ‘standard’ x3d user code according to its needs. The great purpose of gltf is to provide a known binary form that accurately reflects known expectations of the runtime. <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>A comprehensive x3d authortime tool might have an accessory to directly import and use certain text forms of gltf if the data types and structures are the same. Likewise, an x3d runtime might be able to directly import and use certain binary forms. Or, any combination thereof. <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Since the gltf is defined and supported by the same folks who developed the concepts behind realistic accelerated realtime 3D Graphics, from which x3d is derived, then we might expect that gltf would be of great use to x3d. <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><ul style='margin-top:0in' type=disc><li class=MsoListParagraph style='margin-left:0in;mso-list:l0 level1 lfo1'>… but does not define exactly when an animation is played,<o:p></o:p></li></ul><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>So far, the gltf does not define an interactive runtime that I have seen (please send a link if there is), although I think I have seen authoring that defines sets of gltf data and seen runtimes that use sets of gltf files to produce an animated scene. <o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Thanks and Best, <o:p></o:p></p><p class=MsoNormal>Joe<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><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:andreasplesch@gmail.com">Andreas Plesch</a><br><b>Sent: </b>Sunday, January 20, 2019 6:31 PM<br><b>To: </b><a href="mailto:michalis.kambi@gmail.com">Michalis Kamburelis</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] beyond Blinn-Phong: PBR</p></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>Timo Sturm provided these nodes. The main work is to get to the gltf data to a special shader which in itself is not complex. I think the goal is to proceed to an overdue x3dom release after consolidating into development release with what we have. There would be some time to make adjustments to node signatures perhaps focusing on PhysicalMaterial.</p><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>The flipped Y axis for texture coordinate is handled in the fragment shader:</p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal><a href="https://github.com/x3dom/x3dom/blob/webVR/src/shader/ShaderPBRMaterial.js#L124">https://github.com/x3dom/x3dom/blob/webVR/src/shader/ShaderPBRMaterial.js#L124</a></p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>The 1 - coord.y should not have a noticeable performance impact. There is currently no way to access the gltf texture coordinates from the x3d scene.</p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>glTF supports animation of transformation components but does not define exactly when an animation is played, just how long a cycle is. x3dom just plays and loops them but could opt to play once or not play and just provide the equivalent Timesensor, Interpolator and ROUTE nodes for the scene to use as it wants. On the other hand there is no way to EXPORT from a gltf inline.</p></div><div><p class=MsoNormal><o:p> </o:p></p></div><div><p class=MsoNormal>-Andreas</p></div></div></div><p class=MsoNormal><o:p> </o:p></p><div><div><p class=MsoNormal>On Sun, Jan 20, 2019 at 3:21 PM Michalis Kamburelis <<a href="mailto:michalis.kambi@gmail.com">michalis.kambi@gmail.com</a>> wrote:</p></div><blockquote style='border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt'><p class=MsoNormal style='margin-left:4.8pt'>Andreas Plesch <<a href="mailto:andreasplesch@gmail.com" target="_blank">andreasplesch@gmail.com</a>> wrote:<br>><br>> For glTF inline support, PBR shading will be required. The glTF spec. has an example implementation for PBR but for anybody who wants to dive in more, there is the free<br>><br>> <a href="http://www.pbr-book.org" target="_blank">http://www.pbr-book.org</a><br>><br>> It seems somewhat artificially inflated and is based on ray tracing but explains the foundational PBR concepts in depth, and in code.<br>><br>> I just wanted to share that resource but will point out that x3dom will have a PhysicalMaterial node and an EnvironmentLight node which are used by the glTF loader.<br>><br><br>Cool! I also want to define PhysicalMaterial and EnvironmentLight in<br>Castle Game Engine, for interoperability with glTF. It will be good to<br>converge on a single specification for these nodes, and eventually add<br>it to the X3D 4 specification :) We have the same goals (achieve PBR<br>in X3D, and achieve it in a way that makes glTF 2.0 -> X3D conversion<br>straightforward), so I'm sure this will be possible.<br><br>I don't have an exact specification yet (my rough ideas are on<br><a href="https://github.com/michaliskambi/x3d-tests/wiki/How-to-add-PBR-to-X3D%3F" target="_blank">https://github.com/michaliskambi/x3d-tests/wiki/How-to-add-PBR-to-X3D%3F</a><br>, this page collects thoughts and info from our talks on x3d-public :)<br>).<br><br>Regards,<br>Michalis</p></blockquote></div><p class=MsoNormal><br clear=all></p><div><p class=MsoNormal><o:p> </o:p></p></div><p class=MsoNormal>-- </p><p class=MsoNormal>Andreas Plesch<br>Waltham, MA 02453</p><p class=MsoNormal><o:p> </o:p></p></div></body></html>