How do I know when volshow is done rendering?

15 views (last 30 days)
Adam
Adam on 7 Dec 2025 at 19:53
Commented: Matt J on 7 Dec 2025 at 22:33
I have a folder with hundreds of files containing 3D data. I want to loop through the files and output images to create a movie.
However, when I load new data to the volshow object, it takes a bit of time to render the scene. Hence, when I get the figure frame to write it to a file, I sometimes don't get the fully rendered scene. I don't want to add a pause after drawnow, because the rendering and data retireval is already quite slow. Is there a way to know exactly when volshow is done rendering so I can get the frame to write to an image?
obj = volshow(get_data(file(1)));
viewer = obj.Parent;
for i=1:length(file)
obj.Data = get_data(file(i));
drawnow
frame = getframe(viewer.Parent);
imwrite(frame.cdata, fullfile(save_dir, sprintf('%05i.jpg', i)))
end
  2 Comments
Walter Roberson
Walter Roberson on 7 Dec 2025 at 21:10
Unfortunately, I do not know of any way to do this.
Matt J
Matt J on 7 Dec 2025 at 22:33
Hence, when I get the figure frame to write it to a file, I sometimes don't get the fully rendered scene
If so, I think you should report it is a bug. drawnow is supposed to block further execution until figure updating is complete. That's the whole point of drawnow.

Sign in to comment.

Answers (0)

Tags

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!