2016-08-19 3 views
0

私はwebGLフレームワークを調べています。私はSceneJSが好きですが、IEとの互換性の問題があるようです。例えば、IE 11で、OBJファイルをインポートすると、オンラインの例でフリーズ:SceneJSのインポートモデルが動作しません

Here is the link

任意のアイデア?または、興味深いSceneJSがプロジェクトとして十分に放棄されていて、別のwebGLフレームワークに移行する必要があるという良い証拠ですか?

答えて

2

IE(私の場合はIE 11)では問題があるようですが、webGLではなく、OBJファイルがSceneJS内でどのように読み込まれているかが分かります。 SceneJSは、IEと互換性がないと思われる方法を使用しました。

obj.jsでは、load()関数はxhr.responseType = "arraybuffer";を呼び出します。これにより、objのロードを妨げるIEに状態エラーがスローされます。

簡単な解決策は、obj.jsのロード機能を編集することです(行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」をコメントアウトすることで、「テキスト」にデフォルトの応答タイプを設定し、その後、あなたは明示的にarraybufferにダウンロードテキスト文字列を変換する必要がありますUint8Array関数を使用します。私がアクセスしているすべてのブラウザで動作するようです。

+1

これでscene.jsのバグが修正された場合は、それらに連絡してバグフィックスを提出する方法を尋ねます。 – slebetman

+0

AJAXに問題があるようですので、このプロジェクトでjQueryを使用しているかどうかを確認してください。もしそうなら、それを 'jQuey.ajax'(あるいは' jqXhr')に変更することを検討してください。彼らはすでにライブラリに構築された回避策の多くを持っています。良くやった。 – CarlosCarucce

関連する問題