[x3d-public] Bad rendering of JSON SimpleShader in X_ITE

John Carlson yottzumm at gmail.com
Wed May 23 01:30:08 PDT 2018


Okay, I’ve narrowed another part of it down to:

"#sourceText": [
                                            "data:text/plain;charset=utf-8,",

Produces correct X_ITE *XML* renderings in X3DJSONLD, translating from JSON to XML.

"#sourceText": [
                                            "",
                                            "                  data:text/plain;charset=utf-8,",
                                            "",

Generated by X3dToJson.xslt, does not produce correct XML rendering in X3DJSONLD. And neither does:

"#sourceText": [


I will trim() strings in X3DJSONLD CDATA sections—I have fixed this in X_ITE as well, but I’ve been unable to build, but may want to rely on X3dToJson.xslt to do the right thing in the future.

This does not fix the X_ITE JSON rendering in either X_ITE or X3DJSONLD (X_ITE JSON rendering in X3DJSONLD *is* X_ITE 4.1.5).  There *appears* to be the desire to load ShaderPart CDATA sections (if they are in fact CDATA sections…I have not confirmed this)  as URLs.  Currently, in X_ITE, I convert all #sourceText as a CDATA section using Andreas’ method for creating a CDATA section with DOMParser, which I replaced in X3DJSONLD, due to issues with Edge.

So how do we solve the problem of rendering JSON in X_ITE? I am getting the following:

Failed to load data:text/plain;charset=utf-8,precision mediump float;uniform mat4 x3d_ProjectionMatrix;uniform mat4 x3d_ModelViewMatrix;uniform mat3 x3d_NormalMatrix;attribute vec4 x3d_Vertex;attribute vec3 x3d_Normal;varying vec3 normal;void main(){normal = x3d_NormalMatrix * x3d_Normal;gl_Position = x3d_ProjectionMatrix * x3d_ModelViewMatrix * x3d_Vertex;} ?_=1527054157284: Invalid response. Origin 'http://localhost:3000' is therefore not allowed access.


There are “network loads” (appear under Network tab in developer tools on Chrome) which don’t appear with the XML version.  The above is one of them.   Apparently the XML version does something different than the JSON version, even though the JSON is translated to DOM in X_ITE.  It is possible that I didn’t actually create a CDATA section with the JSON version, that needs to be checked, if nothing else has been fixed or comes to mind.   This has been a problem with serializing DOM to XML with Edge (CDATA tag disappeared), but I haven’t seen it otherwise.

Attached are the tested versions of SimpleShader.json and SimpleShader.x3d, minus non-x_ite shaders.

I need help building x_ite from scratch (I removed my copy), see issue on GitHub.  Make all fails.

Note:  I have not tested importDocument, just createX3DFromString and importJS and specifying urls on X3DCanvas.

Sorry I didn’t get to testing embedded Shaders sooner with X3DOM and X_ITE, it slipped my mind, and I didn’t realize the Examples folder didn’t cover embedded ShaderPart’s.  The Shaders tests are under Components…

People can comment on my CDATACreateFunction and fixXML sections of JSONParser (X3DJSONLD.js).  They likely need work.
Patches are welcome too!  But please run “sh local.sh” in src/main/shell and peruse the diffs (yes, I know they are horrible).  At a minimum, run “sh quotetest.sh” (I just checked, those diffs are horrible too!).  Sigh!  I’m not sure what’s holding this ball of wax together.

Does anyone want to do a massive conversion of x_ite’s test Library to X3D JSON?

Also help with ProtoExpander on below would be welcome.

I think I can finally send this email.

John
Sent from Mail for Windows 10

From: John Carlson
Sent: Tuesday, May 22, 2018 5:57 PM
To: Don Brutzman; Andreas Plesch; holger.seelig at yahoo.de; X3D Graphics public mailing list; x3dom mlist
Subject: RE: Bad rendering of JSON SimpleShader in X_ITE -- Also Bug inX3DOMProtoExpander.

When I got rid of the space leading into data:text/string in the Cobweb shaders, the XML rendered properly.   So it’s the leading space generate either by the XML -> JSON translation (DOM2JSONSerializer.js) or the JSON -> DOM -> XML which is preventing the XML from rendering. I will switch to X3dToJson.xslt and see if that fixes it.

John
Sent from Mail for Windows 10

From: John Carlson
Sent: Tuesday, May 22, 2018 5:30 PM
To: Don Brutzman; Andreas Plesch; holger.seelig at yahoo.de; X3D Graphics public mailing list; x3dom mlist
Subject: RE: Bad rendering of JSON SimpleShader in X_ITE -- Also Bug in X3DOMProtoExpander.

Probably it’s not passing schema in X3DJSONLD because of the ProtoExpander.  The ProtoExpander does not exist in X_ITE to my knowledge (but it may have it’s own version).

When I turn off the proto expander in X3DJSONLD, and the schema does not report an error.  The shader only takes affect in XML when I load XML.  When I turn off the proto expander in X3DJSONLD, the JSON still does not render properly in X_ITE (as evidenced by the previous collection of files I submitted).

The online validator reports no error with the non-proto expanded JSON.

Attached is the expanded JSON and schema errors.

The schema error seems to surround:

                            "@decis": [
                              0.95,
                              0.44,
                              0.22
                            ],

Which should be an @value on the field, so the schema error is definitely an issue with the ProtoExpander.   This may affect and likely does affect X3DOM.

I doubt if this will shed light on the X_ITE bug, except to indicate the error is NOT in the XML parser, to my knowledge.

I still don’t know why the non-proto expanded JSON does not render properly in X_ITE.  I have just figured out another bug.

I believe the ProtoExpander error stems from IS and wanting to fill in an attribute somewhere, but I’m not really sure yet.  I will have to check to see if the target (proto?) field is an attribute or a field, I think.  Hmm.

This is probably why I had to get rid of the Proto in X3DOM, the first version of the shader I released for X3DOM.

John

Sent from Mail for Windows 10

From: John Carlson
Sent: Tuesday, May 22, 2018 4:51 PM
To: Don Brutzman; Andreas Plesch; holger.seelig at yahoo.de
Subject: RE: Bad rendering of JSON SimpleShader in X_ITE

Note that SimpleShader.json does not pass schema with X3DJSONLD, but does pass schema with my other tools.  Hmm.

You may want to try to validate against your own schema.  I will try against my online validator.

John

Sent from Mail for Windows 10

From: John Carlson
Sent: Tuesday, May 22, 2018 4:36 PM
To: Don Brutzman; Andreas Plesch; holger.seelig at yahoo.de
Subject: Bad rendering of JSON SimpleShader in X_ITE

Don, I’m not sure if this is a translation issue or an X_ITE issue that the JSON displays just as Material, and doesn’t use the shader.  I thought you would like to be informed.  I tried bringing the “data:text/plain;” to be start of the source text without any change to the rendering, but you may have better luck.

You’ll need to remove ../data/ twice in the xhtml.

This should be the original SimpleShader.x3d from sourceforge.

It might be with data:text/plain, we have to put the entire CDATA section inside a single string in JSON?  I don’t know yet.

Or maybe just remove the data:text/plain.  I will try that next.
John

Sent from Mail for Windows 10

From: John Carlson
Sent: Tuesday, May 22, 2018 4:20 PM
To: holger.seelig at yahoo.de; Andreas Plesch
Subject: RE: [x3dom/x3dom] Full patch from coderextreme/x3dom.IncludesJSONloading, protoexpander, inline changes, and field changes (#844)

Okay, it looks like there’s an issue with the JSONParser and X_ITE and X3DJSONLD, possibly.  See attached x_itesimpleshader.xhtml for differences between JSON and XML versions.  I haven’t done any debugging yet, there’s probably something on the console, like parsing a data URL (the shader).

Here is the original X3D and converted JSON.

John

Sent from Mail for Windows 10

From: John Carlson
Sent: Tuesday, May 22, 2018 3:59 PM
To: Andreas Plesch
Subject: Re: [x3dom/x3dom] Full patch from coderextreme/x3dom. IncludesJSONloading, protoexpander, inline changes, and field changes (#844)

Oh, okay.   I guess x_ite was falling back to material in some cases with X3DJSONLD.  Before I started mucking with the Proto from the original.
On Tue, May 22, 2018, 3:53 PM Andreas Plesch <andreasplesch at gmail.com> wrote:
Thanks, the screenshot came through.

But it looks like BSContact does not understand or use the ComposedShader at all. It just falls back to the Material. I think it has a console ?


On Tue, May 22, 2018 at 3:25 PM, John Carlson <yottzumm at gmail.com> wrote:
Hopefully this BS contact example makes it.

---------- Forwarded message ---------
From: John Carlson <yottzumm at gmail.com>
Date: Tue, May 22, 2018, 10:13 AM
Subject: RE: [x3dom/x3dom] Full patch from coderextreme/x3dom. Includes JSONloading, protoexpander, inline changes, and field changes (#844)
To: x3dom/x3dom <reply+000ac4f78369c959aaa1022cea58689148651aac125ae7a492cf00000001171b6f7792a169ce1351f190 at reply.github.com>, x3dom/x3dom <x3dom at noreply.github.com>
Cc: Author <author at noreply.github.com>

Here it is in BS Contact:  
 
Sent from Mail for Windows 10
 
From: Andreas Plesch
Sent: Tuesday, May 22, 2018 1:41 AM
To: x3dom/x3dom
Cc: John Carlson; Author
Subject: Re: [x3dom/x3dom] Full patch from coderextreme/x3dom. Includes JSONloading, protoexpander, inline changes, and field changes (#844)
 
https://rawgit.com/andreasplesch/x3dom/inlineShader/doc/x3doc/base/tutorials/lighting/customShader/example.html
is the tutorial example.
Here is the simpleShader.x3d for x3dom:
https://rawgit.com/andreasplesch/x3dom/inlineShader/test/regression-suite/test/cases/composedShader/inlineShader.xhtml
Do you know how it is supposed to look like ? light0 is probably the headlight.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub, or mute the thread.
 




-- 
Andreas Plesch
Waltham, MA 02453






-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20180523/51aa8e9d/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: SimpleShader.x3d
Type: application/octet-stream
Size: 5107 bytes
Desc: not available
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20180523/51aa8e9d/attachment-0001.obj>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: SimpleShader.json
Type: application/json
Size: 11276 bytes
Desc: not available
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20180523/51aa8e9d/attachment-0001.json>


More information about the x3d-public mailing list