tag:blogger.com,1999:blog-3779956188045272690.post3138101436423523558..comments2024-03-22T01:46:59.425-04:00Comments on Procedural World: Popping DetailMiguel Ceperohttp://www.blogger.com/profile/17586513342346629237noreply@blogger.comBlogger21125tag:blogger.com,1999:blog-3779956188045272690.post-83784864121460743112011-11-13T01:29:02.412-05:002011-11-13T01:29:02.412-05:00@Josh: I will try having two scenes in memory at a...@Josh: I will try having two scenes in memory at any given time, the current and the next one. Then I will do a smooth alpha blending on screen. We'll see if this helps.Miguel Ceperohttps://www.blogger.com/profile/17586513342346629237noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-29017504250659240682011-11-11T18:21:02.353-05:002011-11-11T18:21:02.353-05:00Hah, fair point. There's always some data cost...Hah, fair point. There's always some data cost! It would be nice if you were able to find a really cute normal map interpolation system, is that likely to be easier than geometric interpolation?Josh Wnoreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-86916089616888850842011-11-09T09:24:02.511-05:002011-11-09T09:24:02.511-05:00@Josh: Yes, in theory this should be reduced when ...@Josh: Yes, in theory this should be reduced when I switch to lower density meshes with details projected as normal maps.<br /><br />But then, I don't have much resolution available for these maps once I start sending cells over the network. I anticipate there will be a similar pop when a higher resolution map kicks in.Miguel Ceperohttps://www.blogger.com/profile/17586513342346629237noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-42189278301737341632011-11-08T21:46:25.841-05:002011-11-08T21:46:25.841-05:00One big component of the pop is the way that the t...One big component of the pop is the way that the texture changes with the geometry. The changes in colour especially are very obvious. Is there a way to get the texture of the more complex geometry on the less complex geometry?<br /><br />I'm not talking normal mapping or anything, just a mapping that transfers the same black lines etc from one mesh onto the other.Josh Wnoreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-14239919042718472642011-10-22T22:37:19.829-04:002011-10-22T22:37:19.829-04:00@Anonymous: No demo for now, maybe in one year.@Anonymous: No demo for now, maybe in one year.Miguel Ceperohttps://www.blogger.com/profile/17586513342346629237noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-58771913549526294092011-10-22T21:40:25.839-04:002011-10-22T21:40:25.839-04:00is some kind of demo releasedis some kind of demo releasedAnonymousnoreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-20236853353741584522011-10-19T10:01:15.213-04:002011-10-19T10:01:15.213-04:00@WeeTee: Yes, I'm considering blending at this...@WeeTee: Yes, I'm considering blending at this point. But before I want to test and see how bad the popping is when I switch to low-resolution meshes. A new post about this is coming soon.Miguel Ceperohttps://www.blogger.com/profile/17586513342346629237noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-1395703998065795382011-10-19T08:23:37.570-04:002011-10-19T08:23:37.570-04:00Would it be possible to blend in the new data? May...Would it be possible to blend in the new data? Maybe by using some kind of alpha blending (like @nullpointer suggested above) or perhaps morph the lower-density mesh to the higher density. This could either be done over a given time frame after the higher-density cell is loaded, so that you would have a one-second morph from the old mesh to the new, or it could morph based on the player's rate of movement towards the detailed cell.WeeTeehttps://www.blogger.com/profile/14980014117170446454noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-18314642191133508602011-10-16T13:41:15.958-04:002011-10-16T13:41:15.958-04:00@DrDiablo: I will eventually put something out the...@DrDiablo: I will eventually put something out there, but I'm not ready yet. In a year time, hopefully.Miguel Ceperohttps://www.blogger.com/profile/17586513342346629237noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-72779153699823130262011-10-16T12:02:27.392-04:002011-10-16T12:02:27.392-04:00Heyyy very nice work!!!
could you give us the worl...Heyyy very nice work!!!<br />could you give us the world generator? Or maybe create a little RPG based on a world like this to show? I am very excited about trying your program :DDrDiablohttps://www.blogger.com/profile/06575596210840377226noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-25463945652335240442011-10-10T13:56:47.663-04:002011-10-10T13:56:47.663-04:00@nullpointer: To hide the seams, each cell is 5% l...@nullpointer: To hide the seams, each cell is 5% larger than it should. So cells actually go into each other. Seams are pretty well concealed when the polygon count is high, as it is in these two videos. If you look carefully you cannot see seams anywhere (either that or I need glasses). There are a few missing triangles that show as holes in the mesh, but this is a bug in my mesh simplification. They are not seams.<br /><br />When polygon density is low, seems may appear. This is because the simplification stage makes different decisions for each cell. I tried skirts for a while, and they do work. I can generate them precisely from the voxel data so they go in the right direction, and most important, they have the right size. But this approach would require me to generate higher LODs using voxel data as well. Right now I'm using meshes which is a lot faster.<br /><br />I think I will stick with the overlapping meshes for now, and increase polygon density in the cell frontiers. Having skirts and seams adds polygons anyway, so no biggie. Also, it good that mesh resolution goes a bit up near transitions. This way cells can still be simplified in parallel and they won't be too disjoint in the boundaries.<br /><br />I still need to get there. My next target is to convert all the meshes you see in these videos to very low polygon resolution and see how it holds.Miguel Ceperohttps://www.blogger.com/profile/17586513342346629237noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-28542706174436437372011-10-10T13:43:42.321-04:002011-10-10T13:43:42.321-04:00How are you handling the change in detail?
I had s...How are you handling the change in detail?<br />I had some success with rendering 2 adjacent LODS ( by which i mean say level1-crude + level2 less crude) in the same space and using a depth based alpha fade. As Im sure you know, this is much better for terrain that is heightmap based as the LOD change really will only occur on the vertical axis. With full 3d voxelised stuff you can get it happening in all directions, which makes it much more obvious (a floating island for instance will contract/expand on all sides, making it much more noticeable.<br /><br />The C4 engine does some clever skirt-like things to seam up adjacent LODs, but I imagine you wouldnt be able to generate enough skirts on the fly.<br /><br />Im my stuff I have the chunks at view range being generated in threads that then callback when they are ready to be drawn. But I also have the cull range (when stuff leaves view) set to much further away. This is like a cheap sort of caching, since if the player turns bac k around the chunks are still hanging around :) I did do some savig chunks to disk and reloading them, but it ended up better to just regenerate them. And the data size was insane too :)<br /><br />As usual your work looks amazing, I love the scale of ambition you have. I dont care if its futureware, its a future i want to see!nullpointerhttps://www.blogger.com/profile/13696483634514382417noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-48134474017889111022011-10-09T10:36:02.509-04:002011-10-09T10:36:02.509-04:00@Ali: Thanks. In these two videos the camera hover...@Ali: Thanks. In these two videos the camera hovers from 2 to 3 meters over the ground, but in some points it drops a lot lower.Miguel Ceperohttps://www.blogger.com/profile/17586513342346629237noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-19822127131265837822011-10-09T09:58:06.957-04:002011-10-09T09:58:06.957-04:00I am in absolute awe of what you've created he...I am in absolute awe of what you've created here! A truly incredible feat. The area in the first video reminds me of a level from Halo 1 haha.<br /><br />I was just wondering if there is a way to get a sense of scale? For example how big would a human being be in this landscape? it is quite tricky to judge from the video.<br /><br />Can't wait to see more! :)Alinoreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-7012530853927341352011-10-08T16:51:48.559-04:002011-10-08T16:51:48.559-04:00Good point about preloading the highest levels (lo...Good point about preloading the highest levels (lowest res) of the landscape. It hadn't occurred to me to do that.Michael Goodfellowhttp://www.sea-of-memes.comnoreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-76041272853996145062011-10-08T13:18:34.659-04:002011-10-08T13:18:34.659-04:00@Unkown (Michael): Thanks for the video, I had see...@Unkown (Michael): Thanks for the video, I had seen it before in your site, which taught me a few things already. :)<br /><br />I think I can average 10K per cell. A scene is around 500 cells (covering a 4km square). With an empty cache, it would be 5 Megs to get the viewer started. It would require some buffering for sure. Then, as you move, it is around 5 new cells every second, so the rate would be 50K per second. But these are estimates at this point.<br /><br />One thing I did not mention is that higher octree levels have higher probability of appearing on any scene. They also take approximately one quarter of the datasize of the level before. This means at some point in the octree hierarchy it starts to make sense to pack higher levels along with the client installation. It would be a couple of Gigs, but it could make a big difference in the transfer rate. Only higher definition cells would be requested when the viewer gets close enough.Miguel Ceperohttps://www.blogger.com/profile/17586513342346629237noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-84645704219000539372011-10-08T12:15:22.351-04:002011-10-08T12:15:22.351-04:00This is how I handed the same problem:
http://www...This is how I handed the same problem:<br /><br />http://www.sea-of-memes.com/LetsCode28/LetsCode28.html<br /><br />I have nothing to teach you, but this was my approach, FWIW.<br /><br />How much data per second are you expecting the client to display?Unknownhttps://www.blogger.com/profile/01180955169768195223noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-31444226138399764002011-10-08T11:35:56.036-04:002011-10-08T11:35:56.036-04:00@Lachlan: Yes, it takes too long to generate all t...@Lachlan: Yes, it takes too long to generate all this. It cannot be done at runtime by average client hardware. At least today.<br /><br />A few years from now, maybe... but then server-side generation would allow for even more detail. Probably it will never catch up. Also dumber and slower clients are emerging: mobiles and tablets. You will want to run there too, server-side generation may have an edge for some time.Miguel Ceperohttps://www.blogger.com/profile/17586513342346629237noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-67678590413507089542011-10-08T11:32:27.967-04:002011-10-08T11:32:27.967-04:00@Anonymous: I will be able to remove most of the f...@Anonymous: I will be able to remove most of the floaters. I'm already working on that. <br /><br />I still need to spend more time on the city module. There are many things I want to do, I have only scratched the surface.Miguel Ceperohttps://www.blogger.com/profile/17586513342346629237noreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-25134406335984622412011-10-08T08:11:14.130-04:002011-10-08T08:11:14.130-04:00Very cool looking stuff. This is the pinnacle for ...Very cool looking stuff. This is the pinnacle for proc gen as far as I'm concerned. 1 question I had: you are generating all of this nice geometry procedurally, but why then are you storing it and streaming it to the client? To me that kinda seems like losing one of the main benefits of generating procedurally (Ie data compression). Is this because the computation involved in generating the terrain removes the ability to generate in realtime?Lachlan Littlemorenoreply@blogger.comtag:blogger.com,1999:blog-3779956188045272690.post-21539458028053555242011-10-08T07:04:22.602-04:002011-10-08T07:04:22.602-04:00Very cool!
Will you be able to reduce the amount...Very cool! <br /><br />Will you be able to reduce the amount of floating bits of land?<br /><br />Also, hows the city and house building going? :)Anonymousnoreply@blogger.com