2013-06-05 57 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的支持。有什麼方法可以初始化卷並訪問其屬性而不需要渲染?我已經查看了代碼庫,但沒有看到onLoad()事件或此時可比較的任何地方,儘管X.loader明確地跟蹤了內部的加載完成情況。它看起來好像設置卷的文件屬性足以觸發卷加載,但我沒有看到任何方式來傳遞完成時觸發的回調函數。有什麼建議麼?

回答

1

不幸的是,這是目前唯一的解決方案。將對象添加到渲染器時,文件加載開始。

要避免WebGL要求,只需使用X.renderer2D

計劃從XTK外部使用一個單獨的通用I/O庫,並且應在未來幾周內提供。

+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); 
相關問題