I’d like to ask if there is a sample (in SDK or Advanced Samples) in which you can manipulate geometry nodes (or Transform nodes) via mouse input. I personally, didn’t found anything (except camera manipulation which is present in almost all of the samples).
I would be grateful if anyone can provide some info on how to start implementing this, or on how to render a manipulation gizmo on a selected geometry. Are there any advice on how to neatly implement mouse input in OptiX (except camera manipulation)?
I already can manipulate geometries from UI via ImGui. I am interested to learn about mouse input geometry manipulation.
Thank you in advance,
If you’re new to OptiX, I would recommend to work through the OptiX Introduction samples after watching my GTC 2018 presentation on that.
All information about that in this sticky post:
The scenes I build in the OptiX introduction examples are all using Transforms over the individual objects and when changing the code a little to track each of transform nodes inside the Application class, changing them is just a matter of setting their matrices and marking the root node acceleration structure dirty.
Detlef thank you very much for your response,
I understood that by reading the Programming Guide a little more carefully :)
So if I understood correctly, I have to create GeometryGroups for each mesh of a 3D scene, and set them as children to individual Transforms nodes each, which consequently will be added as children to a Group node, and finally add this Group to another Transform node.
That wouldn’t be needed, unless you’re instancing complex sub-trees.
You should strive to make the OptiX-side scene hierarchy as shallow as possible for most efficient runtime traversal.
My OptiX Introduction presentation contains the three minimal OptiX scene graphs for a single geometry, many identcial instanced geometries and many instanced geometries with shared acceleration structures (AS) but different materials.
The lesson from that is to keep the scene in a one- or two-level BVH for maximum performance. That is a maximum of two acceleration structures on the path to the geometry, one at the top Group root node and one on each GeometryGroup, with AS possibly shared among identical geometries.
Please read this thread for some more information on OptiX scene graph structures: