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.
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.