terrain

Example – Ridge Turbulence and Whirlpool Fun

Rob Chapman posted a cool whirlpool deformer to the “Resource Dump” on SI-Community here. Since I had been doing a lot with logarithmic spirals recently I decided to make one from scratch and compare the two. Here’s the result.

Instead of using Rob’s wave deformer, since it’s fun to share it out there’s a “ridged turbulence” compound in there. Here’s what it looks like when used as a deformer:

 And here’s the file (softimage 2013 ~160kb): alt_whirlpool

Busy, Busy, Busy…

It’s been a while since I’ve posted, things have been really busy of late, and I’ve been doing a lot of traveling. There are a number of topics and compounds I want to share, but between work and home-life demands I just haven’t gotten to cleaning them up and writing them up. However, I just picked up a longer-term gig doing more feature film work and less commercials, so I may be able to settle into a routine that frees up enough personal time to get to some of this stuff soon.

Maybe I can get a bunch of stuff online as a Christmas gift to the community – I’ll be “heads down” in November but might have time after that…

Topics include:

  • Fury 2 – this point renderer by Exocortex is starting to come into it’s own, with cast and self-shadowing, particle replication at rendertime, a standalone and maya version, etc.
  • ICE terrain compounds – a long term project which I’ve detailed here, I’d like to add in some adaptive meshing (most of it was built prior to ICE modeling) and a better fluvial erosion compound, and release the compounds to the community.
  • Electrical and lightning effects – I have a very nice “toolkit” of ICE tools for creating electrical effects which I want to clean up and release to the community.
  • A slew of “utility” ICE compounds and one-offs for doing all kinds of fun stuff… from converting temperature to color according to a blackbody and color cycling compounds to branching strand systems and procedural snow deposition, etc. All compounds which come from production needs which I’ve been squirreling away with the intent of eventually sharing them.

Terrain Generation Basis Functions

Having established a good start on hydraulic erosion, I moved to another area necessary for any good terrain toolkit – establishing a set of basis functions, from which you can achieve a the natural complexity needed by mixing various basis functions based on criteria such as latitude, slope, height, other fractals etc. Each basis function has it’s own character and “look” so to get a good heterogeneous result it’s valuable to be able to draw from a number of different functions. For example, here is a set of simple spheres deformed by a compound in which I use ICE’s excellent worley noise as a basis, which is then iterated through over a user-defined number of octaves, some of which are further modulated by a simplex fractal. You can see the character of the worley noise clearly, but where the simplex modulation comes into play you get a much more interesting result:

 

 

Less “terrain-like” is this output from a reticulation compound, which uses as it’s basis the “computational” noise described by Stephen Gustafson et al:

 

Interestingly, I approached this project having not read Ken Musgrave’s various writing on the subject of terrain generation outside of white papers. Once I did, I found that much of what I have discovered anecdotally he thought through in detail long ago. This is awesome, because it shows that my thinking has validity (after all, there are few who have spent more time and energy on the subject than he) and also because it gives me more threads to pull. I now have a series of compounds at my disposal that do various “terrain stuff,” now I can take a step back and decide how to assemble those experimental compounds into a more user-friendly and extensible set of ICE building blocks…

ICE Terrain Project

My personal project of creating a series of nodes useful for terrain generation in Softimage ICE is going well. Here’s a terrain made with two of the compounds, and is based on a pyroclastic noise with slope suppression followed by 24 iterations of a compound implementing a fast hydraulic erosion scheme I’m playing with. There is some tendency of the erosion to create bands where edges flow in an even grid due to my use of Von Neumann sampling in the erosion routine, which is fast but I may have to add an option to take a speed hit and sample more thoroughly. After this I will implement a more thorough and more traditional hydraulic erosion scheme and compare the two.

 

Terrain Generation via ICE

In between other projects I’ve slowly been building a number of softimage ICE compounds which deal with aspects of terrain generation. Here’s a result of two of them: a ridged perlin fractal and an iterative slope-based errosion. Only the basics are in place as of now – for instance I need to change the compounds to optionally deform along the original surface normal as opposed to just a y-up implementation (so you can generate planet surfaces etc) and create a set of nodes that let you blen various types of generation schemes (to get, say, a mix of ridged multifractal and fault-fracture methods.) Other items on my “to-do” list include:

Texture masks based on height, curvature and slope

River generation (I have one approach but it leaves a lot to be desired)

Additional fractal deforms (worley and other cell based schemes, “hill”, variants on multifractals)

Crater formation, ecosystem maps, more refined erosion, and mountain/valley range formation

So, there’s a lot to do. But one step at a time.