Jump to content

Non-repetitive textures of planets


Recommended Posts

Watching Mün landing videos or playing myself (if I'm not busy) I notice very repetitive textures that look very implausible. Nowhere in real life textures repeat at all. But you don't need a fractal generator to make unique patterns.

Here's a method used by web designers: the Cicada principle.

Textures, with size multiple of big prime numbers make very long non-repeating combinations.

Three tiny images make such pattern, which repeats only every 5000px.

final1.jpg

http://www.sitepoint.com/the-cicada-principle-and-why-it-matters-to-web-designers/

Another designer tried this in two dimensions.

http://www.sitepoint.com/examples/primes/lego.html

Link to comment
Share on other sites

and now try to make something using that that looks plausibly like a moon or planet, taking care of geography, 3 dimensional terrain features, etc. etc. etc.

And oh, if you fly over the real earth or moon, things do repeat. Not on a microscopic scale, but on large scale a lot of things look rather similar from high up.

Link to comment
Share on other sites

It is not problem making non repetive texture for planets using Perlin Noise for instance.

The problem is that you then need to store this full texture which would be absolutely huge. Note that Google Maps contain more than 20 petabytes of data to provide you with ability to see our planet in such nice details.

You could reduce the amount of data needed to be stored by storing seperate Octaves textures from Perlin Noise algorithm and then combining them when needed to get same results in the end. But that would require quite some processing power. And you would still end up in large amount of data.

Link to comment
Share on other sites

@SilverWarior: Look at that cicada principle website, it shows 3 textures <1KB big, and stacks them one over another. The whole point of the cicada trick is using small textures and merge dynamically (which is doable with 3D engines I hope), getting big unique patterns from little data size.

Link to comment
Share on other sites

In principle this is doable afaik. But you may well end up seeing the same kind of repetition - the human brain is very good at spotting patterns like this. Look at your second example:

Another designer tried this in two dimensions.

http://www.sitepoint.com/examples/primes/lego.html

Look for the stormtrooper and darth vader helmets, see what I mean?

It's worth looking into though, but needs care to pull it off well.

Link to comment
Share on other sites

I made an experiment. Took one of flags, rescaled it to 11:13:17 and blended the three together. The result does not look good. Yes it does not repeat. But patterns can still be recognized in it and there is a lot of moire.

I don't think this is the right solution.

TbUZO4W.png

Link to comment
Share on other sites

I'm not sure what you're saying. Most of the planets/moons that we land on are going to generally be dead rocks, so yeah some of the dirt is going to look alike.

Just take a look at the sea and you'll understand what's the problem is. It's the same with planet surfaces.

aDST6gU.png

Link to comment
Share on other sites

I made an experiment. Took one of flags, rescaled it to 11:13:17 and blended the three together. The result does not look good. Yes it does not repeat. But patterns can still be recognized in it and there is a lot of moire.

I don't think this is the right solution.

Try rotating layers around too.

However, there is a different solution, which also used on planets in other game:

Planetary Annihilation uses sets of decals, randomly applied to the surface. It looks slightly repetitive, but lack of common grid makes it a lot more natural than everything else. Not sure, how it will work for a lot larger planets in KSP, through.

Link to comment
Share on other sites

Just for comparison I made another image - the same basics, just instead of rescaling I rotated one layer 30 degrees and another layer 60 degrees. In my opinion the result is much better. The two extra layers could be blended out when you come up close.

This method is used in screen printing to reduce moire.

8qMORKI.png

Link to comment
Share on other sites

  • 2 months later...

I know this is a necro post, but it is relevant.

I did a mock up of scaling 3 similarly generated but differently sized layers of high-contrast textures.

Here are the 3 layers. Each is 3000x3000 pixels, but the tiles that compose each are different sizes, 150x150, 96x96, and 134x134, respectively.

TyTqc7q.png

uj6B4JR.png

Q3Fwt2n.png

Here is the composite of those 3 layers each weighted equally. It is by no means perfect, but it looks a lot nicer. It technically repeats only once every 160800 pixels, but there are near-repetitons every so often in the image that generate some minor artifacts.

rwKtddh.jpg

Edited by Pds314
Link to comment
Share on other sites

  • 2 weeks later...
It is not problem making non repetive texture for planets using Perlin Noise for instance.

The problem is that you then need to store this full texture which would be absolutely huge. Note that Google Maps contain more than 20 petabytes of data to provide you with ability to see our planet in such nice details.

You could reduce the amount of data needed to be stored by storing seperate Octaves textures from Perlin Noise algorithm and then combining them when needed to get same results in the end. But that would require quite some processing power. And you would still end up in large amount of data.

So why do you want to save it all together? Make it procedural, it's not that hard to generate the surface including textures in realtime, look at space engine, you can visit Quatrillions of places, all done with ~600MB textures, and none of them is used for procedural planets.

Link to comment
Share on other sites

So why do you want to save it all together? Make it procedural, it's not that hard to generate the surface including textures in realtime, look at space engine, you can visit Quatrillions of places, all done with ~600MB textures, and none of them is used for procedural planets.

Rendering could take enough time to cause pauses depending on how detailed the random number generator is working. Otherwise, the results are eye candy even with clouds enabled.

JwnCjNF.jpg

KxebjKJ.jpg

M4g8MzI.jpg

Fd5YzmM.jpg

Link to comment
Share on other sites

The planets are easily the worst looking bits of KSP at the moment. The procedural craters for the moon gave me hope planets might get a nice-looking overhaul, but no joy yet.

In addition to changing texture tiling, I'd hope for more LoD levels so that things look nice and detailed when walking around, also more scatters and collision meshes for the scatters.

As things are now is fine for a placeholder or a finished dry flight-sim from 1998, but it's not really up to standard for a proper game.

Link to comment
Share on other sites

Rendering could take enough time to cause pauses depending on how detailed the random number generator is working. Otherwise, the results are eye candy even with clouds enabled.

http://i.imgur.com/JwnCjNF.jpg

http://i.imgur.com/KxebjKJ.jpg

http://i.imgur.com/M4g8MzI.jpg

http://i.imgur.com/Fd5YzmM.jpg

What was used to produce those first three images? (graphical settings, hardware, mods)

Thanks.

Link to comment
Share on other sites

Great thread. I know there have been plenty of demonstrations that repetitive textures aren't necessary with procedural generation and I'm wondering why KSP still has repetitive textures.

Well, it's a place-holder after all. I'm sure SQUAD will eventually work on planet-related features, like weather and surface. We just need to have patience. But I must admit - having planets look like those in Space Engine would be beyond awesome. It would also bring us a step closer to having procedurally generated galaxy, but I don't want to start a discussion about it here so *shhhhh* ;)

Link to comment
Share on other sites

About rendering time, KSP uses little to no GPU

So we have spare room for rendering or having disableable features to make good use of our gpus.

Fancy effects and heavy rendering would be all our GPUs would have to do, so you would just pull that slider to the point it doesnt drop your framerate and you good to go.

Link to comment
Share on other sites

This thread is quite old. Please consider starting a new thread rather than reviving this one.

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Create New...