我想知道是否有人可以向我解释为什么我不能在XTK Tutorial 13中的4面板设置(3D,X,Y,Z)中渲染相同的音量,而没有.onShowtime函数。我尝试改变代码来执行此操作,而不是调用.onShowtimes函数:
volume = new X.volume();
volume.file = 'http://x.babymri.org/?vol.nrrd';
sliceX.add(volume);
sliceX.render();
sliceY.add(volume);
sliceY.render();
sliceZ.add(volume);
sliceZ.render();
但是当我这样做时,我得到了3个显示面板中的负载条,但是在加载后,只有sliceX面板会显示图像,其他的仍然是黑色。我是否总是必须有一个主渲染器并让其他渲染器听取它,正如教程建议的那样?
谢谢, 戴夫
答案 0 :(得分:1)
这是因为第一次调用'渲染'将触发下载数据。
一旦下载并第一次渲染,我们就会在其他渲染器中添加/渲染它。
当我们致电'渲染'在下一个渲染器上,它不会再尝试下载数据,因为它已经下载过一次。
如果我们现在正在调用渲染器,它会尝试下载卷3次,它会弄乱对象的内部。
如此长的答案,这是为了避免一些竞争条件,但我同意我们应该尽可能改进。
由于
答案 1 :(得分:0)
我已经解决了它暂时用JavaScript函数setTimeout替换onShowTime。你渲染了第一个渲染器,然后你在那个函数内部渲染其他渲染器
volume = new X.volume();
volume.file = 'http://x.babymri.org/?vol.nrrd';
slice3D.add(volume);
slice3D.render();
setTimeout(function(){
sliceX.add(volume);
sliceX.render();
sliceY.add(volume);
sliceY.render();
sliceZ.add(volume);
sliceZ.render();
},600);
它对我有用。