Page 3 of 4 FirstFirst 1234 LastLast
Results 21 to 30 of 32

Thread: Planet texture generation code

  1. #21
    Junior Member
    Join Date
    Oct 2012
    Location
    Columbus, Ohio
    Posts
    4
    Blog Entries
    3
    SilverWarior,
    I am attempting the impossible.
    Part of my plan is to start with a planet as the game area as opposed to a square. I have been looking for a google earth, earth 3d, ossimplanet equivalent for Pascal but have not found anything...until I found this post.
    I would be very interested in learning about your progress.
    Thanks in advance,
    Bill

  2. #22
    whtemple1959 welcome to PGD first.
    Unfortunately I haven't done much progress so far. As you might nit know this was part of myGame project with whic I intended to ener 2nd PGD mini competition. But since there was a time limit I had to abandon further development on this part and try to finish rest of the game. Unfortunately I was unsecsessful as the time ran out before I managed to create games GUI (spent more time on this mater than I planed).
    Even after the 2nd PGD mini competition was over I had not resumet work on this becouse I got idea of making a library which would alow me to easily make GUI for any of my future games.
    I must also admit that I haven't done much programing in the last mont or so. I0m having problem getting myself to do any work.

    My original goal was to use perling noise function to generate heightmap texture, use some postprocessing on this texture for finetuning and then finaly use the heightmap to generate planets surface texture. I didn't have intention to make actuall planet model but only to make texture which I could render on a sphere so that it will look atleas a bit similar to planet.
    Sure I could apply heightmap to the sphere to actually gain elevated terrain but this was deffinitly out of my reach for a project which needed to be done in a month time.

    You are saying that you intent to use sphere for game map instead of square map. What dimensions do you intent to use? If you want lots of percision you have to realize that this will require lots of space for textures.
    For instance Google Earth suposingly uses more than 150 TB of data for storing all the surface images.
    http://www.gearthblog.com/blog/archi...up_google.html

    Now if you want quickest answer about how to implement planetary map in your game I recomend you to get in contact with Sascha Willems the author of game named Projekt Weltherrscher.
    http://www.pascalgamedevelopment.com...t-Phase-2-quot
    He is using planetary map in his own game and I'm sure he will be glad to help you out. I only think that he has no algoriithm for radom map generation but I might be wrong (havent tried latest version of his game).

  3. #23
    Gimp is your best friend if you want a simple planet done I just drew all kinds of noise and blurs with different colors, then finally apply "Make seamless" effect. This makes the texture wrap from sides so that you can use it as texture, without visible edges when coords 0 and 1 clash. Different planet types ended up looking like this:
    https://docs.google.com/open?id=0B7F...HhhbVRnam9rTVU
    Each have 2 cloud layers which rotate the planet at different pace.

  4. #24
    Yes I agree but if you remember I was trying to make algorithm which would randomly generate planet textures inside my game.

  5. #25
    Depends on what you need from the texture. To backtrace actions you would do with Gimp, and replicating with Pascal is not that hard. But does it need to support close-up generation, like zooming in tiny section of the planet and generate a new high quality texture to that? Then you need a real formula, and can't rely on random, blurring or anything like that. I could suggest sine-waves in multiple layers and in different frequencies. You can have 1 set of waves with X-coordinate and other for Y, then sum them up for RGB or heightmap representation.

    Say, sin(X) does a very static wave that you can see repeating. But (sin(X)+sin(0.9+0.31235*X)*0.7124) will not make any repetitions. Although, for it to wrap around seamlessly you might want it to have some repeat, scale it with proper PI-multiplications etc...

  6. #26
    PGD Community Manager AthenaOfDelphi's Avatar
    Join Date
    Dec 2004
    Location
    South Wales, UK
    Posts
    1,245
    Blog Entries
    2
    Guy W. Lecky-Thompson wrote a couple (maybe more books) on this subject which I found very interesting.

    Inifinite Game Universe: Mathematical Techniques (ISBN 1-58450-058-1)
    Infinite Game Universe: Level Design, Terrain and Sound (ISBN 1-58450-213-4)

    I'll confess I've only really read the first one properly, it's about the maths behind things like sequence generators, pseudo random number generators and fractals (to name a few) which you can use to seed levels from a single number. I was reading them because I wanted to be able to store a huge game universe in an absolute minimum amount of data. Anyone old enough to recall the game Whirlygig and the ST and Amiga? I believe that used seeding techniques for scenario generation and had something like 33 million levels and yet fitted on a single sided 3.5" disk, a mere 360KB.

    Anyhow, I digress. There is a lot of information about this sort of procedural generation and seeding available on-line. User137 is quite correct though, for more than a handful of planets, building them by hand will be too much effort and maths will have to take center stage to generate them. As he has alluded to, the trickiest part is the seamless texture, but if you use 3D Perlin noise to generate your data values (this is seeded and so will be repeatable if memory serves and more importantly, it is seamless so you don't have to worry about that specifically) you can use a polar coordinate scheme to map a position on the sphere to a position on a bitmap and generate your textures dynamically. Perlin noise can also, again if memory serves correctly, scale well so you can zoom in fairly easy.

    I say 'if memory serves' alot, because I did spend a lot of time looking into this stuff myself about 6 years ago... I've consumed a few crates of beer since then and I've slept quite a lot so my memory of the details isn't 100%, just the principles.
    :: AthenaOfDelphi :: My Blog :: My Software ::

  7. #27
    Junior Member
    Join Date
    Oct 2012
    Location
    Columbus, Ohio
    Posts
    4
    Blog Entries
    3

    Clarification for SilverWarior

    Hello,
    I do beg every body's forgiveness as I struggle to understand the dynamics of programming and how best to express my vision and goals.
    To start, a game that I enjoy playing is a 2D game of course played on a square surface. If you start at point a and move in a straight line to the right when you come to the edge you can go no further. Now in my mind you should be repositioned to the the left side and be able to continue on your path.
    It is my impression that the only why to accomplish this goal is to have a spherical game space...of course I could be wrong.
    As a beginning base for my project I would prefer this MyWorld.jpgas a game space. With the ability to zoom into street level yet not have the streets or buildings one would find in say google maps. Natural Earth does have the appropriate dataset although there would need to be some work done as when their maps are zoomed in they get blurry. But, I am sure there is a height map, shapefile that can resolve that issue.
    Then there is the issue of the actual ...algorithm... to create the proper paths such as something like these.MyWorldBasicTravelLines.jpg

    Now, not being a programmer much less a game programmer, I can image that there is some process to achieve this goal. But, I am not yet knowledgeable enough to understand it.

    I, in my project am attempting to fly from space, land, drive in a vehicle until I come to the ocean, then board a ship etc. etc.
    Once I figure out the 3D terrain then I hope I can then combine it with other open source code snippets to finish the project...easier said then done.

    So, I guess the real question is. Does a terrain engine or a game engine allow for this type of path following? Will I need a PhD in mathematics to program the behavior or has some wizard already figured it out? If there is an engine that will allow embedding satellite imaging to create a natural earth terrain could some one suggest it to me?

    As always all advice an d admonishments are appreciated.
    Bill

  8. #28
    I just read your comment on my profile page, so I guess it's better to answer here than via private messaging :

    What you're planning to do is a huge undertaking, and even a skilled programmer may need several years to implement what you want to do. So prepare to learn a lot, especially when it comes to 3D realtime graphics, physics, path finding and optimizations.

    Zooming in from space to the "street level" of a planet is a very complex thing to implement. You need a smart (and performing) way of storing your data (even with a high-end GPU and much RAM you won't be able to keep all necessary data in memory all the time), some continuous level-of-detail algorithm with advanced visibility checks to actually only draw what's visible (again same as storing all data isn't possible, rendering everything, if not visible or too far away, would be too much for your hardware). And these are just the basic. Adding good physics is another thing and many physics engines won't be well-suited for such a continuous scaling from space to ground.

    A very good place to learn about the techniques necessary for what you're about to do is http://vterrain.org

    When it comes to rendering planets and all the stuff they contain this page is a treasure chest of knowledge. So maybe take a look at their articles, though most of them will be very hard to understand unless you're pretty good at programming and have done something in terms of terrain renderning.

    So as an advice you should just start at ground level, render a limited terrain (using maybe octrees for visibility checks, to learn about this important feature) with basic physics that allow the player to walk on the terrain. Then start adding objects like trees and roads, include a phyisics engine for the vehicles and then zoom out stept by step, always adding to your base.

  9. #29
    @whtemple1959
    Are you just trying to transform OpenTTD to work on globe or are you trying to make the game to work with real 3D graphics?
    If it is the first option than it can be done but you will have to lower the detail to only have roads and railroads between large cities. Reason for this is the fact that you will never manage to sucsesfully simulate everything if there would be too much detail.
    I'm not sure for OpenTTD but original Transport Tycoon Delpuxe had the limitation of how mny of each structures, roadrs, rails can be on any map. And it was quite low so when playing on largest maps you quicly got to that limit which prevented you to build further.
    This was all implemented so that game simulation kept running smothy even on bit weaker computers. I asume that OpenTTD has theese limits a lot higher since todays computers are much more powerfull. But still I don't think that they are enough powerfull of sucsessfully running simulation of the whole world with such detail as present in OpenTTD.
    But if you plan on making your game in full 3D graphics than you will have to scale down your simulation part even further becouse processing 3D graphics is quite demanding.

  10. #30
    Some things can be learned from minecraft. It's not world size that makes a difference, but how much you show it at the time. If you need a real Earth model, you need to stream it from existing data sources. I'm not sure if Google-maps contain height information. If it does, you can use splines to smoothen out the details in between. Then again i'm not sure if that also counts as "blurred". There simply isn't height data in 10 meter accuracy propably anywhere, and such database would be measured in terabytes.

    Could add that with Earth data we are working in 2D pretty much. So possible optimizations go propably for quadtree, not octtree. Any data can be indexed or arranged in such a way that you can look them up quickly. Especially for project like this, you can expect that "player" doesn't make any changes to the terrain, so it's possible all the data can be in static sized blocks. That simplifies things.

    Oh, also the Earth topic might go on another thread entirely? Not so related to texture generation at all now.
    Last edited by User137; 07-11-2012 at 10:28 AM.

Page 3 of 4 FirstFirst 1234 LastLast

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •