dynamic objects occlusion culling

Started by
5 comments, last by yikai 18 years, 10 months ago
I am trying to implement occlusion culling for my master thesis. There are several questions bothered me. And I hope that somebody can give me a guide. 1. I have to adjust my view cone to be sure coservative rendering. I use projection matrix and Model view matrix to calculate 6 planes. Could there someone teach me how to adjust my view cone? 2. How to pick occluders ? I am very confused. I choose the nearest objects to be my occluders. But it seems not efficient. 3. I didn't rasterize my scenes, but many methods does. It's an outdoor environment. Is it possible to implement occlusion culling without rasterizing? And how to do this? All I know is to calculate the position of occluder which project to rendering plane. Then test is there any objects in the hull. And this is also not efficient. Could someone help me done this culling efficient? thanks a lot.
Advertisement
I've worked in the past with occlusion culling and i can talk of my experience
here the steps i've performed
i build the frustum and i use it both for kdtree travesal and occlusion culling
if a node is in frustum add the potential occluders list
i use a projection method , i don't use rotation or vertex transofrmation, this is possible because when i project the nodes i choose as an occluders the bounding boxes of object(s) to be culled are also projected and thus it is a
description of a conservative domain both for occluders and occludees
( spelling??).
The question of how to pick occluders really is very sensitive i use an aprroximation of the projected area, the bigger, the better the occluder is
also the continuity of surfaces is a good hint for choosing the best occluder
if a surface is connected with other, and it has a big area , chances are that also the connected surfaces are big enough to be picked up.
There are two possibilities , one is using a rasterizer ( pick up your old triangle rasterizer and optimize with sse instruction ) you only need the z values , or work entirely in 3d space, beam trees do that , and also you may use bounding volume for the biggest occlduers, but this method in my humble opinion is rather 'exploding' lot of checkes that add lot of volumes ,
this is also an issue with the beam tree, you spend most of the time traversing hte tree and clipping the nodes , so i would go for a rasterizer which in the worst case is O(xres*yres) not O(n^2)
Thanks your experience, Ketek. ^_^

It's difficult to choose a good occluder. And in my system I don't preprocess the entire scene(ex. octree,BSP...). I only focus on the objects which are in my view frustum. And until now, I found that NVIDIA hardware is support the occlusion query. Now I am trying to write that code. And I can't write its rough sample code. Now I am trying to use this OpenGL Extension function to do occlusion culling. If someone know how to do that, it will be helpful. ^_^
ultimategameprogramming.com has some tuto about occlusion. with OpenGL Extension and manual.

" I don't preprocess the entire scene(ex. octree,BSP...). I only focus on the objects which are in my view frustum."
how do you define if the object is in frustum or not? don't you use a tree or something else that holds all scene??? of course after detecting this, you will test occlusion.
+-+-+-+-+-STR
I don't know if this is write. It's my opinion about moving objects.
If entire scene only has moving objects, rasterizing whole scene isn't a good choice.
We have to update the position of moving objects and ensure what cell they belong to.
Why we just concentrate the position of those moving objects.
We can check their position to ensure if they are in my view frustum.
At last, use hardware accelerate to render scenes.
This is my thought about handling dynamic objects. Perhaps rough, thanks your suggestion.
Checkout the book GPU GEMS. there's a nice article in there about how to modify your rendering pipeline to remove the need for 'occluders' vs 'occludees'


FROG!
Thanks the book you suggested.
I will look out what I need in that book. ^_^

This topic is closed to new replies.

Advertisement