2016-08-19 3 views
0

WebGL 프레임 워크를 탐색 중입니다. SceneJS가 좋지만 Internet Explorer와 호환성 문제가있는 것 같습니다. 예를 들어, IE 11에서 OBJ 파일을 가져 오는 것은 온라인 예에서 정지 :SceneJS 가져 오기 모델이 작동하지 않습니다.

Here is the link

어떤 아이디어? 또는 SceneJS가 흥미롭지 만 프로젝트로 버려져서 다른 WebGL 프레임 워크로 이동해야한다는 좋은 증거입니까?

답변

2

IE (제 경우 IE 11)에서는 webGL이 아니지만 SceneJS에서 OBJ 파일이로드되는 방식이 문제가되는 것 같습니다. SceneJS는 IE와 호환되지 않는 방법을 사용했습니다.

obj.js에서 load() 함수는 xhr.responseType = "arraybuffer";을 호출합니다. obj가로드되지 않도록 IE에서 상태 오류가 발생합니다.

쉬운 해결책은 obj.js에서로드 기능을 편집하는 것입니다 (줄을 바꾸지 않은 상태에서). 여기에 전체 기능입니다 :

  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