Assuming a simple case of just to models in a scene with which we want to perform Boolean operations, the first thing we need to do is create BSP trees for both of the geometries. These trees are created independently for each geometry initially , so we will only be testing polygons in one model for each geometry BSP trees creation. When we create these BSP trees, instead of simply arbitrarily choosing planes to divide the polygons by the polygons on the surface of the model. Thus these BSP trees allow us to create an efficient structure to traverse the boundaries of a complicated mesh. Now that we have two representations of the boundaries of the models, we begin to merge them by traversing one of the trees to obtain a list of polygons created by splitting the polygons of the model by the dividing planes chosen when creating the tree. These could not be captured if we just used the list of polygons provided with the model for the next step in the merging algorithm. The traversal of the BSP tree is quite simple as shown in Algorithm 4.