Thank you, I did what you told me (I guess) but the mask was not displayed, and if I delete the brain actor from the scene I don’t see the fMRI mask (I see it if I do only onz widget.setImage(fMRImask)
in clear shiny white (alone without the brain of course)),
PS: I added the brainActor after adding the fMRI mask actor to solve that z-index issue you told me,
obj.renderer.addActor(obj.resliceActorfMRI);
obj.renderer.addActor(obj.resliceActor);
I shrinked some parts of code:
for (let i = 0; i < 3; i++) {
const obj = {
...
};
obj.widgetManager.setCaptureOn(CaptureOn.MOUSE_MOVE);
// for brain VTI
obj.reslice = vtkImageReslice.newInstance();
obj.reslice.setSlabMode(SlabMode.MEAN);
...
obj.reslice.setOutputDimensionality(2);
obj.resliceMapper = vtkImageMapper.newInstance();
obj.resliceMapper.setInputConnection(obj.reslice.getOutputPort());
obj.resliceActor = vtkImageSlice.newInstance();
obj.resliceActor.setMapper(obj.resliceMapper);
// for fMRI mask VTI PS: it is not shrinked
obj.reslicefMRI = vtkImageReslice.newInstance();
obj.resliceMapperfMRI = vtkImageMapper.newInstance();
obj.resliceMapperfMRI .setInputConnection(obj.reslicefMRI .getOutputPort());
obj.resliceActorfMRI = vtkImageSlice.newInstance();
obj.resliceActorfMRI .setMapper(obj.resliceMapperfMRI );
const reader = vtkXMLImageDataReader.newInstance({ fetchGzip: true });
//Reading the brain volume
reader.setUrl("brainVolume.vti").then(() => {
reader.loadData().then(() => {
const imageBrain = reader.getOutputData();
widget.setImage(imageBrain);
const reader2 = vtkXMLImageDataReader.newInstance({ fetchGzip: true });
//reading the VTI of the mask
reader2.setUrl("fMRImask.vti").then(() => {
reader2.loadData().then(() => {
const imagefMRI = reader2.getOutputData();
const outline = vtkOutlineFilter.newInstance();
...
outlineActor.setMapper(outlineMapper);
viewAttributes.forEach((obj, i) => {
obj.reslice.setInputData(imageBrain);
obj.reslicefMRI.setInputData(imagefMRI);
obj.renderer.addActor(obj.resliceActorfMRI);
obj.renderer.addActor(obj.resliceActor);
const viewType = xyzToViewType[i];
viewAttributes.forEach((v) => {
v.widgetInstance.onInteractionEvent(
(...) => {
const activeViewType = ...;
const keepFocalPointPosition = ...;
updateReslice({
viewType: viewType,
reslice: obj.reslice,
actor: obj.resliceActor,
renderer: obj.renderer,
resetFocalPoint: false,
keepFocalPointPosition,
computeFocalPointOffset,
sphereSources: obj.sphereSources,
});
updateReslice({
viewType: viewType,
reslice: obj.reslicefMRI,
actor: obj.resliceActorfMRI,
renderer: obj.renderer,
resetFocalPoint: false,
keepFocalPointPosition,
computeFocalPointOffset,
sphereSources: obj.sphereSources,
});
}
);
});
updateReslice({
viewType,
reslice,
actor: obj.resliceActor,
renderer: obj.renderer,
resetFocalPoint: true,
keepFocalPointPosition: false,
computeFocalPointOffset: true,
sphereSources: obj.sphereSources,
});
obj.renderWindow.render();
});
...