SceneJS导入模型不适用于IE

亚当

我正在探索webGL框架。我喜欢SceneJS,但是IE似乎存在一些兼容性问题。例如,在IE 11中,在线示例中冻结OBJ文件的导入:

链接在这里

有任何想法吗?还是这个很好的证据表明,尽管SceneJS虽然很有趣,但是已经作为项目被充分抛弃了,但我应该转向另一个webGL框架?

亚当

似乎是IE的问题(在我的情况下是IE 11),它不是在webGL中,而是在SceneJS中如何加载OBJ文件。SceneJS使用的方法似乎与IE不兼容。

在obj.js中,load()函数调用xhr.responseType = "arraybuffer";这会在IE中引发状态错误,阻止obj加载。

一个简单的解决方案是在obj.js中编辑load函数(未缩小第75行)。这是完整的功能:

         function load(url, ok, error) {
                var xhr = new XMLHttpRequest();
                //xhr.responseType = "arraybuffer";  // chagned
//            xhr.addEventListener('progress',
//                function (event) {
//                    // TODO: Update the task? { type:'progress', loaded:event.loaded, total:event.total }
//                }, false);
                xhr.addEventListener('load',
                        function(event) {
                            if (event.target.response) {
                                var s = event.target.response;
                                var uintArray = new Uint8Array(s.split('').map(function(char) {return char.charCodeAt(0);}));
                                ok(uintArray);
                            } else {
                                error('Invalid file [' + url + ']');
                            }
                        }, false);
                xhr.addEventListener('error',
                        function() {
                            error('Couldn\'t load URL [' + url + ']');
                        }, false);
                xhr.open('GET', url, true);
                xhr.send(null);
            }
        })();

通过注释掉xhr.responseType =“ arraybuffer”,它将默认响应类型设置为“ text”,然后您需要使用Uint8Array函数将下载的文本字符串显式转换为arraybuffer。似乎可以在我可以访问的所有浏览器上使用。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章