Ramp-like device

Started by blattacker, January 14, 2022, 07:18:57 am

Previous topic - Next topic

blattacker

January 14, 2022, 07:18:57 am Last Edit: January 14, 2022, 07:58:36 am by blattacker
Hey everyone, just having an issue that I haven't been able to work out a solution for, hoping someone here can help! I'm attempting to recreate the effects of the Ramp device in World Machine, as I'm very curious to see how it reacts in 3 dimensions. Essentially, it mirrors a curve some number of times (determined by settings), which can create some interesting patterns that I find incredibly useful, especially in texturing. I've worked out a way to recreate a Ramp device with a frequency of 2 in World Machine, but am having a difficult time figuring out how to translate that into Terragen. The workflow I've made in World Machine goes:
1) Clamp input terrain to 1/2 maximum height (I've found it easiest to clamp the lower values to 0)
2) Using Select Height device, use the clamped values to generate a mask
    2a) If clamping lower values to 0, invert the generated mask
3) Route the initial (unclamped) terrain into an Invert device, masked by the results of the previous step(s)

The same effect can also be achieved much simpler by manually drawing a curve, but I've noticed that Terragen doesn't have a curve node (at least, not that I've been able to find), so I tried to go about it in a way that I think could translate to Terragen. I have a feeling that, if this is even possible in the first place, the secret lies with Function nodes, but I'm not sure if I'm just not understanding them correctly and using them wrong as a result, or if there's something else going on. All I've managed to do so far is accidentally create a bunch of terrains that make zero physical sense (Such as infinitely tall pillars, or seemingly inside-out spheres). Any help or insight anyone can provide would be greatly appreciated!

sboerner

Can you post an image of what you are describing (from World Machine)? I'm having a hard time picturing it. Maybe this is something that can be done in TG with blue nodes.

WAS

Colour adjusts Gamma works similar to a curve adjust, just that it's more hard locked to one setting. Least result on noise looks just like grabbing center of a curve in PS or Blender and dragging it out or in.

blattacker

January 14, 2022, 12:38:59 pm #3 Last Edit: January 14, 2022, 12:47:52 pm by blattacker Reason: Added additional information/image
Quote from: sboerner on January 14, 2022, 11:57:22 amCan you post an image of what you are describing (from World Machine)? I'm having a hard time picturing it. Maybe this is something that can be done in TG with blue nodes.
ramp.png
I've tried to be as thorough with this image as possible to hopefully illustrate what I'm having a hard time explaining. The images with the affected gradient are made directly using the Ramp device, but the curve graphs shown produce the exact same results (though the Frequency = 3 graph is slightly different due to rounding), and are provided to illustrate what's being done to the input gradient. Let me know if more information is needed!
Quote from: WAS on January 14, 2022, 12:13:43 pmColour adjusts Gamma works similar to a curve adjust, just that it's more hard locked to one setting. Least result on noise looks just like grabbing center of a curve in PS or Blender and dragging it out or in.
Unfortunately, as you can probably see from the image provided, being able to manipulate the endpoints of the graph are required for the specific effect I'm looking for, but I appreciate the help!

Also, in the sake of completeness, the Ramp device has a "Keep full height" option that, when enabled, simply expands the curve editing to take up the entire graph, rather than gradually becoming shorter and shorter. If this is easier/more possible to accomplish than the previous image, I actually use this mode more often.
ramp2.png

WAS

Yeah I know what you mean. We really do need more adjusting ability, and even gradient maps like you're using which can be used to speed up shading exponentially.

blattacker

To be fair, this exact gradient could be recreated in TG with a simple shape shader, as it's just a gaussian radial gradient. Simple shape shader set to circle/eclipse, edge profile set to "smooth step", edge width at 100, edge units to "percentage", then adjust size/displacement amplitude to your desired settings. That's what I've been using while trying to recreate this.

sboerner

Might something like this work? It's based on a sine wave (sinus) though so it doesn't replicate the sharp peaks and valleys of your example. Probably could make it do that but would take some fiddling (math is not my strong suit, it's all trial and error).

I use this to make water splashes and things like that.

blattacker

I see what you're trying here, and I appreciate it! From what I can tell, though, it looks like this is actually generating that sin wave as its own independent displacement. What I'm trying to do is modify an existing terrain based on the previously shown curves. I've attached another image showing what it looks like when applied to a Perlin noise rather than a radial grad to illustrate a bit more.

ramp3.png

I got a bit overzealous and also included the actual noise patterns to hopefully also show how this can be helpful with shading. Also, I'm looking deeper into the node network of the file you added, and it's given me a couple ideas to try, so I will definitely update if I discover I'm misunderstanding what I'm seeing (or find a way to use this in a different way to achieve the effect I'm going for)

sboerner

Oh, of course. I assumed you were trying to generate the circular displacement instead of using a ramp to tweak the underlying color and displacement. (Shouldn't try to multitask.)

A true ramp node (as in Photoshop, Maya and Blender would be super useful and is something I've long wished for. Especially if it could be switched between color and scalar output. Is this what you mean?

blattacker

No worries! The ideas that file gave me didn't solve the issue I'm going for right now, but it did result in some things that I have saved on the side for more exploration later! 

However, judging by the two separate responses indicating a wish for features like this, should I go ahead and assume that this is either not possible, or not directly possible, within TG?

sboerner

To the best of my knowledge it's not directly possible. Perhaps other more experienced hands will weigh in though.

WAS

By gradient map, I mean the colour. Not displacement. Colouring by height different colours where you want them on a gradient map slider with as many drop in colours as you could fit on the slider. Every terrain generator I've seen, even small independent projects has it. Not sure why TG doesn't. You gotta do it manually with tons of surface layers and manually setting exact heights relating to each other.

sboerner

Jordan, I think you could make a Blender-like ramp node do just that. Just feed in the altitude and output the corresponding color on the ramp. And I agree the node should allow you to drop in and position output values as needed.

In the meantime, take a look at this. A while back I experimented with using altitude values to drive colors to visualize ocean depths: https://planetside.co.uk/forums/index.php/topic,23822.msg240648.html#msg240648.

WAS

Oh yeah I remember that. And yeah Blender has a gradient map node. Pretty much all 3d and terrain generators do. Wish TG had one.

Dune

I don't know if I understand you well, but would this serve your needs? Lots of ways to expand or adjust.