Greetings.
From what I understood, selector nodes do not get assigned acceleration structures. I assume that means that no bounding box is created for a selector node, given that no acceleration structure builder is invoked.
Assume that there is a root group which has a number of children (groups / geom groups); the root group has a certain acceleration structure (e.g., ‘Bvh’), that allows it to quickly traverse coarse hierarchy and discard children based on their coarse bounding boxes.
- What if the root group has a selector node among its children? How will the selector node ever be visited, given that it doesn’t (I assume) have a bounding box yet?
EDIT: I tried using selector’s children that occupy bounding boxes of fairly different shapes, i.e. rectangles whose largest dimensions can be either in x,y or z direction. Intersections with the selector node occur properly, so each frame appropriate geometry gets visualized. Hence, I am inclined to think that when a selector node is constructed, a coarse bounding box is created, which is a union of all the bounding boxes of the selector’s children. I assume that’s the case, but I couldn’t find it in the documentation. Is that correct?
I’ve been testing an alternative to selection nodes. For testing purposes, I simply defined a root group (with ‘Bvh’ for acceleration structure), which has exactly one child. Every child is a fairly complex geometry group, that has some acceleration structure attached to it and is build only once.
Each frame I kept exchanging root group’s single child in the following fashion:
_root_group->setChild(0, _scene[frame_number]);
_root_group->getAcceleration()->markDirty();
Where _scene is an std::vector. The idea is that the root group simply needs to rebuild a coarse hierarchy of bounding boxes, in case the root group has several children and you change some of them with time.
- While I am at it, when I exchange children,i.e. “_root_group->setChild(0, _scene[frame_number])”, what happens to geometry group that was previously assigned to the root group? Does it get unloaded to host?
I would greatly appreciate if you could help me out understanding this!