2013-06-05 2 views
0

xtk를 사용하여 원격 NIfTI 볼륨을 애플리케이션으로 읽습니다. 내 유일한 목적은 데이터를 추출 할 수 있도록 볼륨 개체를 얻는 것입니다. 나는 아무것도 렌더링 할 필요가 없습니다. 내가 본 모든 예제는 렌더러를 초기화하고 내용에 액세스하기 전에 볼륨을 첨부합니다. 예 : (http://jsfiddle.net/QxMSt/5/에서) : 이것은 매우 잘 작동하지만, 차라리 아무것도 렌더러를 만드는 문제에 갈 필요가 없습니다 것, 그리고렌더러를 초기화하지 않고 xtk에서 볼륨로드

var r = new X.renderer3D(); 
r.init(); 

var v = new X.volume(); 
v.file = 'http://www.cogitatum.org/mprage003.nii.gz'; 

r.add(v); 

r.render(); 

r.onShowtime = function() { 

    r.destroy();  
    // get the image data 
    var data = v.image;  
} 

또한 WebGL을 지원을 필요로하지 선호하는 것이다. 볼륨을 초기화하고 렌더링하지 않고 속성에 액세스 할 수있는 방법이 있습니까? 나는 코드베이스를 살펴 보았지만, X.loader가 내부적으로로드 완료를 명확하게 추적하지만, onLoad() 이벤트 나 그와 비슷한 함수가 현재 실행되지 않는 곳은 보지 않습니다. 볼륨의 파일 속성을 설정하면 볼륨로드를 트리거하는 데 충분하지만 마치 완료시 트리거되는 콜백 함수를 전달하는 방법은 없습니다. 어떤 제안?

답변

1

불행히도 현재 유일한 해결책입니다. 렌더러에 객체를 추가하면 파일 로딩이 시작됩니다.

WebGL 요구 사항을 피하려면 X.renderer2D을 사용하십시오.

외부에서 XTK의 별도의 일반적인 I/O 라이브러리가 계획되어 있으며 앞으로 2 주 이내에 사용할 수 있어야합니다.

+1

하 석, 감사합니다! 나에게 2D 렌더러를 사용하지 않았습니다. 이는 WebGL 의존성이었던보다 긴급한 문제를 해결했습니다. 작은 xtk 오버 헤드로 살 수는 있지만, I/O 라이브러리의 독립적 인 릴리스가 기대됩니다! –

0

가 나는 또한 단지 볼륨 정보가 필요, 내가 무슨 짓을 :

var filename = "../data/data.nrrd"; 
var volume = new X.volume(); 
volume.file = filename; 

var request = new XMLHttpRequest(); 
request.open("GET", filename, true); 
request.responseType = 'arraybuffer'; 
request.onload=function() 
{ 
    var _data = request.response; 
    volume._filedata = _data; 

    var loader = new X.loader(); 
    loader.load(volume, volume); 

    loader.complete = function() 
    { 
     volumeImage = volume.image; 
     // process volumeImage 
    } 
} 
request.send(null);