visit-dav / visit

VisIt - Visualization and Data Analysis for Mesh-based Scientific Data
https://visit.llnl.gov
BSD 3-Clause "New" or "Revised" License
426 stars 109 forks source link

Add Option for Inserting Simple Geometric Shapes #18280

Open griffin28 opened 1 year ago

griffin28 commented 1 year ago

This request is to add a feature that allows the insertion of simple geometric shapes (plane, sphere, box, etc) without needing to load a dataset. Essentially, the dataset gets generated at runtime which is easy to do for simple shapes.

The biggest use case is to add a ground plane when post-processing images rendered in VisIt. As an additional reference and data point, ParaView supports this under Sources->Geometric Shapes.

markcmiller86 commented 1 year ago

@griffin28 just curious but where would you suggest the concept of a simple shape ends and full blown database to read in begins?

Reason I ask is its a potentially slippery slope. This week we'll support planes, spheres and cones. Next week, we'll be asked to support CSG expressions involving these 😉.

Even for a ground plane, I think things can become complicated pretty quickly. For example, what resolution should the ground plane be represented at? Just a single quad is simple but might make for bizzarely shaded images (at least in VisIt proper...maybe not so much in an external rendering env. like Omniverse) so we'd probably want to specify a maximum size of any quad comprising the ground plane and then create a whole mesh for it.

In the past, I've argued for a scratch-pad-like database. A database-like-thing that is always there and that we can put stuff in easily to read into VisIt (either outputs from an export or created by user for example with python tools that produce some VTK mesh object). It might not even involve any actual files on disk. Then, the sky is the limit on what simple shapes a user might decide to create.

griffin28 commented 1 year ago

Simple shapes are your simple primitives like spheres, cones, planes, boxes. How big or small this set is depends on what the application wants to support.

There's no slippery slope as anything beyond that is not a simple shape and will need to be loaded in the same fashion it is now. Typically, things like resolution are not a concern with the user so the implementer can make those design choices how ever they choose. When things like resolution are important, that's when you'll load the appropriate dataset.

This capability is in most visualization tools (e.g., ParaView, Omniverse, etc) and in certain user communities it's expected to be there. This issue came up in a recent hackathon where we had developers playing with different custom rendering engines for VisIt and ParaView and were looking for how to insert a plane (to see reflections and shadows) and were surprised this capability wasn't there. As an aside, it turned into a little joke that VisIt had all of these capabilities but couldn't insert a simple shape! :)

Now this may not be a need of the core VisIt user community, which is fine, so rejecting this will not hurt my feelings. Just thought I'd provide some feedback outside of the typical VisIt user community.