tag:blogger.com,1999:blog-3779956188045272690.post9185239820053958887..comments2024-03-22T01:46:59.425-04:00Comments on Procedural World: Covering the Sun with a fingerMiguel Ceperohttp://www.blogger.com/profile/17586513342346629237noreply@blogger.comBlogger17125tag:blogger.com,1999:blog-3779956188045272690.post-63503630757348454112013-05-25T08:32:54.013-04:002013-05-25T08:32:54.013-04:00I've been wondering for a while now, would it ...I've been wondering for a while now, would it be possible in your engine, or the unity addon, to create road systems procedurally?Veqtorhttps://www.blogger.com/profile/13559084852749421339noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-77274948747390113862013-05-16T18:20:20.710-04:002013-05-16T18:20:20.710-04:00What if you viewed that floor at an angle? Wouldn&...What if you viewed that floor at an angle? Wouldn't it then not be an occluder? Or do you store occlusion information from multiple viewing angles?Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-60129690562732678072013-05-09T21:42:53.519-04:002013-05-09T21:42:53.519-04:00I tried a simple system where each batch would get...I tried a simple system where each batch would get a texture space assigned to it based on its polygon area. I ran some rather complex UV unwrapping and rendered the batch into a smaller page of a large texture. The paging was managed using a Quadtree.<br /><br />I noticed this was taking a lot of texture memory and the results were not as good as shading the geometry after projected.<br /><br />When you use artists, virtual texturing makes a lot of sense. You can have beautiful hand-painted detail everywhere. If you are synthesizing textures on the other hand, it does not make much sense. It is better to synthesize only the pixels you see.<br /><br />Miguel Ceperohttps://www.blogger.com/profile/17586513342346629237noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-91867940131005704202013-05-09T21:35:01.832-04:002013-05-09T21:35:01.832-04:00Right, but you do not need to fill a cell entirely...Right, but you do not need to fill a cell entirely for it to become an occluder. For instance imagine you have a thin wall that crosses two opposite sides of a cell. Even if the thin wall is crossing at an angle, you can be certain the cell occludes anything behind.<br /><br />A typical case is floors. Even if the floor is thin, this method identifies the cell is hiding any other cells below it.Miguel Ceperohttps://www.blogger.com/profile/17586513342346629237noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-64910312378068351292013-05-09T17:25:09.045-04:002013-05-09T17:25:09.045-04:00The big problem I see with this is that indoor sce...The big problem I see with this is that indoor scenes tend to not fit into grid cells very effectively. Say you were inside a room with thin walls - unless the grid was especially fine-grained, the walls wouldn't be thick enough to fill an occlusion cell, even though they probably occlude most of the surrounding area. You could throw in a hack so that the walls were always 1 grid cell thick, but that would still allow a lot of overdraw as both sides of the walls would be rendered.<br /><br />I remember quite a few games in the DX7/DX8 era, such as Morrowind, would separate indoor/outdoor regions so that they could change their occlusion strategy. Quad/Octree-based for outdoor scenes and a BSP/portal based strategy for indoors.Lachlanhttps://www.blogger.com/profile/08481291930396704721noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-58058451814327231562013-05-09T01:22:04.937-04:002013-05-09T01:22:04.937-04:00If I understand this correctly, due to the perspec...If I understand this correctly, due to the perspective of the camera, each succeeding cell will cover the same amount of rendered pixels/screen real estate, correct? What sort of density are you using? On average how many pixels per cell? How long will it take before our hardware will be able to split our viewing screen into the two million odd cells per distance layer necessary for a one cell per pixel ratio? (at this point, I'm guessing that finer cell resolution would simply be wasted processing power?)Ajmhttps://www.blogger.com/profile/12985928729302303917noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-69759066264681218872013-05-08T22:20:42.813-04:002013-05-08T22:20:42.813-04:00I think your clipmap methodology + mega textures w...I think your clipmap methodology + mega textures would probably be a match made in heaven. love to hear your opinion on the feasibility off it.<br /> Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-39683766001607580992013-05-08T20:51:28.283-04:002013-05-08T20:51:28.283-04:00Oh, right! Didn't think of that... So this is ...Oh, right! Didn't think of that... So this is another bit where his voxel structure helps a lot I take it =P.Kamicahttps://www.blogger.com/profile/09074839497845172950noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-40758097463613147512013-05-08T20:18:54.504-04:002013-05-08T20:18:54.504-04:00This was that occlusion tease we got to see in the...This was that occlusion tease we got to see in the last video right? It's fun to read a detailed description of your approach. It sound like you have found a good balance. Its fascinating to see how many 2D/3D problems can be addressed with quad/octree type storage & addressing. It was a good visual aid during you explanation too, thanks! <br /><br />It's got to be fun to refine things like this, since every enhancement means more polys for use elsewhere... as long as it doesn't tax the engine performance in other computational ways.<br /><br />Good stuff and thanks for sharing!Jonathan M.https://www.blogger.com/profile/13053063838125968099noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-91397263377633788362013-05-08T09:34:14.663-04:002013-05-08T09:34:14.663-04:00The idea is to have a very simplified occlusion mo...The idea is to have a very simplified occlusion model for the cell. I find the largest axis aligned box that is completely inscribed into the solid geometry and use it as an occluder. The planes you describe also do well.<br /><br />From there you just render this occluding geometry into a depth buffer. Then you can test each cell against the buffer and see if any point is likely to show.Miguel Ceperohttps://www.blogger.com/profile/17586513342346629237noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-19915109072000366642013-05-08T09:27:51.227-04:002013-05-08T09:27:51.227-04:00It is a clipmap extracted from an octree. The pict...It is a clipmap extracted from an octree. The picture shows a quadtree cause they are best to show these ideas in 2D.Miguel Ceperohttps://www.blogger.com/profile/17586513342346629237noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-32035495588777679292013-05-08T08:05:35.019-04:002013-05-08T08:05:35.019-04:00Thanks for a more technical post.
You got some sm...Thanks for a more technical post.<br /><br />You got some smart way to determine that a certain cell is an occluder? Since each cell can contain loads of triangles, as long as you don't find an early occlusion cell you would have to test a load of triangles.<br /><br />You precompute some simple occlusion mesh for each cell? Do you check on triangle level at closest LOD level and a simplified occlusion mesh in those farther away or just only care about cells that are completely solid from an octree standpoint.<br /><br />I have been thinking about pre-computing and saving information if a cell can be considered solid in the x,y, and z direction and saving these occlusion planes for each cell.<br /><br />Any hints as how you determine if a cell is an occluder?Thomas Åhlénhttps://www.blogger.com/profile/06586916385819266888noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-75279749255606911432013-05-08T07:55:23.332-04:002013-05-08T07:55:23.332-04:00The figure does not look like a clipmap, it seems ...The figure does not look like a clipmap, it seems to me that it is a quadtree. <br />Which one do you use ? Because clipmaps means to update the structure at each move (or to compute the occlusion with an implicit definition of it) although a quadtree can be static (and just look at different depth depending of the distance)Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-19044701043398481142013-05-08T07:46:15.107-04:002013-05-08T07:46:15.107-04:00You can make it with an Octree, which is a 3D vers...You can make it with an Octree, which is a 3D version of the quadtree.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-80474471622636918312013-05-08T07:14:53.579-04:002013-05-08T07:14:53.579-04:00It works in 3D. But it is a bit harder to explain ...It works in 3D. But it is a bit harder to explain and implement. You need to reorder all the geometry into a 3D version of the above 2D grid. <br />Then identify which of these 3D batches are visible.<br /><br />I know in openGL you can query whether or not a chunk of geometry is visible in the scene. By first rendering the scene to the depth buffer. Then querying each batch against this depth buffer.Anonymousnoreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-5113156630924761522013-05-08T04:28:24.173-04:002013-05-08T04:28:24.173-04:00Sooo... does this work in 3D? Without infinitely h...Sooo... does this work in 3D? Without infinitely high walls occluding the terrain behind it?Kamicahttps://www.blogger.com/profile/09074839497845172950noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-52307956164391689522013-05-08T03:39:08.189-04:002013-05-08T03:39:08.189-04:00Interesting, it's for sure a principle that...Interesting, it's for sure a principle that's simple as stated, but I am a lot more curious about implementation...<br /><br />...this should give away that I am a little back on the programming side since I'm not entirely sure I understand how you are determining the occlusion and thus traversing the octree.<br /><br />I assume that you have anyway some sort of "visible" flag that gets set/unset byt the test right?<br />Pkrcelhttps://www.blogger.com/profile/08984173533786655484noreply@blogger.com