我试图呈现使用XTK直接从客户端上的Web服务器发送的vtk对象,而不将其存储到磁盘。根据XTK Documentation,我只需要将vtk文件作为字符串传递到X.Mesh.filedata中,但是当我尝试执行该操作时,它什么都不显示。
我想做这样的事情:
var data = recieveVTKFileAsStringFromServer();
var r = new X.renderer3D();
r.init();
// create a mesh from a .vtk file
var dataset = new X.mesh();
// dataset.file = 'someFile.vtk';
dataset.filedata = data;
// add the object
r.add(dataset);
// .. and render it
r.render();
当我从文件中加载文件时,一切正常,使用filedata进行设置无效。我的错误在哪里?
最佳答案
我还提出了类似的方案,直接使用filedata而不是设置file属性来加载二进制数据。我通过在文件属性中传递虚拟名称以及在filedata中设置的实际二进制数据来完成此操作,一切正常。
var xhr = new XMLHttpRequest();
xhr.open('GET', '/test.nii', true);
xhr.responseType = 'arraybuffer';
xhr.send();
xhr.onreadystatechange = function (e) {
if (this.readyState === 4) {
var r = new X.renderer2D();
r.container = 'myImg';
r.orientation = 'Z';
r.init();
volume = new X.volume();
volume.file = "abc.nii";
volume.filedata = this.response;
r.add(volume);
r.render();
}
};