You are viewing the course site for a past offering of this course. The current offering may be found here.
Lecture 9: Intro to Ray-Tracing & Accelerating Ray-Scene Intersection (68)
aliwang2001

When is it better to use spatial partitioning versus object partitioning, and vice versa? What are some examples of each? I understand how the algorithms work, but I'm struggling to understand each of their applications in ray tracing.

madssnake

^ Sort of going off of that, is the decision often based on what type of tree you decide to use? or do you first determine a partitioning method which would then dictate tree hierarchy type?

CharlesLiu02

I was also wondering in what situations a particular partition would be better because to me, it seems like KD-trees and BVH are very similar in that they split the contents of the scene and keep track of their children.

CardiacMangoes

Coming off the prior comments, how do we choose when we do spacial or object partitioning? Intuitively I feel like object partitioning is more useful when you have dense patches of objects in a scene while spatial partitioning is better for sparse scenes.

waleedlatif1

Similar to what was said above, I'm curious as to what situations using spatial partitions (KD-tree) would be useful more than object partition? I understand that it reduces the amount of objects that we need to do the intersection test on by a significant factor, but more often than not I feel like the issue is with overlapping objects in dense areas, meaning that object partition would be more appropriate.

kkoujah

Spatial partitioning is useful when the queries involve regions or proximity, such as range queries or nearest neighbor searches. Also, it can be more efficient than object partitioning when the dataset is very large and the queries are computationally expensive, but it can be more complex to implement than object partitioning, especially for high-dimensional data. On the other hand, object partitioning is useful when the queries involve individual objects, such as searching for specific items in a database. It can be simpler to implement than spatial partitioning, especially for low-dimensional data, but it is less efficient than spatial partitioning when the dataset is very large or the queries involve proximity.

jacklishufan

In terms of "objects", how are they defined in this context? If I have a teapot with multiple triangular meshes, are the triangles objects, or is the teapot geometry a whole object? If the latter is true, are there intermediate possibilities of splitting by triangular meshes and store a list of meshes in the node rather than an object?

chetan-khanna

Out of curiosity, are there any situations in which you might want to use both spatial and object partitioning while tracing a scene? Let's say you use spatial partitioning for half the scene and then object partitioning for the remaining half? (For simplicity's sake, let's assume no shapes from the object-partitioned part overlap with the spatial-partitioned part)

Unicorn53547

My understanding is that BVH is more friendly when we want to deal with dynamic things as we can reshape some local partition instead of rebuild the overall partitions as KD tree. This will be accompanied with relative slow speed. But seems there have been some accleration for BVH on GPUs. A discussion I found about speed of BVH vs KD tree is here

kkkhanl

https://www.researchgate.net/publication/284233414_Performance_Comparison_of_Bounding_Volume_Hierarchies_and_Kd-Trees_for_GPU_Ray_Tracing I found this paper to be pretty interesting for this discussion, it found that BVH is faster on small sized scenes. while spatial partitions are better for larger-sized scenes with high occlusions, due to various factors such as traversal overhead or also memory access patterns.

Shruteek

Object partitions immediately remind me of video games - I believe many game graphics systems use bounding volume hierarchies (or object partitions of some nature) when dealing with dynamic ojbect positions. I hear these partitions referred to most as 'hitboxes,' as seen in pre-2015 CS:GO and other first-person shooters, or in games like Minecraft. I cannot find online how prevalent BVHs are in gaming, but I do notice another type of object partition called bounding interval hierarchies, which seem much like BVHs except they only store partial information of each partition and they order themselves like KD-trees.

You must be enrolled in the course to comment