动态更新X3DOM模型中的纹理

时间:2013-03-22 17:46:05

标签: javascript html textures x3d x3dom

我正在开发一个Web 3D应用程序,我在Javascript中生成了一些代码,这些代码在iframe中将模型包含在外部.html文件中实现以下标记。

在外部.html文件的X3D代码块中的<appearance>元素中:

<texture id="XXX" repeats="true" repeatt="true" url="" scale="true"
hidechildren="true">
<img src="" attr=".../BMW.jpg" style="display: none; visibility: hidden;">
</texture>

我单击按钮后将上述代码放在iframe中相应块中的Javascript代码:

ogl = true;
function toggleTexture(){
if (!ogl) {
    var t = document.createElement("Texture");
    t.setAttribute("id", "XXX");
    t.setAttribute("repeatS", "true");
    t.setAttribute("repeatT", "true");
    var imgElement = document.createElement("img");
    imgElement.setAttribute("src", "../HomeFurniture/assets/BMW.jpg");
    t.appendChild(imgElement);

    var iframe = document.getElementById("frame");
    var innerDoc = (iframe.contentDocument) ? iframe.contentDocument : iframe.contentWindow.document;
    innerDoc.getElementById("anApp").appendChild(t);
    innderDoc.x3dom.reload();
} else {
    var iframe = document.getElementById("frame");
    var innerDoc = (iframe.contentDocument) ? iframe.contentDocument : iframe.contentWindow.document;
    var ot = innerDoc.getElementById("anApp");
    ot.removeChild(innerDoc.getElementById('XXX'));
}

return false;
}

Chrome浏览器调试的结果显示插入了所需的代码段,但实际模型未使用适当的纹理进行更新。

必须有一些我想念的东西,但我找不到解决方案。任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:2)

修复:问题是Google Chrome。我在Mozilla Firefox中测试了Web应用程序,一切正常:)

此外,我在子html文件中尝试了Javascript代码,它可以在Chrome中运行。当父html文件在iframe块中加载子html文件时,它只是拒绝工作。