XTK - 在没有.onShowtime()的情况下渲染多个渲染器中的音量?

时间:2014-06-01 16:44:47

标签: xtk

我想知道是否有人可以向我解释为什么我不能在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面板会显示图像,其他的仍然是黑色。我是否总是必须有一个主渲染器并让其他渲染器听取它,正如教程建议的那样?

谢谢, 戴夫

2 个答案:

答案 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);

它对我有用。

相关问题