Poodmund

Planetary Texturing Guide Repository

Recommended Posts

Planet Texturing Guide Repository

This thread will aim to deliver a range of guides and tutorials to cater for those who wish to create planetary textures using a variety of methods, software and mod plugins.

Please feel free to contribute any material you think would be suitable to list within this archive and I will endeavor to keep it up to date.

------------------------------------------------------------------------------------

Celestial Body Creation Theory

World Generation - by Tyge Sjöstrand

Atmosphere Calculators - by OhioBob

------------------------------------------------------------------------------------

Map Making

Making Maps Using Photoshop (... and a little Wilbur) - by Jeremy Elford: 

The Genesis of Israh: A Tutorial (Amazing tutorial using Photoshop, Wilbur & Fractal Terrains) - hosted on World of Gotha

Eriond: A Tutorial for GIMP & Wilbur - by Arsheesh

Creating Mountains and Other Terrains in Photoshop - by Pasis

Realistic Mountains with Photoshop and Wilbur - by Miguel  Bartelsman

Mountain Techniques using Wilbur and GIMP - by Torq

Simply Making Mountains in GIMP & Wilbur - by Ludgarthewarwolf

Making Mountains for the Artistically Challenged - by Unknown

Painting Heightmaps for Satellite Style Maps - by Theleast

Quick Guide for Bumpmaps in Photoshop (Combining Colour and Normals for presentations) - by Pasis

Saderan (Creating Land/Ocean maps in Photoshop) - by Tear

Realistic Coastlines in Photoshop/GIMP - by Old Guy Gaming

Terrain in Photoshop, Layer by Layer- by Daniel Huffman

Procedural Planet Textures using Adobe After Effects - by Poodmund

How to Make Prodedural Gas Giant Textures using Gaseous Giganticus on Windows 10 - by Poodmund

How To Make Gas Giant Textures for Kerbal Space Program Mods - by GregroxMun

Gas Giant Texturing Tutorial - by Galileo

How to Horizontally Wrap/Create Horizontally Tile-able Textures - by Poodmund

Removing Polar Pinching/Distortion from your Planet Map textures - by Poodmund

------------------------------------------------------------------------------------

Software Tutorials

Wilbur: Filling basins and incise flow to make eroded terrain

Wilbur: Using the tessellation tool

Wilbur: Rivers

Wilbur: Going from a sea mask to a terrain

Wilbur: Rivers and lakes

Wilbur: Islands

Wilbur: How to generate realistic(ish) terrain below Sea Level

Fractal Terrains Tutorials - by Old Guy Gaming

------------------------------------------------------------------------------------

KSP Plugin Tutorials

Setting Up EVE Cube Maps - by Poodmund

Axially Tilted EVE Textures (Cyclones/Auroras) - by Poodmund

PQS Mod:VoronoiCraters Guide - by OhioBob

------------------------------------------------------------------------------------

Software Links

NASA's GISS: G.Projector - Global Map Projector

Wilbur - Free, extremely powerful noise based terrain generation

Fractal Terrains - Noise based terrain generation and colouring, based on Wilbur, License required

Libnoise Designer - Procedural Noise Generation tool using Libnoise library. Executable file located in \Bin\LibnoiseDesigner.exe

GIMP - Free image manipulation software

Paint.net - Free image manipulation software

------------------------------------------------------------------------------------

Please contribute to the above and I will list it in an appropriate section if suitable.

Edited by Poodmund

Share this post


Link to post
Share on other sites

Texture Sourcing from Google Images / Websites

 - This is an intermediate technique which involves the overlapping of multiple satellite terrain height maps.

Image result for heightmap png

This is the heightmap we will be using. First, you have a blank part of your heightmap which will look like a flat surface in game. We certainly do not want this because it stands out, even after applying PQSMods

g1Wo6v8.png

What we do is we copy the image into photoshop. Use ctrl + v to paste the image into a new layer. Press Ctrl + T to transform the image. Rotate it into a good looking orientation. Depending on however you wish to blend the seams of the heightmap, merge the layer down to the heightmap. Make sure you are not using indexed. At the top, go to image > mode > RGB.

AMiGmeB.png

Then merge the seams by using any preferred technique. This includes simply rubbing out the edges, blurring the edges into the surrounding heightmap, content aware, heal tool or any other method of removing jagged edges.

m1E8Yxe.png

This is our completed height map!

 

Share this post


Link to post
Share on other sites

Horizontally Wrapping Textures/Tile-able Textures

1. Grab you texture in your image editing program. Here we have a horrible photo from NASA's archives that won't suit a planetary texture but it will suit the purposes for demonstration of this technique. This texture currently does not wrap well around a cylinder as we will see shortly.

cmC2IFr.png

2. Select Filter > Other > Offset from the Filters menu.

tP95SY1.png

3. In the horizontal input, type in the half-width value of your image. For example, this texture is 2048px wide, so I have entered 1024 to offset/wrapped around the image horizontally by half. Here you can see how apparent the fact that the image is not horizontally tile-able as we have the stark contrast of the edges of the texture not meeting up in a nice fashion. If the texture was wrapped onto a sphere in this state you would see the highly visible texture seam running from the North to Sole pole.

cdfWBr4.png

4. Use all your Photoshop/GIMP/Paint.net etc. skills to remove the join and make it appear that the two sides of the image blend into one at the center.

KGunLwe.png

5. Once finished, go back to Filter > Other > Offset

jR6O3Wm.png

6. Enter the half-width value of your image to return the texture back to its original horizontal position.

aneMQsP.png

7. There you have it, you have successfully blended the sides of your texture so it can tile/wrap around horizontally forever without being noticeable.

gKiffXc.png

Share this post


Link to post
Share on other sites

Removing Polar Pinching/Distortion from your Planet Map textures

1. Grab you texture in your image editing program. For this example I am using the horrid texture that I demonstrated the Horizontal Tiling process on as it will suit the purposes for demonstration of this technique. When wrapped around a sphere this texture will currently not look very pretty at the polar regions as we will see shortly.

CMEBl90.png

2. Select Filter > Distort > Polar Coordinates

mBbLFQ5.png

3. Ensure 'Rectangular to Polar' is selected and hit OK.

OoqsyNX.png

4. Here you can see what the texture would look like on the North Pole if it were wrapped around a sphere; you can tell that the texture is not set up to be spherically wrapped as there is a lot of distortion around the top. This is what is commonly referred to as 'Polar Pinching'.

YXODGYH.png

5. Use all your Photoshop/GIMP/Paint.net etc. skills to remove the distortion and get the center of the image looking nice. Try not to affect much of the texture as it falls towards the outer edges too much, keep your healing towards the center where the predominant distortion is occurring.

HBCRon4.png

6. Select Filter > Distort > Polar Coordinates

gWBQjSt.png

7. This time we are applying the inverse distortion so ensure that 'Polar to Rectangular' is selected and hit OK.

Zw17G3Z.png

8. Here you have distorted the image back to its rectangular format and you can see your polar wrapping occurring at the top of the texture. Now onto fixing the South pole. Flip your texture vertically by selecting Image > Image Rotation > Flip Canvas Vertical.

XAVxgOM.png

9. Apply the 'Rectangular to Polar' distortion filter.

SyBeEnN.png

10. Here you can see the ugly warping of the texture at the South Pole.

1ATuH7X.png

11. Again, use all your Photoshop/GIMP/Paint.net etc. skills to remove the distortion.

P4bbASQ.png

12. Apply the 'Polar to Rectangular' distortion filter.

AEZYFqN.png

13. Here we have the texture back in rectangular format, but upside down. Flip it back vertically to return it to its original orientation.

wIgphBb.png

14. There we have it, the finished article. Here you can see at the top and bottom of the texture the spherical warping as you are trying to represent a spherical mesh on a rectangular net. Using this texture in game around a planet/moon, it would no longer have distortions or pinching at its North and South poles.

ZTgITgM.png

15. Save this final texture as a new image and Copy > Paste it over your Master Copy texture before you started this Polar Pinching Removal process. Feather the top and bottom of the newly distorted image into your existing Master Copy texture image. The reason behind this is that when applying the Polar Distortion filter to an image, you are inducing compression into the texture that, when doing the reverse distortion (to get the texture back to an equirectangular format), you will end up with a texture map that has blurring and artifacts appearing on it. To get around this issue, save you map before hand, do the Polar Distortion Removal process and save the result as a new texture. Copy this new texture over your Master Copy and then feather the pasted, distorted map back into the Master Copy map.

Untitled-1.png

By doing this, you will limit the amount of compression you are inducing into your map textures to only the polar regions.This is a side by side, before and after, comparison of the compression of a 4k x 2k map that has been run through the Polar Distortion filter at a 800% zoom to show the result on the pixel level... look at all that horrible compression!

 

Please Note: This finished texture would be pretty terrible to use in-game as it features a heavily directional light source (see shadows/highlights in the craters). It should also be known that it is good practice to generate your colour/albedo maps directly from your post PQS heightmap (i.e. heightmap with the PQS baked in), as this way, you will not be inducing any directional lighting from any references images you use.

Edited by Poodmund

Share this post


Link to post
Share on other sites

Added a few more tutorials:

Realistic Mountains with Photoshop and Wilbur - by Miguel  Bartelsman

Simply Making Mountains in GIMP & Wilbur - by Ludgarthewarwolf

Making Mountains for the Artistically Challenged - by Unknown

Realistic Coastlines in Photoshop/GIMP - by Old Guy Gaming

Libnoise Designer - Procedural Noise Generation tool using Libnoise library. Executable file located in \Bin\LibnoiseDesigner.exe

Edited by Poodmund

Share this post


Link to post
Share on other sites

- How to generate realistic(ish) below Sea Level terrain

OfUt8V9.png

Please open the Spoiler Box below to view the tutorial (lots of images so it's better stored in a spoiler tag).

Spoiler
Spoiler

Unfortunately, a lot of planet packs that have ocean worlds have very little surface topography below sea level other than rolling plains of small undulating noise. This is pretty boring and doesn't represent what typical land formations would look like underwater. Here we can try to apply some work to get a more 'realistic' form of underwater topography that should be interesting to explore.

e0clQBA.png

So we start with your heightmap in Wilbur. Load it up and if you toggle the Texture > Greyscale Bump Shader it should look directly like your heightmap. Please ignore the above sea level landmasses (in general) as they were just quick lumps of dirt I added to give the oceans a basis to work from. ;) 

WLD1Qn7.png

If you enable the default Texture > Wilbur Shader it will be much easier to work with as the Sea to Land transition is easily recognizable. Adjust your base map so that the coastline is located at the right altitude and then set the 'Below Sea Level' and 'Above Sea Level' spans to their correct altitudes respectively. Use Filter > Math > Offset to adjust your base map up or down (in meters) so that your coastline is set correctly and then use Select > From Terrain > Height Range and select all the area below sea level i.e. Min Height -5000m (some low number) Max Height 0m, then apply Filter > Math > Span and set the selection to your desired height range. Do the same with the area above sea level i.e. Min Height 0m Max Height +5000m (some big number) and then apply Filter > Math > Span and set your desired altitude range above sea level. You should get something similar to the image above. Note that the ocean looks flat because we do not have any varying topography on the ocean regions (which is the whole point of this tutorial).

ZBCbsqk.png

Once the base map has been set up we can start working on the map. First, we need to select all the areas below sea level.

kcl6S5K.png

This current map has all ocean areas at around -10m so selecting all altitudes between -1000m and 0m will select the ocean areas.

q2mOhxq.png

Then we apply the primary function that gives us the basis that our topography will be based on. Apply the Fill > Mound function.

4YsyjvC.png

Choose a Minimum Height of 0m and a Maximum Height of an altitude such as -1000m. The Noise box allows you to apply some random noise during the application. Also, tick 'Use Fractal Parameters' which allows the Mound function to also work from a Spherical Noise based profile. You can mess around with these noise parameters to your heart's content, I have shown a suggested setup.

9fLw5vP.png

Hit 'OK' and the Mound function will fill in the whole selected region with new terrain. What this function is doing here is adding shallow terrain near the land coastlines at 0m and lerping it out towards the areas furthest away from land, down to a very low altitude that you set in the function. Neat, eh?

G6rZ2uN.png

As the coasts are sloping off here very slowly, with the selection still active, we can apply Filter > Math > Exponent to remap the altitude of the selected terrain using an exponential curve.

NVD9njS.png

We can use a number between 0-1 (this number is the exponent factor) here for the Below Sea Level input so that the remap altitude curve applies a steeper slope from the coastline down to the depths.

SuBkyXD.png

This is the result, here you can see the coastlines reach lower depths much more quickly than before, more akin to what you would see in reality.

Wb3j6q9.png

Currently, the terrain below Sea Level is pretty uniform and smooth which looks weird. With the areas below Sea Level still selected, we can apply Spherical Noise functions on the terrain to give it more randomness. Apply Filter > Noise > Spherical Fractal Noise.

iJag2j9.png

Here you can choose the Noise Type and Operation, for this pass I chose to use RidgedMultiFractal (pretty common noise function used in terrain generation) and the Multiply operation so that it will affect my existing terrain by a factor of the noise function.

TZRE2r2.png

Here you can see the result. More more visually friendly, interesting and 'realistic'.

auiWsQN.png

I then applied a 2nd Spherical Fractal Noise function, this time using the Hetero Terrain noise type which is like Billow Perlin in that it is very soft and bumpy.

LOCrlTg.png

Following that application of noise, I then applied another Filter > Math > Exponent function, opposite to my earlier one, in which I applied a >1 factor to give the coasts a more gradual descent into the depths. This was just to adjust the underwater terrain to my liking.

9ukq7c8.png

Then we can start detailing the underwater terrain. Here I made a Select > From Terrain > Height Range selection of all the terrain below sea level up to about +50m. Then I applied a Filter > Morphological > Erode function a few times to simulation some typical and general erosion on the topography.

SoHtgwX.png

Then we can Select > Modify > Feather the bounds of the selection so soften the transitions at the selection edges... as to why will become apparent next.

4cQp1wC.png

With this feathered selection, apply the Filter > Erosion > Precipiton Based filter which simulates fluvial erosion (erosion based off of fluid flow over the terrain).

wR3vYeh.png

Ensure you change the Wrap drop-down to X-Only so that the erosion simulation wraps between the left and right sides of the map. The Passes value dictates how many iterations of the simulation you wish to run. NOTE! This filter application takes a LONG time to run dependent on the size of your maps.

l8h4mly.png

After playing around and applying some erosion, I also selected some additional height ranges and sunk them slightly to create Continental Shelves. This may look a little odd when zoomed out but...

fpjc4uE.png

When you zoom in close you can see the additional detail here as to what is going on. Just as in reality, you can see here that at specific altitudes, the terrain drops off sharply to simulate shelving.

yj0SkGn.png

Here is the resultant height map. See how different it looks in comparison to the original. Please note that this whole application of the tutorial works more effectively when you have complex, larger landmasses on your map.

1y0htGw.png

The map above is a height map created by our fellow forum user @Beale, who shared it with me whilst discussing terrain generation. As stated at the start of this tutorial, like most other created Ocean Worlds, it did not have any considerable terrain below sea level.

e8orMkh.png

I applied the same theories as laid out above to create some interesting below sea level terrain.

tNoY0BO.png

When zoomed in, you can see interesting trenches, deltas at the coastline, continental shelving, etc.

RhpqF3s.png

This is Kerbin... look at the underwater terrain... it is a horrible noisy mess of nothing.

dVqLF8C.png

Again we can apply our knowledge to create some interesting underwater terrain. Please note that at the North/South Ice Caps you'd want to do some further editing to ensure that the land DOES NOT slope down gradually at the ice cap borders. Due to KSP's limitations with its PQS system and concave meshes, it's usually best to have a sudden vertical cliff from the depths up to 0m at the border (you cannot go under the ice).

mpy7kgs.png

When we zoom in you can get a greater understanding of what interesting underwater terrain could look like.

YlIpTgh.png

And zoomed even further, you can see how it would be fun to explore the depths of the ocean navigating down trenches and alongside ridges.

I hope that all of this helped, please let me know if you have any further queries. :D 

Share this post


Link to post
Share on other sites

- How to generate procedural gas giants using Gaseous Giganticus on Windows 10

Gaseous Giganticus is a utility program created by Stephen M. Cameron for the usage in his game Space-Nerds-In-Space that uses Curl Noise to simulate Procedural Fluid Flow by simulating the curl of the gradient of a noise field to produce a chaotic but divergence free velocity field, dumping a bunch of particles initially colored according to input image and then moving those particles around according to velocity field and rendering the output image... then iterate over and over. By doing this on a spherical noise field representations of gas giants can be created with great success.

Please see the tutorial below in the spoiler box for more information:

Spoiler
Spoiler

Basic Guide

Unfortunately, Gaseous Giganticus has to be compiled and ran through Windows Subsystem for Linux and ran through Bash... but this is no problem. First, we need to install WSL on our Windows 10 PC. Please follow this easy guide on how to enable and install WSL on your PC (I chose to use a Ubuntu Life Time Support distro): https://linuxhint.com/install_ubuntu_windows_10_wsl/

Secondly, we need to either download the Gaseous Giganticus distribution or clone the Git repo locally to somewhere on our PC. The repository can be found here: https://github.com/smcameron/gaseous-giganticus Pro-tip: Put it somewhere relatively easy to locate as you'll be navigating to this directory through the command prompt.

We need to install some library packages in the WSL distro to be able to compile Gaseous Giganticus so run the following commands one after the other:


sudo apt-get update -y

sudo apt-get install -y pkg-config

sudo apt-get install -y libpng-dev

(If there are any other library packages that are required in this whole tutorial I have not specfied, please feel free to ping/message me and let me know so I can update this tutorial)

Next is an intermediary, optional, step. With our gas giant textures, we need to decide how big we ultimately want them to be resolution wise. By default, Gaseous Giganticus exports the cube map faces at 1024px x 1024px and, generally, for our maps we would require them to be larger than this when coverting them to an equirectangular format. Unfortunately there is currently a limitation in Gaseous Giganticus which does not allow for cube face exporting over 2048px x 2048px due to memory limitations (as of 28th Feb 2020)... however, @Thomas P. has generously written a patch we can use to allow for the export of cube faces larger than this.

Download the following patch file and drop it in the Gaseous Giganticus root folder:  https://www.dropbox.com/s/2plj52unw60qyjk/0001-Allow-for-dimesions-larger-than-2048.patch?dl=0

Run your WSL distro and navigate to the gaseous-giganticus directory by using the following command: cd /mnt/g/GasGiantGeneration/gaseous-giganticus (my directory is located in G:/GasGiantGeneration/gaseous-giganticus, please change your command accordingly) and then run the following command: patch -p1 < ./0001-Allow-for-dimesions-larger-than-2048.patch The patch should run and you should see that 7 chunks were successfully patched.

Now we can change the values associated with the exported cube face texture dimensions in the file: gaseous-giganticus.c located on lines 87 and 88, please change this Line 87 value to a n^2 number being 4x smaller than the desired width of your equirectangular image i.e. 2048px if you want a gas giant texture 8192x4096px in size. As suggested in line 88, use a value double in size for the velocity field.

IFuca2h.png

With your WSL distro still open and currently in your gaseous-giganticus root folder run the command: make This will compile Gaseous Giganticus.

An input image is required for the program to be able to simulate the generation with, as suggested from the Git repo: The program requires one PNG input image, which should ideally be about 200 pixels wide and about 1200 pixels tall, and blurred. Any input image can be used in theory but experimentation is recommended. This is the input image I used for the following example:

pADA9Vy.png

To run the program to generate your cube face textures the following command must be run from inside the gaseous-giganticus directory (I am using the verbose parameters for clarity):  ./gaseous-giganticus  --input input/input01.png --output output/output01 The input and output paths are relative to the gaseous-giganticus directory and the input01.png should be specified as your input image with the output01 value being named whatever you wish your output cube faces to be named.

When you run this command you should see the program 'Calculating velocity field' after which time it will start to render out the 6 cube faces in iterations. When the program has run through its cycle of iterations (1000 by default) the program will stop running or you can cancel it at any time using Ctrl+C.

8qZLJwr.png

2cRL4wN.png

The output faces are named and laid out in the following manner:


        +------+
        |  4   |
        |      |
        +------+------+------+------+
        |  0   |  1   |  2   |  3   |
        |      |      |      |      |
        +------+------+------+------+
        |  5   |
        |      |
        +------+


Then its a case of using whatever graphical program you prefer to convert the cube map into an equirectangular texture for use with Kerbal Space Program. Hugin is a free option that is popular, I personally use Pano2VR as I feel it produces a nicely interpolated output but it is not free to use. Google is your friend here.

i2l31jg.jpg

Once your cube faces have been stitched together in the new equirectangular projection, you are ready to use the texture in KSP for your gas giant! YAY!

Advanced Steps

Gaseous Giganticus has a lot of variable parameters that we can change when we run the initiate the program to alter how the program changes the velocity field and as a result, affects the look of the resultant texture. These can all be specified in the ./gaseous-giganticus  --input input/input01.png --output output/output01 ****** command, for example: ./gaseous-giganticus --input input/input01.png --output output/output01 --pole-attenuation 0.8 --bands 24 --faderate 0.01 --fbm-falloff 0.3 --velocity-factor 2400 --wstep 10 --vortices 30 --noise-scale 6.4 --vfdim 16384 --count 2000 -L 7

All of the parameters that can be changed as are follows:

  • -a, --pole-attenuation: Attenuates band velocity near poles. Without attenuation (value = 0.0f) velocity of bands near poles is the same as velocity at the equator. Due to shorter distance around band near poles, this means the bands "spin" faster. Attenuating with a value of 1.0 means that the band velocity will be adjusted to constant angular velocity. A value of 0.8 means it will be adjusted 80% towards constant angular velocity but will be 20% towards constant linear velocity. Lower attenuation means poles have higher angular velocity (spin faster). Default is 0.5. Max is 1.0, min is 0.0.
  • -b, --bands : Number of counter rotating bands. Default is 6.0.
  • -d, --dump-velocity-field : Dump/Export the velocity field data to specified file (not really relevant to us).
  • -D, --faderate : Rate at which particles for each iteration fade, default = 0.01.
  • -c, --count : Number of iterations to run the simulation. Default is 1000.
  • -C, --cloudmode: Modulate the image output by to produce clouds, to produce cloud maps that could be used in conjunction with EVE.
  • -f, --fbm-falloff: Successively higher octaves of fractal Brownian motion noise are multiplied by this value. Default is 0.5.  So for example, the lowest octave of noise is multiplied by 1.0, the 2nd octave by 0.5, the 3rd by 0.25, and the fourth (last) by 0.125. If fbm-falloff is specified as 0.4, then the lowest octave is multiplied by 1.0, the next by 0.4, the next by 0.16 and the last by 0.064.
  • -g, --gain: 2nd and successive octaves of fbm noise are multiplied by pow(fbm-falloff, (octave - 1) * gain). Default value is 1.0. Assuming that fbm-falloff is less than 1.0, gain should be between 0.0 and 2.0. Values larger than 1.0 give more prominence to lower octaves (noise will be smoother) while values lower than 1.0 give more prominence to higher octaves (noise will be rougher).
  • -F, --vfdim: Set the velocity field dimension. Default is 2048, yielding a velocity field that is 6x2048x2048, which is quite large and can take considerable amount of time to calculate. Smaller values can produce quicker, but lower quality results which can be useful for getting a quick preview. Values below 128 will produce rather strange results. Minimum value is 16, maximum is 2048.
  • -i, --input : Input image filename. Must be RGB or RGBA png file.
  • -I, --image-save-period: Interval of simulation iterations after which to output images. Default is every 20 iterations
  • -m, --speed-multiplier: Band_speed_factor and velocity_factor are affected by this number. It is a single option to affect both by a multiplier which is a bit easier than setting an absolute value for them individually.
  • -o, --output : Output image filename template. Example: 'out-' will produces 6 output files out-0.png, out-1.png, ..., out-5.png
  • -O, --opacity: Specifies lower bound on particle opacity between 0.0 (transparent) and 1.0 (opaque). Default is 0.2.
  • -w, --w-offset: w dimension offset in 4D open simplex noise field. Use -w to avoid (or obtain) repetitive results.
  • -h, --hot-pink: Gradually fade pixels to hot pink. This will allow divergences in the velocity field to be clearly seen, as pixels that contain no particles will not be painted and will become hot pink.
  • -k, --cubemap: Input 6 RGB or RGBA png cubemap images to initialize particle color. Prefix of 6 cubemap RGB or RGBA png images to which '[x].png' is appended with [x] taking on the values 0 through 5.
  • -l, --large-pixels: Particles are 3x3 pixels instead of 1 pixel. Allows for fewer particles and thus faster rendering, but this WILL leave visible artifacts at cubemap face boundaries.
  • -L, --noise-levels: Number of fractal browning motion noise levels to use. Default is 4, minimum is 1, and maximum is 7.
  • -p, --particles: Use specified number of particles. Default is 8000000.
  • -P, --plainmap Do not use sinusoidal image mapping, instead repeat image on six sides of a cubemap.
  • -n, --no-fade: Do not fade the image at all, divergences will be hidden
  • -N, --sequence-number: Do not overwrite output images, instead embed a sequence number in the filenames.
  • -v, --velocity-factor: Multiply velocity field by this number when moving particles. Default is 1200.0
  • -V, --vertical-bands: Make bands rotate around Y axis instead of X. Also affects --stripe option.
  • -B, --band-vel-factor: Multiply band velocity by this number when computing velocity field. Default is 2.9
  • -s, --stripe: Begin with stripes from a vertical strip of input image
  • -S, --sinusoidal: Use sinusoidal projection for input image. Note: sinusoidal is the default projection. Note: --stripe and --sinusoidal are mutually exclusive
  • -t, --threads: Use the specified number of CPU threads up to the number of online CPUs
  • -W, --wstep: w coordinate of noise field is incremented by specified amount periodically and velocity field is recalculated
  • -x, --vortices: How many artificial circular vortices to add into the v-field
  • --vortex-band-threshold: This option works in conjunction with the --bands option. The --bands option specifies how many counter-rotating bands encircle the planet. If you imagine traversing from the north pole to the south pole of the planet along a line of longitude, the velocity perpendicular to the line of longitude varies smoothly, in a sine wave fashion, between -1 and +1, with -1 and +1 being the regions of fastest movement, and 0 being no movement. The --vortex-band-threshold option specifies the maximum band velocity at which vortices may be placed. The default value is 0.4. The effect is that vortices are forced to form only in regions of low band velocity -- in other words, between the counter rotating bands rather than in the middle of the counter rotating bands. The range of this parameter is clamped between 0.05 and 1.0; If --bands is 0, then --vortex-band-threshold has no effect.
  • --vortex-size: radius of vortices as a fraction of planet radius. Default 0.04, so the vortices produced will have a radius which is around 0.037 times the radius of the planet.
  • --vortex-size-variance: Range of vortex sizes, default is plus or minus 0.02.
  • -z, --noise-scale: Use the specified noise scale value. Default is 2.6 This controls the amount of the Simplex noise field that is sampled. Smaller values will give bigger whorls, larger values will give smaller whorls. To give you an idea of the range of values, see http://smcameron.github.io/space-nerds-in-space/gaseous-giganticus-noise-scale.html Attempts to describe the results of various scales are listed below (descriptions of sizes are approximate because of eyeballed nature).
    • 0.12 Slightly wavy velocity field with features larger than the sphere.
    • 0.25 Wavy velocity field with features slightly smaller than the sphere.
    • 0.50 Wavy velocity field with whorls about 1/4th the diameter of the sphere.
    • 0.75 Lots more whorls about 1/8th the diameter of the sphere.
    • 1.00 Lots of whorls about 1/12th the diameter of the sphere.
    • 1.25 Whorls are smaller still.
    • 1.50 Whorls are maybe 1/20th the diameter of a sphere.
    • 1.75 Even smaller whorls.
    • 2.00 Smaller still.
    • 3.00 Whorls are starting to get chaotically small, maybe 1/40th diameter of sphere.
    • 6.00 Whorls are no longer primary feature instead sort blobby regions form. As the noise scale gets higher, the blobby features get smaller.

In the output textures, you may notice some dark pixel areas where the velocity field has struggled to interpolate the source texture into these pixels. Another tip to consider to rectify this issue is to enable the --hot-pink parameter to give the whole output texture an underlying base colour but modify the gaseous-giganticus.c file on line 125 to change the colour of the hot pink parameter to a more neutral colour that suits your texture. The colour on Line 125 is specified as a float with the first 3 values specifying the R, G and B values respectively. So, for example, if I were to be creating a gas giant that was mostly green, I would specify a colour such as const struct color hot_pink = { 0.3569f, 0.7294f, 0.5333f, 0.01 }; and then recompile the program using the make command. To do this, ensure that you first delete the files in the directory with the .o file extensions or it will fail to recompile.

s8UtZpZ.png

Enabling the 3D Mesh Viewer preview

In the Space-Nerds-In-Space distribution, Stephen M. Cameron kindly supplied a 3D viewer program to allow us to preview the output cube faces on a spherical mesh in real-time which is extremely handy in allowing us to decide when to terminate the simulation if our current iteration of textures is what we desire. Unfortunately, the WSL (Windows Subsystem for Linux) Bash utility does not offer any kind of GUI viewer or display renderer... but there is something we can do to rectify this! We need to install VcXsrv which will allow us to run the 3D viewer.

Ensure your WSL application is fully up to date by running $ sudo apt-get update and $ sudo apt-get upgrade and then navigate to the VcXsrv repo to download and install the software: https://sourceforge.net/projects/vcxsrv/

After installing VcXsrv, let’s start XLaunch and do some setup. First you can choose whether you like One Large Window or Fullscreen option (a window is easier to manage), then choose Start no client and check Disable access control. When finished, you will see big window blank screen appear.

Now we need to configure bash to use the local X server, open up a Bash command window and run: echo "export DISPLAY=localhost:0.0" >> ~/.bashrc To have the configuration changes take effect, restart bash, or run: . ~/.bashrc

Back over in our WSL window, we can test a graphical application can run by installing some x11-apps sudo apt-get install x11-apps and then running the command xeyes This should make a big set of eyes render in a new window.   You may need to install/update your graphics drivers for the WSL, through the WSL utility, for this to function properly.

Now that we have that working, we need to download a copy of the space-nerds-in-space Git repo (https://github.com/smcameron/space-nerds-in-space) or clone it and navigate to that directory. Then run the command make bin/mesh_viewer for it to compile.

Once the mesh viewer has compile we can run the command  ./bin/mesh_viewer -p ../gaseous-giganticus/output/output01 (relative path to your set of cube face textures) which should pop up the VcXsrv window with the 3D preview of your gas giant. 

9XQDY7z.png

(Note, the above render was taken using the default Gaseous Giganticus parameter values after 500 iterations)

Press the F1 key to open the Help Window which lists the controls to use to manipulate the preview render. Pro-tip: You can edit the height/width values on Lines 39 & 40 in the file mesh_viewer.c before compiling it to change the size of the preview window renderer.

You can find examples of gas giants utilizing Gaseous Giganticus to render their maps in mods such as Beyond HomeGalaxies Unbound, JNSQ and my OPM-VO mod.

tx9THcJ.png

I hope that this will help you create awesome gas giant textures for your planet modding needs! :D 

Share this post


Link to post
Share on other sites

I am happy to see someone other than me getting some use out of my little program.  How do the poles look after converting to an equirectangular projection?  I would expect considerable loss of detail, but I suppose if that's the format the game wants, that's what it gets.

 

-- steve

Share this post


Link to post
Share on other sites
3 hours ago, smcameron said:

I am happy to see someone other than me getting some use out of my little program.  How do the poles look after converting to an equirectangular projection?  I would expect considerable loss of detail, but I suppose if that's the format the game wants, that's what it gets.

 

-- steve

Its an honor that you've graced this thread, I think on behalf of everyone in the KSP community that has used Gaseous Giganticus its a big THANK YOU! :D With regards to the projection change it is hard to tell from an equirectangular projection what the distortion is going to look like but it depends quite considerably on the program used to do the projection change. Here is a small collage of 8192x4096 equirectangular textures made from generated 2048x2048 cube faces mapped onto a spherical mesh and rendered out in Photoshop as a preview, they aren't the best generated textures but they get the point across I think:

6LwLveI.png

You still retain a fair amount of detail at the more extreme latitudes surprisingly. In Kerbal Space Program, with the use of other mods we can also apply more detailed, seamless alpha-mapped textures that take can reduce the apperance of a pixellated surface when the space vessel (camera) is close to the body which can help avoid this issue somewhat.

Share this post


Link to post
Share on other sites

Updated Gaseous Giganticus Tutorial

There was an issue with compiling Gaseous Giganticus when increasing the exported cube face texture size above 2048px x 2048px; I have updated the tutorial with a fix for this but running a small patch file generously written by Thomas P.

Spoiler

Next is an intermediary, optional, step. With our gas giant textures, we need to decide how big we ultimately want them to be resolution wise. By default, Gaseous Giganticus exports the cube map faces at 1024px x 1024px and, generally, for our maps we would require them to be larger than this when coverting them to an equirectangular format. Unfortunately there is currently a limitation in Gaseous Giganticus which does not allow for cube face exporting over 2048px x 2048px due to memory limitations... however, @Thomas P. has generously written a patch we can use to allow for the export of cube faces larger than this.

Download the following patch file and drop it in the Gaseous Giganticus root folder:  https://www.dropbox.com/s/2plj52unw60qyjk/0001-Allow-for-dimesions-larger-than-2048.patch?dl=0

Run your WSL distro and navigate to the gaseous-giganticus directory by using the following command: cd /mnt/g/GasGiantGeneration/gaseous-giganticus (my directory is located in G:/GasGiantGeneration/gaseous-giganticus, please change your command accordingly) and then run the following command: patch -p1 < ./0001-Allow-for-dimesions-larger-than-2048.patch The patch should run and you should see that 7 chunks were successfully patched.

Now we can change the values associated with the exported cube face texture dimensions in the file: gaseous-giganticus.c located on lines 87 and 88, please change this Line 87 value to a n^2 number being 4x smaller than the desired width of your equirectangular image i.e. 2048px if you want a gas giant texture 8192x4096px in size. As suggested in line 88, use a value double in size for the velocity field.

IFuca2h.png

With your WSL distro still open and currently in your gaseous-giganticus root folder run the command: make This will compile Gaseous Giganticus.

@smcameron you may be interested in this amendment.

Share this post


Link to post
Share on other sites
Posted (edited)

How to make aurora textures for EVE
Lately I've been experimenting with making aurora textures for EVE using GIMP and Paint.net. I'd like share my way of doing this with the planet modding community.

Stuff needed:
- GIMP (I am using an older version, but i'm sure it'll work with newer ones)

- Paint.net

- Basic knowledge of these programs

Tutorial:
 

Spoiler

1. Start GIMP
Make a new file with your wanted resolution (I use 4096x2048). Make sure you start with a black canvas
VhnRDiC.png
 

2. A guide
Create a red(can be every color) rectangle on top of your map and then apply a polar coordinates filter (Filter>Distorts>Polar Coordinates...)
JQTerOv.png
https://imgur.com/ovcAWqgovcAWqg.png
 

3. Create noise

Select the red circle you've made and feather the selection by ~50 (Select>Feather...). Then create a new transparent layer and apply noise on that layer (Filters>Render>Clouds>Solid Noise...)(My settings are: Random seed, Detail= 6, X size= 4.6 and Y size= 3.9)(You can delete the red with black guide and replace it with a black layer)

It should look something like this

4Dl3eJk.png

 

4. Modifying the noise

Now this looks nothing like aurorae, so lets oilify this noise (Filters>Artistic>Oilify)(My settings are: Mask size = 30, Exponent = 16 and Use intensity algorithm)(It may take some time to apply the filter)(Optional: add a radial blur with Paint.net). Next up is making the lines, we do this with the Edge-Detect filter (Filters>Edge-Detect>Edge)(My settings: Amount= 1.4, Sobel, Smear)

F9wP4KO.png

 

5. Tweaking

since this is a bit too much, i'm going to mess around with the levels (Colours>Levels), reduce the amount of aurora in the center and add some depth with zoom blur (9) in Paint.net

ECUTfyZ.png

 

6. Final tweaks

Now you only need to convert the image back from polar coordinates by going to the polar coordinates and disabling  the "To polar" button

Now that the image is converted to a regular map, we need to make the black transparent. We do this by going to Colour to Alpha (Colours>Colour to Alpha) and changing the color from white to black, now click ok. To see the image a bit better, we add a black layer under the transparent image

Final result

TUUWf8e.png

Use your Photoshopping skills to add color and add your own taste (You could repeat the whole process to add a south pole too)

JzABrlI.png

Aurorae in-game:

The aurora above used on a terrestrial moon

zrhb4AS.png

Using some radial blur on the noise before the applying the Olify filter makes for some great gas giant aurorae!

AsHHjcB.png

A farther reaching aurora, by making the guide circle bigger. +some exotic colors since it doesn't have to be realistic after all :p

ZoWJnck.png

 

I Hope this helps! :D

Join my discord below if you have any problems following this tutorial

Edited by RJVB09

Share this post


Link to post
Share on other sites

Continuation aurora tutorial

How to make aurora detail textures

If you have followed the tutorial above and applied the aurorae in KSP, you might notice they look a bit bland from the surface and from low orbit. We fix this by making a detail texture which pops in when upclose. As seen in the picture below, this detail texture can give the aurora some real depth and some beautiful looks.

KaCM5PT.png

Tutorial:

Spoiler

1. Open GIMP
For this texture you can ofcourse choose your own resolution, so i'm going to use 2048x2048px

y4WjDa6.png

2. Noise!!
We start by adding some big seamless cloud noise (Filters>Render>Clouds>Solid Noise...)(Below you can see my settings:)(Make sure you have tilable selected!!)

w3mJ52u.png

akfBK8r.png

3. Modifying the noise
Instead of olifying the noise (as seen in the tutorial abovew this post), we mess around with the levels (Colours>Levels). After that we add an edge detect filter (Filters>Edge-Detect>Edge).

My levels look something like this:
(Move the white and the black closer to eachother so that the gray is about under the peak)
zaxU4jc.png

add the edge detect (Setings: Amount = 4.1)

Ly3QADC.png

4. Adding depth/Finishing
This still looks nothing like an aurora so we only need to add some depth, we do this with some motion blur (Filters>Blur>Motion Blur...)
(My settings are: Linear, Length = 154, Angle = 79)

1. Motion Blur
2. Make the texture seamless (Filters>Map>Make Seamless) because the motion blur causes some parts to jut out and make the texture not seamless anymore
3. Stretch the contrast (Colours>Auto>Stretch Contrast)
6i0PcXq.png

And to finish the texture, we need to remove the black background by using Colour to Alpha (Colours>Colour to Alpha) and change the color to black
KZp3mih.png

Save it and then you're done!

5. Correct EVE config settings
To get this effect selling, we need to make some changes to our config
1. _DetailScale must be 10 to make it look good (You may try other values but it looks ugly :p)
2. increase _DetailDist to 2E-07
3. _DetailTex will be the path to the texture we just made

Here's my config feel free to copy some things;
RN4jZN3.png

 

Final result:
Once done and tweaking to your liking, we get some real crispy aurorae

aJS47ar.png

EW53aRR.png

nCVM4Z1.png

 

Thanks for following along!

Share this post


Link to post
Share on other sites

This is the single most useful planet modding thread on the forums!

Share this post


Link to post
Share on other sites

@Poodmund I've got a small problem with the gg patch: It says that there is no patch whilst there is.

ny9XC28.png

Share this post


Link to post
Share on other sites

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.