在不初始化渲染器的情况下以xtk加载卷

时间:2013-06-05 22:06:20

标签: xtk

我正在使用xtk将远程NIfTI卷读入应用程序。我唯一的目标是获得一个卷对象,以便我可以提取其数据;我不需要渲染任何东西。我看到的示例都是在访问其内容之前初始化渲染器并附加卷。例如。 (来自http://jsfiddle.net/QxMSt/5/):

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()事件或类似事件被触发。看起来设置卷的文件属性足以触发卷加载,但我没有看到任何方法来传递在完成时触发的回调函数。有什么建议吗?

2 个答案:

答案 0 :(得分:1)

不幸的是,这是目前唯一的解决方案。将对象添加到渲染器时开始加载文件。

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

计划在XTK外部建立一个独立的通用I / O库,并在接下来的几周内提供。

答案 1 :(得分: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);