<div dir="ltr"><div><div><div><div><div><div><div><div><div><div><div><div><div><div><div>Hi all,<br><br>As I tried to explain in a previous mail<br><br>   <a href="http://markmail.org/message/mfp2npib5nqeeuux">http://markmail.org/message/mfp2npib5nqeeuux</a><br><br></div>I have a large amount of volume data, and I need to render only a small part of it.<br><br></div>I've been trying to find information on the streaming visualization pipeline that VTK supports, but it's been a bit hard to find examples similar what I want to do.<br><br></div>My questions right now are:<br><br></div>1) Is there some file format for volume data which is supported by VTK with a reader that is "intelligent" enough to only read the parts of the file that is requested by downstream consumers into main memory? That is, is there something I could use so that my use case would work "out of the box". If there is, I'm prepared to make sure the output from our analysis is in this format, as it would save me from writing a custom reader.<br><br></div>2) If there isn't, does anyone know of an example reader somewhere that has this intelligence? I'm prepared to write my own reader, but would really like a good example of how such a reader can be written.<br><br></div>3) I assume that all parts of the pipeline I set up must be capable of working with partial data (extents in my case) for this to work? That is, I obviously can't have something in the pipeline which is a "bad citizen" and spoils it, causing the pipeline to request all the data. Is there a list of which classes that supports this? Or are all filters et.c. in VTK well-written in the sense that they will only request the minimal amount of data they need, based on downstream requirements?<br><br></div>4) If I set the volume of interest for a volume using a vtkExtractVOI, will the information about which piece of the volume is required reach the source (reader) at the start of the pipeline?<br><br></div>5) I was planning on having a pipeline that looks roughly like<br><br></div>    Reader ----> Extract VOI ----> Do stuff ---> View1<br>         \<br></div>          +------> Extract VOI ----> Do other stuff ---> View2<br><br></div>where each of the two views show a different part of the full volume. One of the views is scrollable, and the idea is that when the user scrolls that view, the VOI is updated and that branch of the pipeline is re-executed. Only the required data should be loaded from disk into main memory when this happens. Is this kind of setup possible? Or will I have to use two completely separate pipelines?<br><br></div>6) If it turns out there are no built-in file formats where the reader supports loading parts of the data from the file on disk based on downstream requirements, I'm leaning towards making our own HDF5-based format + reader (I believe the full volume will be around 50-100 GB of data), since I think (but I'm not sure) that it's possible to only read parts of a 3D array from a HDF5 file using h5py. Does anyone else have a good suggestion for a file format, or have you been in a similar situation?<br><br></div>Very grateful for any advice.<br><br></div>Best regards,<br></div>Elvis<br></div>