The Flu

I knew there was a reason why I made a “Random Stuff” category. This is where I post thoughts and random happenings from my own life that are only marginally related to WM at best.
Nothing slows work progress on WM like getting sick. Got hit hard by the flu bug last night and haven’t really been able to do anything but drink water and answer emails today. My own fault, as I had just finished an extended workout with an hour-long jog that I think kicked the crap out of my immune system for a little bit, because I got a sore throat and a cough just an hour or so later.

Anyways, the thing I’m currently working on (besides finishing up the Tiled IO support) is to finally fix the goddamn seaming issues in Explorer mode once and for all. Explorer is almost unusable at low-resolutions because of the lighting seams. Well, it’s about half-fixed right now. The seams are now fixed for same-resolution tiles, but don’t deal with the adaptive level of detail very well. Have to change the seamfixing method for that to actually work right.
Small little issues like the explorer/layout seams are the kind of things that drive me nuts, as they aren’t such huge things but they take up a proportially huge amount of development time.

Off to make some chicken soup.

Overlay Output Example

The Overlay Output device and all of its attendant code in the core and visualization modules is finished; just wanted to show people an example of the kind of visualizations it provides:


This is showing a terrain coverage map draped atop the heightfield. A coverage map shows what type of terrain is at that location. It’s NOT a terrain texture by itself; rather it’s a type of terrain metadata that specifies WHICH texture to use at a given location.
The coverage map was created by the Coverage Maker device, which produces an RGB-encoded image, where each color is linked to a type of coverage. This allows you to setup your terrain surface texturing for the game or 3D app. You would then (in the engine or the next tool in the content pipeline) map each RGB triplet to a terrain texture to use, and you’re set!

The coverage map seen here is pretty simple, using essentially three input maps: 1) A Hi-Slopes mask 2) A randomness map (basic perlin noise device 3) The Flow map from the erosion device. More details about the coverage maker later.
Anyways, back to the Overlay Output. Since you can also now load RGB images into WM as well, you could, for example, load in an RGB image that you’ve sketched out quickly, and then use the Overlay output to combine it with a heightfield you’re working on to match the sketch. Or lots of other uses — you can probably imagine more than I can.

One more image:

Example 2

Using a different map and coverage schema, and viewing in Explorer mode. Although it isn’t final texturing at all, it actually looks pretty good. It’s amazing how having some actual coverage-based coloration rather than just the height-based colormap gives a much stronger sense of realism for the terrain imho. Having this kind of coverage data available during heightfield creation, if taken advantage of, will allow for much faster terrain texturing on game maps and other such endeavors.

I think focus is very important for tools, and although adding RGB support to WM is certainly an extension of its grasp., I  think terrain type coverage is a closely integrated problem with terrain modelling, and that puts it right into the purview of WM. If you need the ability to output Normal Maps/Coverage Maps/etc, then you have it. Otherwise, it doesn’t slow anything down.
Back to work for now.

Usability versus Features

It’s always interesting as I develop World Machine, as there are always two distinct areas to add content in:

  1. Usability. Things that make the interface cleaner, that allow you to do things quicker, that are less confusing, or that provide additional power. This makes the experience faster/better/more enjoyable for the content creator.
  2. Output Quality. Things that provide a better result. These provide a better finished product, and are the ultimate judge of what a software program can produce. Doing a neat and clean job of producing some output isn’t much use if the output itself isn’t jaw-dropping.

I’ve always tried to put in new features in each of these categories. Since I’m taking a slight break from layout mode development for a little bit now that things are nearing feature-complete in that area. It’s always good to get some breathing room and a little bit of perspective — I’ve found that you can come up with some really interesting insights that you would otherwise miss if you stayed nose to the grindstone on that feature alone. In the meantime, the things that I’ve been looking at over the last few days and am currently researching, designing, or implementing are:

  1. Tabbed Toolbars. Sort your parts toolbar by Device Function (Generator, Output, Filter..), or Data Type (IE, a page for all HF operators, a page for all RGB operators, for Parameter ops, etc). This is something that I REALLY want to implement at some point for Pro, as it cleans up the parts toolbar enormously. The number of icons is really starting to otherwise get unwieldy. Status: Researching. This is something I want to implement, but haven’t actually started mucking with yet.
  2. Overlay Output. Not an output so much as an instrument or a view, it allows you to have one heightfield provide the geometry of the output, and another HF or a RGB image for the color. So in other words, you can superimpose a mask atop the terrain to see where everything fits into it, or drape your RGB texturing coverage map atop the terrain to easily see what types of terrain have gotten placed where. What’s really cool is that this works in Layout and Explorer mode too, letting you see your entire world with, for example, texturing placement maps put atop it, is incredibly useful. Status: Nearly Complete.
  3. Tiled File Input. This device stands to provide for some terrific workflow enhancements for alot of projects. Essentially, after setting up the input file stream (SomeTileXXX_YYY.bmp or whatever it may be), the device will load tiles from disk as appropriate to create a heightfield in the current render area. This allows you to seamlessly work with extremely large worlds — not just for export, but to continuously refine them by being able to load back in your tiled output. You can assign each set of tiles to any region in world space, at which point it’s totally transparent to the WM system– you can “zoom in” on a smaller subregion that spans only a few tiles, combine multiple tile sets in any configuration in the world, etc. For those working with paged terrains, this feature along with the tiled output will be worth its weight in gold. Status: In Progress

There’s other things that are also recieving work time right now — hell, since very little of the Pro code is 100% yet except for the multithreaded building code, many things are. The above are just a smattering of the interesting features being worked on this week that will make their appearance.

Lots of exciting things are afoot.

The latest 'Behind the Scenes' news from Stephen, the author of World Machine