XTK - объем рендеринга в нескольких средствах визуализации без.onShowtime()?
Мне интересно, может ли кто-нибудь объяснить мне, почему я не могу воспроизвести тот же объем в 4-панельной установке (3D, X, Y, Z), как в XTK Tutorial 13, без функции.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 ответа
Это потому, что первый вызов 'render' вызовет загрузку данных.
Как только он был загружен 1 раз и отрендерен в первый раз, мы добавляем / рендерим его в других средствах визуализации.
Когда мы вызываем 'render' на следующих рендерерах, он не будет пытаться загрузить данные снова, так как они уже были загружены один раз.
Если мы вызываем рендерер, как вы делаете это сейчас, он пытается загрузить том 3 раза и может испортить внутреннюю часть объекта.
Короче, длинный ответ, чтобы избежать некоторых условий гонки, но я согласен, мы должны улучшить это, если это возможно.
Спасибо
Я решил это временно, заменив onShowTime на JavaScript с помощью функции setTimeout. Вы визуализируете первый рендерер, а после этого отрисовываете другие внутри этой функции.
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);
это сработало для меня.