Closed andreasplesch closed 8 years ago
Yes Andreas, we work hard on data url support eiter for ImageTexture, where it is extremely important or on all other url fields. For now please use the url attribute in a more normal way.
Best regards, and greetings Holger
Am 18.11.2015 um 14:28 schrieb Andreas Plesch:
The X3D tag expects an url attribute for the content of the x3d scene. Are data uri's supported as an url for in place x3d content ?
— Reply to this email directly or view it on GitHub https://github.com/create3000/cobweb/issues/2.
Holger Seelig Mediengestalter Digital – Digital Media Designer
Scheffelstraße 31a 04277 Leipzig Germany
Cellular: +49 1577 147 26 11 E-Mail: holger.seelig@yahoo.de Web: http://titania.create3000.de
Future to the fantasy ★ ★
Thanks. It looks like XMLHttpRequest2 via $.ajax() should support data urls, perhaps after setting some response headers but perhaps browsers do not implement this. I just wanted an easy way to get "live" x3d content into the x3d browser and will look now into createX3DfromString() usage.
Yes, you can use createX3DfromString. But keep in mind, external browser interaction is still rudimentary. And if you wanna do this have a look at the »cobweb.html« to see how to get the external browser.
Yes, that is exactly what I did for https://github.com/andreasplesch/Library/blob/gh-pages/Viewer/index.html
One issue for users to be aware of is that the X3D object is not available for (external) javascripts early in the page loading. Not sure when the X3D object is created and becomes available.
Yes: The X3D object is always available, but it expects at least on function handler that is called when the X3D tags are ready, or the second function handler is called if not.
X3D (callback[, errorCallback]);
The callback function is called when the browser is available onto the X3D tags. The callback function takes on argument elements, that holds all X3D tags;
function callback (elements)
The elements can than be used to access the browser of an X3D tag as follow:
X3D (function (elements)
{
var browser = X3D .getBrowser (elements);
var nodes = new X3D .MFNode ();
});
If you want access to a specific browser:
X3D (function (elements)
{
var browser = X3D .getBrowser (elements [0]);
});
If something went wrong, the error callback is called:
X3D (function (elements)
{
var browser = X3D .getBrowser (elements);
},
function (elements)
{
// No browser
});
Fix committed for data uri support.
Thanks ! Here is the commit SHA for reference: 2072d41f0411c44358cbbbaecd1852a52f4476ea
smash.x3d exercises loading a data uri for Inline. I may try it for the x3d element as well. Should it also work for ImageTexture urls ?
If you want you can also take a try for ImageTexture as well as AudioClip.
And well, you can even try MovieTexture.
Hm, I could not get this data uri of an apple png to work:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE X3D PUBLIC "ISO//Web3D//DTD X3D 3.0//EN" "http://www.web3d.org/specifications/x3d-3.0.dtd">
<X3D profile='Interchange' version='3.0' xmlns:xsd='http://www.w3.org/2001/XMLSchema-instance' xsd:noNamespaceSchemaLocation =' http://www.web3d.org/specifications/x3d-3.0.xsd '>
<head>
<meta name='identifier' content=' http://www.web3d.org/x3d/content/examples/ConformanceNist/Appearance/ImageTexture/256jpg.x3d '/>
</head>
<Scene>
<NavigationInfo type='"EXAMINE" "WALK" "FLY" "ANY"'/>
<Shape>
<Appearance>
<ImageTexture
url=' "data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAulBMVEUAAADMzDP/zGb/1FW/vz9Uf1Tl5Vnn3Fzr4Vro31mYbkjOw0vOw0xRelFsolzj11Tq4Vrq4VfNwk3LwU3WzlCJd0vq4Flro13FrFLq4Fjq4Fjq4Vjq4Vno4Vns4mvp4Vdwm1hejVPSyVDw6Ybf11Zqnltfj1bTx1Daz1PSxlCfkkClkz7o3FbQw0/q4VfLwE7Ow0/q31fNwk78/PTq31no4WHq31fNwU7r42nLwE7p4Vnn3lZso13q4VmSX1atAAAAPHRSTlMABQUGCBIUFjM5Q0RJS1BUVVdcX19iZG1vfIeIiZGYm5yisbK6u8DBwcLDxMjKz9HR0tPT1Nrd6Ojq+f2VfTqfAAAAeElEQVQYGVXBhRaCQBQFwKsYGNiFhS0WduL9/9/yPBbWszNQll2Ypt8KDM5qUoQh28afVR+41Z7br6URyc9JbnckgxzE+MqEB3F/MfGAuFELIEbUhhAFajYie8bOUFofKh0omVlIsUghVj7564O/KUFrvo+XZwPiB0IqGTjXsgzbAAAAAElFTkSuQmCC" '
/>
</Appearance>
<Box/>
</Shape>
</Scene>
</X3D>
I used this cobweb.min.js
which seemed to be the lastest one.
The scene should look like this:
Well I can really reproduce this! But cannot see a bite within the apple. Besides this ImageTexture, AudioClip and MovieTexture data url support should work out of the box and any issue should be forwarded to Mozilla as Cobweb only uses the <-img-> <-sound-> and <-video-> tag that comes with HTML5. More important is to see data url work in Inline and the X3D tag itself.
No, https://rawgit.com/create3000/cobweb/master/cobweb.js/cobweb.min.js is indeed the absolutely latest version (development-test-version) and should now indeed really fix the so called »Star Wars Issue«.
Ok, it works with the latest master branch version.
And what is not so obvious data url should work within scripting Browser.loadURL and Browser,createX3DFromURL what is not always easy to test.
I'm trying to figure out why the cobwebWindow.X3D attribute is undefined in this code the first time through.
// HTML5 with iframe reference to cobwebframe.html
<!— snip —>
var content = $('textarea#xml').val();
var cobwebWindow = document.getElementById("cobwebframe").contentWindow ;
var cobwebEle = cobwebWindow.document.getElementById("x3dele");
if (typeof cobwebWindow.X3D !== 'undefined') {
var browser = cobwebWindow.X3D.getBrowser(cobwebEle);
browser.replaceWorld(browser.createX3DFromString(content));
} else {
console.error("Cobweb disabled. Use Firefox.");
}
———— cobwebframe.html ———— <!DOCTYPE html>
Your browser may not support all features required by Cobweb!
The X3D element is first really accessable after the page is completely loaded. To ensure this use the following construct.
X3D (function (dom) { var Browser = X3D .getBrowser (dom); ... });
Am 09.01.2016 um 23:46 schrieb John Carlson:
I'm trying to figure out why the X3D attribute is undefined in this code:
// HTML5 with iframe reference to cobwebframe.html
<!— snip —>
|var content = $('textarea#xml').val(); var cobwebWindow = document.getElementById("cobwebframe").contentWindow ; var cobwebEle = cobwebWindow.document.getElementById("x3dele"); if (typeof cobwebWindow.X3D !== 'undefined') { var browser = cobwebWindow.X3D.getBrowser(cobwebEle); browser.replaceWorld(browser.createX3DFromString(content)); } else { console.error("Cobweb disabled. Use Firefox."); } |
———— cobwebframe.html ———— <!DOCTYPE html>
Cobweb Iframe loader
X3D {
width: 192px;
height:108px;
}body {
margin:0px;
padding:0px;
}Your browser may not support all features required by Cobweb!
— Reply to this email directly or view it on GitHub https://github.com/create3000/cobweb/issues/2#issuecomment-170288880.
Holger Seelig Mediengestalter Digital – Digital Media Designer
Scheffelstraße 31a 04277 Leipzig Germany
Cellular: +49 1577 147 26 11 E-Mail: holger.seelig@create3000.de Web: http://titania.create3000.de
Future to the fantasy ★ ★
This didn’t work for me. I am calling Cobweb in an iframe.
Thanks,
John
On Feb 19, 2016, at 11:58 AM, Holger Seelig notifications@github.com wrote:
The X3D element is first really accessable after the page is completely loaded. To ensure this use the following construct.
X3D (function (dom) { var Browser = X3D .getBrowser (dom); ... });
Am 09.01.2016 um 23:46 schrieb John Carlson:
I'm trying to figure out why the X3D attribute is undefined in this code:
// HTML5 with iframe reference to cobwebframe.html
<!— snip —>
|var content = $('textarea#xml').val(); var cobwebWindow = document.getElementById("cobwebframe").contentWindow ; var cobwebEle = cobwebWindow.document.getElementById("x3dele"); if (typeof cobwebWindow.X3D !== 'undefined') { var browser = cobwebWindow.X3D.getBrowser(cobwebEle); browser.replaceWorld(browser.createX3DFromString(content)); } else { console.error("Cobweb disabled. Use Firefox."); } |
———— cobwebframe.html ———— <!DOCTYPE html>
Cobweb Iframe loader
X3D {
width: 192px;
height:108px;
}body {
margin:0px;
padding:0px;
}Your browser may not support all features required by Cobweb!
— Reply to this email directly or view it on GitHub https://github.com/create3000/cobweb/issues/2#issuecomment-170288880.
Holger Seelig Mediengestalter Digital – Digital Media Designer
Scheffelstraße 31a 04277 Leipzig Germany
Cellular: +49 1577 147 26 11 E-Mail: holger.seelig@create3000.de Web: http://titania.create3000.de
Future to the fantasy ★ ★ — Reply to this email directly or view it on GitHub https://github.com/create3000/cobweb/issues/2#issuecomment-186302825.
The X3D tag expects an url attribute for the content of the x3d scene. Are data uri's supported as an url for in place x3d content ?