[x3d-public] Difficult bug in X3DJSONLD, files by Andreas and myself show same problem as index.html, perhaps

Holger Seelig holger.seelig at yahoo.de
Tue Jun 15 04:40:29 PDT 2021


Hello John,

There was indeed a bug in X_ITE, in importJS, that the .dom property of the resulting scene was not set. This is fixed now. I also updated the documentation that there is also an async version of .importJS. The async version must be used if you specify profile or components that are not in the main packaged of X_ITE, like the Layout component, which is loaded later, only if needed. But you can also use the sync version if you only need VRML.

See:
https://github.com/create3000/x_ite/wiki/Browser-Services#x3dscene-importdocument-domobject-dom

Here is a full example:

<html>
  <head>
    <meta charset="utf-8"/>
    <link rel="stylesheet" type="text/css" href="https://create3000.github.io/code/x_ite/latest/dist/x_ite.css"/>
    <script type="text/javascript" src="https://create3000.github.io/code/x_ite/latest/dist/x_ite.min.js"></script>
    <style type="text/css">
X3DCanvas {
  width: 768px;
  height: 432px;
}
    </style>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
    <script>
function load ()
{
  console .log ("load");

  $.getJSON ("Billboard.x3dj", function (json)
  {
    X3D (function ()
    {
      var Browser = X3D .getBrowser ();

      Browser .importJS (json, function (scene)
      {
        Browser .replaceWorld (scene);
        console .log (scene .dom);
      });
    });
  });
}
    </script>
  </head>
  <body>
    <X3DCanvas></X3DCanvas>
    <button onclick="load()">Click Me!</button>
  </body>
</html>



> Am 15.06.2021 um 03:19 schrieb John Carlson <yottzumm at gmail.com>:
> 
>  Holger,
> 
> 
> 
> My main code currently looks like the below.  I believe I patched the problem with ajv internationalization in loaderJQuery.js
> 
> Umm, to me, it looks like your shader programs aren't working--the "Program" in the console log, even though they downloaded successfully?  I'm not sure if the shaders are related to your initial graphics, or something else.  Initial graphics seem to be working.  Perhaps there's an issue with the url file/path?
> 
>     <script type="text/javascript">
>             
>         var url = "../data/ArchHalf.json";
>         var selector = "#x_itedom";
>     
>         function importInto_X_ITE(json) {
>                 loadX3DJS_X_ITE(selector, document.implementation, json, url, "", loadSchema, doValidate, X3DJSONLD, function(jsDOM) {
>                         load_X_ITE_DOM(jsDOM, selector);
>                 });
>         }
>         $(document).ready(function() {
>                 $.getJSON(url, importInto_X_ITE);
>         });
> 
>     </script>
> 
> ====================================================================================================
> 
> The error seems to be in this showing up in this code in X3DJSONLD.  It looks like child.dom is undefined on the return from browser.importJS.  I'm guessing there was some change to X_ITE or x_ite_dom?  
> 
> I tried including x_ite_dom 1.3. child.dom is still the same. So it looks like I broke encapsulation.  Hmm.  This will take some investigation.  It may be that the return value from JSONParser.parseJavaScript() is undefined!  Hmm.  Well, back to debugger.
> 
> function loadX3DJS_X_ITE(selector, DOMImplementation, jsobj, path, NS, loadSchema, doValidate, X3DJSONLD, callback) {
>     X3DJSONLD.x3djsonNS = NS;
>     loadSchema(jsobj, path, doValidate, X3DJSONLD, function() {
>         X3D(function() {
>             if (typeof X3D.getBrowser !== 'undefined') {
>                 var browser = X3D.getBrowser(selector);
>                 if (typeof browser !== 'undefined' && typeof browser.importJS !== 'undefined') {
>                     var child = browser.importJS(jsobj);
>                     var xml = X3DJSONLD.serializeDOM(jsobj, child.dom, true);
>                     callback(child.dom, xml);
>                 }
>             }
>         }, function() {
>             alert("Failed to render JSON to X_ITE");
>         });
>     }, function(e) {
>         console.error(e);
>         callback(null, null);
>     });
> }
> 
> 
> On 6/4/21 7:34 AM, John Carlson wrote:
>> My load functions, particularly load_X_ITE_DOM should call the X3D function.         
>> 
>> The error in index.js is in the JSON validation suite, and hopefully not escaping the try/catch.    I was noticing that the element was undefined, and that may be the result of something not valid.  Clicking ok on the validation error pop up should take one past validation.  One should try to find a valid JSON file to load with APjsonImport.xhtml .   I am going to sleep now and will try to pursue this tonight.
>> 
>> On Fri, Jun 4, 2021 at 6:26 AM Holger Seelig <holger.seelig at yahoo.de <mailto:holger.seelig at yahoo.de>> wrote:
>> The most common mistake is that the X3D Browser is not available from the beginning of the HTML page. Thus a call to the X3D function to access the Browser must be wrapped, see:
>> 
>> https://github.com/create3000/x_ite/wiki/Accessing-the-External-Browser <https://github.com/create3000/x_ite/wiki/Accessing-the-External-Browser>
>> 
>> But there are is also this error in the console 
>> 
>> [Error] Failed to load resource: the server responded with a status of 404 () (index.js, line 0)
>> https://coderextreme.net/X3DJSONLD/src/main/node/ajv-i18n/localize/de-de/index.js <https://coderextreme.net/X3DJSONLD/src/main/node/ajv-i18n/localize/de-de/index.js>
>> 
>> Holger
>> 
>> 
>>> Am 04.06.2021 um 12:43 schrieb John Carlson <yottzumm at gmail.com <mailto:yottzumm at gmail.com>>:
>>> 
>>> I'm trying to get these working:
>>> 
>>> https://coderextreme.net/X3DJSONLD/src/main/html/AP_minimal_JSLD.html <https://coderextreme.net/X3DJSONLD/src/main/html/AP_minimal_JSLD.html>
>>> 
>>> https://coderextreme.net/X3DJSONLD/src/main/html/AP_minimal_JSLD.xhtml <https://coderextreme.net/X3DJSONLD/src/main/html/AP_minimal_JSLD.xhtml>
>>> 
>>> This may provide some guidance:
>>> 
>>> https://coderextreme.net/X3DJSONLD/src/main/html/APjsonImport.xhtml <https://coderextreme.net/X3DJSONLD/src/main/html/APjsonImport.xhtml> or at least somewhat easy selection of files, and both X3DOM (works) and X_ITE (fails). (Feel free to reduce number of files in <select>)
>>> 
>>> I realize I could probably use older versions of X_ITE, but I'm more interested in possible current features I'm missing.
>>> 
>>> I am not having issues with Inline with *.json files, as far as I can tell, mostly just index.html
>>> 
>>> Repository is below, master branch.
>>> 
>>> https://github.com/coderextreme/X3DJSONLD/ <https://github.com/coderextreme/X3DJSONLD/>
>>> 
>>> Thanks for any basic assistance you have.
>>> 
>>> It's highly likely I may have problems with the JSON schema.
>>> 
>>> I will now look at X_ITE documentation.
>>> 
>>> John
>>> 
>> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20210615/684a8a85/attachment-0001.html>


More information about the x3d-public mailing list