Thank you for your answer,
Yes I can say that my data is very large, each polydata (used by the 3D surface actors) size is 30MB and I have 33 patients,
This how I’m doing it in my code:
PS: context.current[3].GLWindow
is the reference holding my GenericRenderWindow
const brainRender = async () => {
if (context.current[3]) {
const { actor, mapper, } = context.current[3];
context.current[3].GLWindow.getRenderer().removeAllActors();
if(actor){
actor.delete()
}
if(mapper){
mapper.delete()
}
}
let pd, GLWindow, actor, mapper;
mapper = vtkMapper.newInstance();
actor = vtkActor.newInstance();
GLWindow = context.current[3].GLWindow;
const reader1 = vtkPolyDataReader.newInstance();
await reader1
.setUrl(path)
.then(async () => {
pd = reader1.getOutputData();
})
.catch((error) => {
console.log(error);
});
const originBrain = origin.current;
actor.setMapper(mapper);
actor.setPosition(originBrain[0], originBrain[1], originBrain[2]);
mapper.setInputData(pd);
GLWindow.getRenderer().addActor(actor);
GLWindow.getRenderer().resetCamera();
GLWindow.getRenderer().getActiveCamera().zoom(1.3);
GLWindow.getRenderer().getActiveCamera().pitch(2.3);
GLWindow.getRenderWindow().render();
const obj = {
actor: actor,
mapper: mapper,
GLWindow: GLWindow,
pd: pd,
};
context.current[3] = { ...obj };
};
Doing it like this and after displaying 3 or 4 patients, manipulating the 3D surface with the mouse becomes so slow: