Feedback for sculpting device proposal

I wanted to start a conversational thread about the Sculpting device proposal that is currently the top vote getter on the WM Feature Upvote:

https://worldmachine.featureupvote.com/suggestions/176200/a-sculpting-device-for-rough-shape-sketching

This is clearly a feature that would provide a lot of convenience and utility, and I have wanted to add support for something like it for a while. There’s also a lot of ways to integrate it neatly into workflows; in particular every spatial parameter will eventually have the ability to click on the control icon to the left of it and choose “Shape Mask” or “Sketch Mask” which will auto-create and add the appropriate device to control that input and go into editing mode for it.

  • What tools/features are most important to you for mask sketching / terrain manipulation?
  • What are some use cases you want this feature for?

I see the most immediate utility in sketching parameter/effect mask areas on the terrain, but direct terrain manipulation would certainly also be possible if sometimes a little problematic in a procedural tool such as WM.

2 Likes

I’d use it to quickly sculpt the location for mountain ranges, islands, just big terrain features in general. I see this to be working quite well with the procedural nature of World Machine, as you can feed the newly sculpted shape into your existing node-tree for, let’s say creating a mountain range, and immediately you can see how it will look like if you changed the location of the mountain range, kind of like how you can do it right now with the Shapes device.

Another very useful application would be the masking of river systems or beaches. That would mostly be the case if I’ve settled on the look/layout of the terrain and probably won’t change the location of those elements again.

Tools I’d require/like to have?

Regarding masks or simple drawing

  • Pencil (so no feather/hardness)
  • Brush (feather/hardness option)
  • Paint bucket
  • A wide range of colours, handy to label stuff.
  • Erase

Terrain creation

  • Increase/decrease height.
  • The ability to quickly change the brush size and hardness, without having to use sliders. So probably a combination of the Ctrl and Alt key + the mouse wheel.
  • Flatten to lowest point, middle, and highest point (or even better, make this customisable. Prior to the start of the flattening, WM calculates the range in height for the given area, and you can select what the “middle ground” it will flatten to as a percentage, with 0% being the floor, 50% middle and 100% ceiling of the range).
  • Stretch/floor & ceiling. Instead of flattening, the brush will increase the difference in height of the given area. Again, it takes the range of the selected area, and will increase the height of all pixels in the top 50% of the range, and vice versa.
  • Copy/paste selection.
  • Custom brush support from .png or .tiff, or even better, the ability to create brushes in local space within the same file! That would be tremendous flexibility. Then you could also, in theory, do random walk brushes, that change the seed of said local space brush every time you click!
1 Like

As someone who’s a strong supporter of everything procedural, there are a few things where a brush based painting would be useful to me.

  1. Masking areas for effects to apply.
  2. Adjusting terrain in following ways:
    a) Relaxing spikey area
    b) Pulling or pushing general height of an area
    c)Sketching out concepts and rough biome changes on big monolithic terrains.

Hope it’ll be implemented as a “node” too, not just a separate viewport. Instead of just random shape brushes, different terrain and masking specific brushes would be nice.

In general, I personally won’t be using it for much besides masking areas like beaches, strata. I’m a strictly procedural guy though, other artists may find use for it.

1 Like

Definitely. My current thought is that it would be a device called “Sketch” or “Draw” to go along with “Shapes”. One handles raster drawing, one vector drawing.

I personally find drawing masks the most compelling feature - especially if the workflow can be made smooth enough. Ideally within a click or two you could attach to and brush any device parameter to accentuate/mute particular areas.

Roughing out basic mountain/continent shapes also seems like a great fit.

I’m moderately concerned about sculping / modifying terrain as there are a lot of ways that could break.

1 Like

Shapes were a big reason I bought WM over the other options on the market. Sculpting support would be great.

Right now I’m accomplishing “scultping” with shapes but it has several drawbacks, namely that I can’t see other shape layers to place things in proper place relative to other elements and that shapes are kind of clunky and imprecise and can pretty sharply cut off features.

It would be great if we could sketch everything on one layer, perhaps using different colors to mask outputs for generators.

The ability to use a brush to increase/decrease height or adjust the “strength” of certain generators in a particular area would be awesome. For example, I need a traversable mountain path in a mountain range. Right now the closest I can really come to doing that in WM is either splitting the range into two parts and separating them (but then Falloff becomes a problem. If I keep it large enough to be realistic for the mountain range elsewhere then the path basically get washed out in Falloff) or using a shape path to cut a swathe through the range with the subtract function but then I usually just get a completely cut path down to ground zero with looks too artificial. Being able to apply a brush to a region to lower the height while keeping some of the terrain features would be ideal for accomplishing this.

It would be great if generators could “respect” sculpted or mask defined terrain and try to blend into them rather than run over them. I know this would be hard to implement. It’s almost like reverse engineering erosion to get what you want.

1 Like

You could use the River node to create a path btw!

Hadn’t thought of that, but yes, that is indeed quite a pain to get right.

The naive approach would be that, under the hood, the sculpting device simply adds/removes x amount of terrain from the input (as, in the end, all sculpting actions will result in addition or removal of terrain). That would work great, until you change something upstream, now your sculpting is probably bugged (but honestly, that’s something to be expected). Would it be possible to give the upstream devices a special look, indicating that changing them will alter the sculpting?

I see three possible solutions for the upstream changes:

  1. Warn the user that upstream changes will affect the outcome of the sculpting device.
  2. Every time you change something upstream, the sculpting is removed. Not my favourite behaviour, but at least it is predictable.
  3. Cache the input, to prevent any upstream changes to immediately affect the output. Then, when you change something upstream, the sculpting device will still output the cached result, and prompts the user it needs “supervision” (not by an obtrusive dialogue, but by colouring/marking of the device). When going into the sculpting device, you see two outputs. One is the cached input with the sculpting applied, the other is the new input with the sculpting applied, and the user can choose how to merge the two (kind of like merging with Git). Then the merged input is stored as the cache again, and the device is ready for the next upstream change.

If the underlying terrain changes enormously, then the sculpting result will obviously be nonsensical. But there are certainly cases where you might want to keep your edits but allow the other areas to change. For example, perhaps a world map where you’ve flattened areas for buildings, etc, which you want to keep while still letting changes to the mountains nearby pass through. Freezing the entire input for sculpting blocks any further work on upstream components and is against the nonlinear editing nature of WM.

My current thought is that the result of sculpting/drawing on the terrain will be kept as a set of one or more masked layers that get merged with the input. Possibly it would also keep a diff to the “sculpted-against” input, so that certain changes could be relative to to the new terrain level, while others are absolute.

1 Like

Out of curiosity, why can’t you achieve this with the Path? Don’t subtract the path, just use a Shape device to adjust your terrain height and set each vertex to the height you want it at.

This method is shown in the example file “Tutorial 9 - Creating Roads” included with WM.

Thank you! I will give that a try and check out more of the tutorial. I am learning there is way more under the hood here than I realized.