[x3d-public] [x3dom-users] Bad rendering of JSON SimpleShader in X_ITE
Don Brutzman
brutzman at nps.edu
Fri May 25 17:08:12 PDT 2018
Sorry but any work by Yvonne is not in example suite. It might be in X3DOM or mailing lists.
I recommend focusing first on what example works, and second on what example is the correct answer for each representation. Then we can work on specification/implementation/converter as appropriate.
On 5/24/2018 6:48 AM, Leonard Daly wrote:
> John,
>
> Yvonne created an example with a JSON loader about 4 years ago. I forget the details. Don may remember more. I think she used the NPS Monterey Bay Aquarium dolphin.
>
> Leonard Daly
>
>
> On 5/23/2018 9:10 PM, John Carlson wrote:
>> After some consideration, I will move the JSON -> DOM out of X3DJSONLD and into X3DOM, since I already have code for it in X3DOM. However, I need an X3DOM interface for loading JavaScript objects into X3DOM. Suggestions?
>>
>> On Wed, May 23, 2018, 11:58 PM Leonard Daly <Leonard.Daly at realism.com <mailto:Leonard.Daly at realism.com>> wrote:
>>
>> On 5/23/2018 7:53 PM, John Carlson wrote:
>>>
>>> Okay, I tested importDocument, and it works, so that points to X_ITE importJS being the problem. If someone can get me a way to build x_ite from scratch, I will start work getting JSONParser and the CDATA stuff up to date in X_ITE. If that doesn’t solve the problem I will have to dig deeper.
>>>
>>> Does anyone know how to deep clone a DOM? I’d like to render both X_ITE and X3DOM from similar DOM trees without having to retranslate the JSON to DOM (adding another output to X3DJSONLD).
>>>
>>
>> John,
>>
>> X3DOM puts internal data structures in the DOM (e.g., the runtime structure is attached to each X3DOM tag). You will need to deal with circular references (legal in DOM, not in JSON) and other very squirrelly things. You can do a clone on a DOM node (deep or shallow) with <element>.cloneNode(). See https://developer.mozilla.org/en-US/docs/Web/API/Node/cloneNode for details.
>>
>>
>> Leonard Daly
>>
>>
>>
>>
>>> Thanks,
>>>
>>> John
>>>
>>> Sent from Mail <https://go.microsoft.com/fwlink/?LinkId=550986> for Windows 10
>>>
>>> *From: *John Carlson <mailto:yottzumm at gmail.com>
>>> *Sent: *Wednesday, May 23, 2018 4:30 AM
>>> *To: *Don Brutzman <mailto:brutzman at nps.edu>; Andreas Plesch <mailto:andreasplesch at gmail.com>; holger.seelig at yahoo.de <mailto:holger.seelig at yahoo.de>; X3D Graphics public mailing list <mailto:x3d-public at web3d.org>; x3dom mlist <mailto:x3dom-users at lists.sourceforge.net>
>>> *Subject: *RE: Bad rendering of JSON SimpleShader in X_ITE
>>>
>>> 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 <https://go.microsoft.com/fwlink/?LinkId=550986> for Windows 10
>>>
>>> *From: *John Carlson <mailto:yottzumm at gmail.com>
>>> *Sent: *Tuesday, May 22, 2018 5:57 PM
>>> *To: *Don Brutzman <mailto:brutzman at nps.edu>; Andreas Plesch <mailto:andreasplesch at gmail.com>; holger.seelig at yahoo.de <mailto:holger.seelig at yahoo.de>; X3D Graphics public mailing list <mailto:x3d-public at web3d.org>; x3dom mlist <mailto:x3dom-users at lists.sourceforge.net>
>>> *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 <https://go.microsoft.com/fwlink/?LinkId=550986> for Windows 10
>>>
>>> *From: *John Carlson <mailto:yottzumm at gmail.com>
>>> *Sent: *Tuesday, May 22, 2018 5:30 PM
>>> *To: *Don Brutzman <mailto:brutzman at nps.edu>; Andreas Plesch <mailto:andreasplesch at gmail.com>; holger.seelig at yahoo.de <mailto:holger.seelig at yahoo.de>; X3D Graphics public mailing list <mailto:x3d-public at web3d.org>; x3dom mlist <mailto:x3dom-users at lists.sourceforge.net>
>>> *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 <https://go.microsoft.com/fwlink/?LinkId=550986> for Windows 10
>>>
>>> *From: *John Carlson <mailto:yottzumm at gmail.com>
>>> *Sent: *Tuesday, May 22, 2018 4:51 PM
>>> *To: *Don Brutzman <mailto:brutzman at nps.edu>; Andreas Plesch <mailto:andreasplesch at gmail.com>; holger.seelig at yahoo.de <mailto: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 <https://go.microsoft.com/fwlink/?LinkId=550986> for Windows 10
>>>
>>> *From: *John Carlson <mailto:yottzumm at gmail.com>
>>> *Sent: *Tuesday, May 22, 2018 4:36 PM
>>> *To: *Don Brutzman <mailto:brutzman at nps.edu>; Andreas Plesch <mailto:andreasplesch at gmail.com>; holger.seelig at yahoo.de <mailto: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 <https://go.microsoft.com/fwlink/?LinkId=550986> for Windows 10
>>>
>>> *From: *John Carlson <mailto:yottzumm at gmail.com>
>>> *Sent: *Tuesday, May 22, 2018 4:20 PM
>>> *To: *holger.seelig at yahoo.de <mailto:holger.seelig at yahoo.de>; Andreas Plesch <mailto:andreasplesch at gmail.com>
>>> *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 <https://go.microsoft.com/fwlink/?LinkId=550986> for Windows 10
>>>
>>> *From: *John Carlson <mailto:yottzumm at gmail.com>
>>> *Sent: *Tuesday, May 22, 2018 3:59 PM
>>> *To: *Andreas Plesch <mailto:andreasplesch at gmail.com>
>>> *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 <mailto: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 <mailto:yottzumm at gmail.com>> wrote:
>>>
>>> Hopefully this BS contact example makes it.
>>>
>>> ---------- Forwarded message ---------
>>> From: John Carlson <yottzumm at gmail.com <mailto: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 <mailto:reply%2B000ac4f78369c959aaa1022cea58689148651aac125ae7a492cf00000001171b6f7792a169ce1351f190 at reply.github.com>>, x3dom/x3dom <x3dom at noreply.github.com <mailto:x3dom at noreply.github.com>>
>>> Cc: Author <author at noreply.github.com <mailto:author at noreply.github.com>>
>>>
>>> Here it is in BS Contact:
>>>
>>> Sent from Mail <https://go.microsoft.com/fwlink/?LinkId=550986> for Windows 10
>>>
>>> *From: *Andreas Plesch <mailto:notifications at github.com>
>>> *Sent: *Tuesday, May 22, 2018 1:41 AM
>>> *To: *x3dom/x3dom <mailto:x3dom at noreply.github.com>
>>> *Cc: *John Carlson <mailto:yottzumm at gmail.com>; Author <mailto:author at noreply.github.com>
>>> *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 <https://github.com/x3dom/x3dom/pull/844#issuecomment-390869376>, or mute the thread <https://github.com/notifications/unsubscribe-auth/AArE9_8Wd-sJSolp23LMBxXHsigHw-Weks5t06T3gaJpZM4UDkKu>.https://github.com/notifications/beacon/AArE9183osU_x9UEKTouaAfUXwpLR2Mlks5t06T3gaJpZM4UDkKu.gif
>>>
>>>
>>>
>>> --
>>>
>>> Andreas Plesch
>>> Waltham, MA 02453
>>>
>>>
>>>
>>> ------------------------------------------------------------------------------
>>> Check out the vibrant tech community on one of the world's most
>>> engaging tech sites, Slashdot.org!http://sdm.link/slashdot
>>>
>>>
>>> _______________________________________________
>>> X3dom-users mailing list
>>> X3dom-users at lists.sourceforge.net <mailto:X3dom-users at lists.sourceforge.net>
>>> https://lists.sourceforge.net/lists/listinfo/x3dom-users
>>
>>
>> --
>> *Leonard Daly*
>> 3D Systems & Cloud Consultant
>> LA ACM SIGGRAPH Past Chair
>> President, Daly Realism - /Creating the Future/
>> _______________________________________________
>> x3d-public mailing list
>> x3d-public at web3d.org <mailto:x3d-public at web3d.org>
>> http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>>
>>
>>
>> _______________________________________________
>> x3d-public mailing list
>> x3d-public at web3d.org
>> http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>
>
> --
> *Leonard Daly*
> 3D Systems & Cloud Consultant
> LA ACM SIGGRAPH Past Chair
> President, Daly Realism - /Creating the Future/
all the best, Don
--
Don Brutzman Naval Postgraduate School, Code USW/Br brutzman at nps.edu
Watkins 270, MOVES Institute, Monterey CA 93943-5000 USA +1.831.656.2149
X3D graphics, virtual worlds, navy robotics http://faculty.nps.edu/brutzman
More information about the x3d-public
mailing list