My goal is to volume render 3d data of a regional atmophere model wrapped around the globe.
The network is relatively simple:
0.) As a replacement for the Earth I take a Sphere module and shade it green. Radius = 63500
1.) I read in a file with the standard NetCDF Reader (as structured data) and keep the setting Spherical Projection.
I set Vertical Scale to 200 and Vertical Bias to 63700
2.) I scale the data to have the right units (calculator module).
3.) The result of the calculator module is rendered as an outline of the 3D field.
4.) I select only cells that have values above 0.001 (threshold module) and volume render them with Nvidia Index:
On this screenshot, a part of the volume rendering appears to be outside of the field’s outline. However, when I rotate the view, I notice that the index’ volume rendering doesn’t take the sphere into account. The part of the rendering that should be hidden behind the sphere is rendered above it.
Question: I thought that Nvidia Index should allow for volume rendering mixed with other visual elements?
The visually correct rendering can be achieved with Paraviews internal volume rendering instead of Nvidia Index:
Instead of the adding threshold module, the scaled data need to be resampled to image data.
Here however - with respect to the rendering fidelity - a relatively high resolution needs to be chosen as the resampled data space seems to be a rectangular space enclosing the data field that is wrapped around the globe. To maintain the original data resolution, high resolution needs to be chosen in all dimensions. I chose 1000 by 1000 by 1000, which requires more that 10 GB GPU memory.
The the internal volume rending is chosen as the display representation of that module. I selected GPU-based rendering and enabled the shade option:
I would like to achieve similar volume rendering as in this post.
I am a bit confused though as far as the capabilities of ParaView’s NVIDIA IndeX to volume-render Structured data.
clearly states “Unstructured and Structured” but this post (and at least another one around 2020) seems to indicate that a filter (ResampletoImage) is necessary. My goal is to volume-rendered ocean data from NEMO (UnstructuredGrid) but I decided to test what I tought would be a “simpler” dataset i.e. regular grid ocean data from Roemmich-Gilson climatology available online here: Roemmich-Gilson Argo Climatology
With pvpython (ParaView 5.13)
I noticed that Nvidia IndeX is triggered immediately by the Show()/Render() commands when using NEMO UnstrcuturedGrid as the source but it is not the case with the Structured Grid data from the R-G climatology. I guess the data type needs to be converted from Structured to Image ? This does not feel intuitive to me. But then again, I may be missing some basic notion in ParaVie or volume rendering.
the NVIDIA IndeX plugin supports regular structured volume grids (= Image / Uniform Rectilinear Grid) but not general rectilinear or curvilinear grids. Your R-G climatology dataset is reported as type “Structured (Curvilinear) Grid” in the “Information” tab when loaded with the ParaView NetCDF Reader. That’s the reason you can’t directly render it with IndeX.
Instead of converting to Image, try converting the data to an Unstructured Grid. The NetCDF Reader already supports this: Simply change “Output Type” from “Automatic” to “Unstructured”. The converted dataset will use more memory than the original, but you won’t lose any data fidelity.
The unstructured grid can be directly rendered with IndeX:
I really appreciate you taking the time to respond and clarify which grids
IndeX does support. Since you seem to be main contributor to the IndeX
code in ParaView (I may be mistaken and I apologize if it is not the case)
and I was told recently that NVIDIA didn’t seem to be interested in
developing further the IndeX library, I hope you won’t mind me asking if this
is a right assessment of the situation ? Or maybe this could be explained by a shift towards the cloud (OmniVerse) or maybe just a matter of giving time to a Standard API like ANARI to establish itself and integrate IndeX as one of the backend ?
NVIDIA IndeX is under active development and is made available on multiple platforms, including Omniverse. Supporting ParaView and the scientific visualization community continues to be important.
Are there any specific new features that you are looking for with IndeX in ParaView?
Certainly nice to hear!
Right off the bat, coming from a geophysical background and dealing with atmosphere and ocean datasets, one thing for sure I would like to see happening in 3D volume rendering is for georeferencing information overlays (coastlines, lat, lon, gridlines, depth, etc ) to be treated as first class citizen. I’m not sure how much IndeX can do to ease this. It’s nice to be able to explore a physical volume but having geographical references while doing it would be really something else, to transition to a more quantitative experience. There’s has been initiatives over the years within ParaView but somehow nothing seems to have stuck …
After a little bit more experience with the software I might eventually come up with more targeted suggestions ?