[x3d-public] jupyter notebook; X3DOM syntax forincludingX3Dwithin HTML

Holger Seelig holger.seelig at googlemail.com
Sun Jun 2 00:48:39 PDT 2019


The are some issues with the example. To get it work first include the 
latest version of X_ITE AND x_ite_dom!

<link rel="stylesheet" type="text/css" 
href="https://code.create3000.de/x_ite/4.5.3/dist/x_ite.css"/>
<script type="text/javascript" 
src="https://code.create3000.de/x_ite/4.5.3/dist/x_ite.min.js"></script>
<script type="text/javascript" 
src="https://raw.githack.com/andreasplesch/x_ite_dom/master/release/x_ite_dom.1.1.js"></script>

The second issue is, that the url of the Inline node must be wrapped in 
double quotes AND single quotes because it is an MFString field:

<Inline url='"ArchHalf.x3d"'></Inline>

Then the example should work.

Best regards,
Holger


On 02.06.19 07:42, John Carlson wrote:
>
> Someone can try modifying this example:
>
> https://coderextreme.net/X3DJSONLD/src/main/html/x_iteexamples3.html
>
> It appears that Inlines don’t work with JSON or XML in  X_ITE?  I’m 
> missing the main scene or something?
>
> I can make it work with src on the X3DCanvas tag.  What matters now is 
> can we make it work like we want.
>
> FYI,
>
> John
>
> Sent from Mail <https://go.microsoft.com/fwlink/?LinkId=550986> for 
> Windows 10
>
> *From: *John Carlson <mailto:yottzumm at gmail.com>
> *Sent: *Sunday, June 2, 2019 12:00 AM
> *To: *Brutzman, Donald (Don) (CIV) <mailto:brutzman at nps.edu>; Andreas 
> Plesch <mailto:andreasplesch at gmail.com>
> *Cc: *X3D Graphics public mailing list <mailto:x3d-public at web3d.org>
> *Subject: *RE: [x3d-public] jupyter notebook; X3DOM syntax for 
> includingX3Dwithin HTML
>
> See variety of inputs into web page (X_ITE and X3DOM) here:
>
> https://coderextreme.net/X3DJSONLD/src/main/html/index.html
>
> I believe I either use XML or DOM to get the JSON or XML scene into 
> the page, even though on the surface, I may be working with JSON.
>
> Excerpt for XML:
>
>     <X3D xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance" 
> profile="Immersive" version="3.3" 
> xsd:noNamespaceSchemaLocation="http://www.web3d.org/specifications/x3d-3.3.xsd" 
> showProgress="false" showStat='false' showLog='false' width='150px' 
> height='75px' backend='webgl'>
>
>                 <Scene id="x3domxml">
>
>                 </Scene>
>
>     </X3D>
>
>     <X3DCanvas id='x_itexml' cache='false'>
>
>            <p>Your browser may not support all features required by 
> X_ITE!</p>
>
>            <X3D>
>
>            <Scene>
>
>            </Scene>
>
>            </X3D>
>
>     </X3DCanvas>
>
> ============================================================================================================
>
> function load_X_ITE_XML(content, selector) {
>
>         X3D(function() {
>
>                 var browser = X3D.getBrowser(selector);
>
> browser.replaceWorld(browser.createX3DFromString(content));
>
>         }, function() {
>
>                 alert("Failed to render XML to X_ITE");
>
>         });
>
> }
>
> /** for X3DOM **/
>
>                      var doc = document.querySelector(selector);
>
>                         if (doc.hasRuntime && doc.runtime.ready) {
>
>                                 try {
>
> doc.runtime.replaceWorld(element);
>
>                                 } catch (e) {
>
> alert(e);
>
> console.error(e);
>
>                                 }
>
>                         }
>
> So it appears possible to load X3D via JavaScript (not an Inline, but 
> follow me).
>
> It would be instructive to create an equivalent mechanism via 
> inlines.  I believe this has been shown:
>
> https://coderextreme.net/X3DJSONLD/src/main/html/x_iteexamples.html 
> (note missing X3D element, hmm)
>
> https://coderextreme.net/X3DJSONLD/src/main/html/x3domexamples3.html
>
>
> If you like, you may show the equivalent for XML (It would be best to 
> try with VRML as well, I haven’t done that).
>
> Enjoy!  Wow, feels good working together folks!
>
> It would be problematic to use both X_ITE and X3DOM if X_ITE on the 
> same page if you relied only on X3D nodes like X3DOM does.   It would 
> be hard to distinguish which browser to use if only X3D tags are used.
>
> Perhaps we need an official X3D tag implementation that can forward to 
> either X3DOM or X_ITE based on an attribute?
>
> John
>
> Sent from Mail <https://go.microsoft.com/fwlink/?LinkId=550986> for 
> Windows 10
>
> *From: *Brutzman, Donald (Don) (CIV) <mailto:brutzman at nps.edu>
> *Sent: *Saturday, June 1, 2019 11:23 PM
> *To: *Andreas Plesch <mailto:andreasplesch at gmail.com>; John Carlson 
> <mailto:yottzumm at gmail.com>
> *Cc: *X3D Graphics public mailing list <mailto:x3d-public at web3d.org>
> *Subject: *Re: [x3d-public] jupyter notebook; X3DOM syntax for 
> including X3Dwithin HTML
>
> Thanks for continuing scrutiny, this issue is quite important for 
> X3Dv4 specification efforts.
>
> I think an earlier version of X_ITE used regular X3D elements without 
> problem - not sure, that was some time ago.  Hard to tell now since 
> the online .html examples all seem to use <X3DCanvas 
> src="somesuch"><!-- fallback --></X3DCanvas>
>
> I spot-checked a few of the examples, am seeing same X3DCanvas pattern at
>
> http://create3000.de/x_ite/getting-started/#x3d-examples
>
> Perhaps X3DOM is avoiding direct inclusion and parsing of .x3d source 
> for same reason?
>
> Looks like you've worked on this in X_ITE already Andreas
>
> * http://create3000.de/x_ite/getting-started/#xhtml-dom-integration
>
> * http://create3000.de/x_ite/xhtml-dom-integration/
>
> * http://create3000.de/x_ite/xhtml-dom-integration/#example
>
> * 
> http://media.create3000.de/create3000/dom-integration/dom.integration.xhtml
>
> excerpt:
>
>                 <body>
>
> <X3DCanvas class="browser" timings="false">
>
> <img class="fallback" src="XHTML.png"/>
>
> <X3D xmlns="http://www.web3d.org/specifications/x3d-namespace" 
> id="spheres">
>
> <Scene DEF='scene'>
>
> Wondering if you had tried a .html version of that preceding file, and 
> what any difficulties might have been?
>
> Wondering why you have a DEF on the <Scene> ?  If applying HTML 
> events, presumably it could be an id="scene" reference instead.
>
> SVG recommendation allows singleton elements in fragments within HTML, 
> also seems to sometimes use namespaces and sometimes not.  Also SVG 
> appears to have at least 2 lowerCamelCase elements, clipPath and 
> foreignObject, plus a large number of lowerCamelCase attributes - so 
> not every element/attribute has to be all lower case.
>
>                 Scalable Vector Graphics (SVG) 2
>
>                 W3C Candidate Recommendation 04 October 2018
>
>                 Chapter 5: Document Structure
>
> https://www.w3.org/TR/SVG2/struct.html
>
> Also wondering if you folks think that the <X3DCanvas src=""/> pattern 
> from X_ITE is something we should repeat for X3DOM.  Seems like a good 
> fallback that supports multiple X3D encodings.
>
> I recommend that we try to pursue every possibility that might allow 
> inclusion of .x3d (XML valid) models "as is" within the HTML page.  
> Certainly the fact that they work when relabeled as an XHTML page 
> shows that it is possible.  SVG also provides corrolary evidence that 
> it is possible.  If we force a special conversion of all X3D models 
> used in HTML, then
>
> - that has a huge impact on the number of just-slightly-different 
> scenes that get created,
>
> - it greatly complicates validation, and
>
> - it also is a huge negative when trying to edit/test/apply 
> improvements to a model when the deployed version has unnecessarily 
> different syntax from the original version.
>
> As far as jupyter goes, since that notebook supports python and a wide 
> variety of embedded languages I expect that we will be able to align 
> satisfactorily as this work proceeds - you've made great progress already.
>
> Onward...
>
> On 5/31/2019 5:56 PM, Andreas Plesch wrote:
>
> > Well, if it was xhtml we were talking about you would be correct.
>
> >
>
> > But, it is html without the x which is expected by the HTML renderer
>
> > in Jupyter. There is no XHTML renderer since the Jupyter notebook
>
> > itself is a HTML document.
>
> >
>
> > And html allows singleton tags only for certain tags, at least in how
>
> > all browser parse the markup, and probably also as defined in the
>
> > HTML5 spec. These certain tags may include all known HTML elements
>
> > which do not use their text content. Unfortunately, the X3D tags are
>
> > considered Unknown Elements by html and they seem to require the
>
> > explicit end tag.
>
> >
>
> > x3dom does not use any HTML parsing libraries but completely relies on
>
> > the web browser to do the parsing. And the browsers get confused,
>
> > because they do not understand the singleton x3d tags in a html
>
> > document.
>
> >
>
> > Alas, if the xml serializing library in X3DJSAIL does not have an
>
> > option to generate full tags (they would be still legal XML, no?), we
>
> > would need to settle for xhtml IFrames which can also be included in a
>
> > Jupyter notebook (but not tested yet), or, as another option, wrap the
>
> > xml X3D into an Inline since x3dom always uses the browser XML parser
>
> > for Inlines. Would x3d.toStringX3DInline(filename) be considered too
>
> > extravagant ? It would generate an xml X3D document string with a
>
> > single Inline node, and also the content X3D in the file filename.
>
> > x3d.toFileX3DInline(x3dFileName, inlineFileName) would generate two
>
> > files.
>
> >
>
> > Perhaps Python has an option to serialize out the full tags, perhaps
>
> > as HTMLFragments. Then a x3d.toStringFullTags() could be included
>
> > outside of X3DJSAIL, and with X3DPSAIL.
>
> >
>
> > To consider X_ITE and x3dom together it would be first necessary get
>
> > X_ITE to work at all with Jupyter locally generated content. It may be
>
> > possible since X_ITE works with remote URLs in Jupyter.
>
> >
>
> > -Andreas
>
> >
>
> > ---on the phone---
>
> >
>
> > On Fri, May 31, 2019, 5:14 PM <x3d-public-request at web3d.org wrote:
>
> >>
>
> >> Send x3d-public mailing list submissions to
>
> >>          x3d-public at web3d.org
>
> >>
>
> >> To subscribe or unsubscribe via the World Wide Web, visit
>
> >> http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>
> >> or, via email, send a message with subject or body 'help' to
>
> >> x3d-public-request at web3d.org
>
> >>
>
> >> You can reach the person managing the list at
>
> >> x3d-public-owner at web3d.org
>
> >>
>
> >> When replying, please edit your Subject line so it is more specific
>
> >> than "Re: Contents of x3d-public digest..."
>
> >>
>
> >>
>
> >> Today's Topics:
>
> >>
>
> >>     1. Re: jupyter notebook; X3DOM syntax for including X3D within
>
> >>        HTML/XHTML (Brutzman, Donald (Don) (CIV))
>
> >>
>
> >>
>
> >> ----------------------------------------------------------------------
>
> >>
>
> >> Message: 1
>
> >> Date: Fri, 31 May 2019 10:14:05 +0000
>
> >> From: "Brutzman, Donald (Don) (CIV)" <brutzman at nps.edu>
>
> >> To: "x3d-public at web3d.org" <x3d-public at web3d.org>
>
> >> Subject: Re: [x3d-public] jupyter notebook; X3DOM syntax for including
>
> >>          X3D within HTML/XHTML
>
> >> Message-ID: <b6c49fa9-6afc-34fe-ee57-59f0ad5fc99d at nps.edu>
>
> >> Content-Type: text/plain; charset="utf-8"
>
> >>
>
> >> thanks for great progress.
>
> >>
>
> >> On 5/28/2019 12:12 PM, Andreas Plesch wrote:
>
> >>> - x3dom has a problem with generated X3D outside of an Inline because
>
> >>> the serialized XML output uses self-closing tags such as <Material />
>
> >>> which is not HTML compatible.
>
> >>
>
> >> HTML allows singleton elements, i.e. self-closing tags.
>
> >>
>
> >> Similarly, element CamelCaseElementNames are legal, so we should 
> not have to rename <Material/> to <material></material> simply because 
> of similarity to another language's naming patterns.
>
> >>
>
> >> i think root of this problem likely lies in how X3DOM uses the 
> accompanying DOM libraries - not sure of those details.
>
> >>
>
> >> Note that I got *all* of the X_ITE and X3DOM examples to work with 
> HTML by assigning scenes to .html and .xhtml respectively.
>
> >>
>
> >> http://www.web3d.org/x3d/content/examples/X3dResources.html#Examples
>
> >>
>
> >> 
> http://x3dgraphics.com/examples/X3dForWebAuthors/Chapter01TechnicalOverview/HelloWorldIndex.html
>
> >> 
> http://x3dgraphics.com/examples/X3dForWebAuthors/Chapter01TechnicalOverview/HelloWorldX3dom.xhtml
>
> >> 
> http://x3dgraphics.com/examples/X3dForWebAuthors/Chapter01TechnicalOverview/HelloWorldX_ITE.html
>
> >>
>
> >>> So the suggestion would be to provide a method, say
>
> >>> x3d.toStringX3DClosingTags(), which generates explicit closing tags:
>
> >>> <Material></Material>
>
> >>
>
> >> I don't think it is good to propagate a side-effect fix (which 
> encourages mysterious improper practices and hides path towards fixes).
>
> >>
>
> >> Rather it is more desirable to isolate and fix the actual problem.  
> If someone can figure out why X3DOM runs differently when included 
> within .xhtml and .html pages, that may reveal whatever idiosyncrasy 
> is actually occurring.
>
> >>
>
> >> Finally we want to match the same patterns in X_ITE and X3DOM so 
> that choice of player is independent of source-model syntax when using 
> X3D version 4. So this is a worthy mismatch to figure out and fix.  
> Hopefully we can get closer to sorting things out fully.
>
> >>
>
> >> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
>
> >>
>
> >> Meanwhile: found and fixed several errors in online X3DOM .xhtml 
> examples:
>
> >> - corrected url to match changed release address:
>
> >> https://x3dom.org/release/x3dom.css
>
> >> https://x3dom.org/release/x3dom-full.js
>
> >>
>
> >> - fixed bug in X3dToX3dom.xslt code logic in order to include 
> function toggleFullscreen ()
>
> >>
>
> >> - using XHTML Transitional (vice Strict) DTD in order for anchor 
> target attribute to pass validation
>
> >> 
> https://stackoverflow.com/questions/4666523/xhtml-strict-1-0-target-blank-not-valid
>
> >>
>
> >> X3dToX3dom.xslt stylesheet correction checked in, X3DOM example 
> pages updated and uploaded.  Having fun with X3DOM!  8)
>
> >>
>
> >> 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
>
> >>
>
> >> ------------------------------
>
> >>
>
> >> Subject: Digest Footer
>
> >>
>
> >> _______________________________________________
>
> >> x3d-public mailing list
>
> >> x3d-public at web3d.org
>
> >> http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>
> >>
>
> >>
>
> >> ------------------------------
>
> >>
>
> >> End of x3d-public Digest, Vol 122, Issue 137
>
> >> ********************************************
>
> >
>
> > _______________________________________________
>
> > x3d-public mailing list
>
> > x3d-public at web3d.org
>
> > http://web3d.org/mailman/listinfo/x3d-public_web3d.org
>
> >
>
> 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
>
>
> _______________________________________________
> x3d-public mailing list
> x3d-public at web3d.org
> http://web3d.org/mailman/listinfo/x3d-public_web3d.org

-- 
Holger Seelig
Digital Media Designer

Scheffelstraße 31a
04277 Leipzig
Germany

Cellular: +49 176 420 479 37
E-Mail:   holger.seelig at create3000.de
Web:      http://create3000.de

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://web3d.org/pipermail/x3d-public_web3d.org/attachments/20190602/7c38c4f5/attachment-0001.html>


More information about the x3d-public mailing list