Search Unity

  1. Megacity Metro Demo now available. Download now.
    Dismiss Notice
  2. Unity support for visionOS is now available. Learn more in our blog post.
    Dismiss Notice

Map Magic World Generator - a node based procedural and infinite game map tool

Discussion in 'Assets and Asset Store' started by Wright, Mar 10, 2016.

  1. Teila

    Teila

    Joined:
    Jan 13, 2013
    Posts:
    6,932
    But my height map is totally gone! I don't have a valley anymore. How do I add a river to this terrain or is it not possible?

    I am beginning to think this was not a good choice for me since it seems one can only make blobs of hills and mountains, no defined terrain, no valleys and no rivers. Please prove me wrong. :(
     
  2. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,266
    I don't really understand why your heightmap is gone. Can't you just copy it and paste on a global heightmap as a part of it?

    Edit: Or, the other solution: since you can edit pinned terrain in any way, you can export it's heightmap, blend in your heightmap leaving borders untouched, and then assign it to the same terrain.
     
    Last edited: Mar 13, 2016
  3. Hellhound_01

    Hellhound_01

    Joined:
    Mar 5, 2016
    Posts:
    102
    I wanted to learn how easy it is to extend the functionality of the node editor. Today I've finished my first draft of a custom node generator for the MapMagic editor. It's a Fractional Brownian Motion implementation based on Ken Perlin's Simplex noise algorithm.

    For anyone who is interested in, you could download it here:
    SimplexNoiseGenerator.7z

    You have only to extract the included files in the main folder of the MapMagic Plug-in. Feel free to use, extend or modify it. Thank's Denis for such a great tool and simple way to extend it.
     
    Wright and Teila like this.
  4. Teila

    Teila

    Joined:
    Jan 13, 2013
    Posts:
    6,932
    I think we have a language issue. lol

    The valley in the terrain map is gone. It is now spread out and there is not the river valley anymore.

    The idea of the blended borders and reimporting the height map might work. :) I will try it again. Thanks.
     
  5. Teila

    Teila

    Joined:
    Jan 13, 2013
    Posts:
    6,932
    @Wright

    I followed the above exactly and the terrain height map only filled two of the terrains.

    Here is a picture: I did up the intensity to 5 so you could see it in the picture but even at 1, the other three terrains are flat. There is no relief at all on those.

    Screen Shot 03-13-16 at 05.57 PM.PNG
     
  6. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,266
    Hellhound_01, Great job! It's the really a serious tool for setting up noise, and the generator that works as it should! I highly recommend MM users to take a look at it!

    Teila, I guess three of your terrains are located at the negative sides along X and Z - at least it looks that the central terrain has heightmap borders on it that gives a hint that heightmap start is located there. Try to offset Raw Input on minus 2048 pixels (if your terrain size is 1024) by setting offset parameter to -2048, -2048.
     
  7. Teila

    Teila

    Joined:
    Jan 13, 2013
    Posts:
    6,932
    Yep, that is what I did. lol Sorry, I had dinner in between the time I posted and the time I came back and read. :)

    I think I am figuring it out. Love the infinite terrain stuff. It is very cool how it mimic's my terrain between the spaces. I am getting the valley in place and then letting the world generate around it.
     
  8. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,266
    Glad you've succeeded :)

    Maybe I'll make an add-on someday - it will independent from the main MM code - to load heightmap quickly preserving the terrain borders.
     
  9. Teila

    Teila

    Joined:
    Jan 13, 2013
    Posts:
    6,932
    Yeah, that would be nice.

    I think maybe this won't work for me though since I want a chunk of terrain with a river and rivers have to continue on until the end of the world. Unfortunately, the rivers create a boundary for me and they end suddenly using generated terrain. So..I have to use a height map for the length of the river, which works...but I can't have in infinite height map. So unlimited terrain would have to go in only two directions rather than 4..not a huge deal really, but still a problem. Players will wonder why they hit a boundary at the river's edge. I can have the river dump into an ocean I guess or climb into the hills on the height map and maybe I will try that sometime. :)

    I also have problems with floating pinned maps seen from a distance. Could probably find a way to cull that.

    BTW, just to let people know, I think they could use WM or Gaia to blend the height map into the generated terrain, preserving borders. Might not be too difficult to do, especially if you turn your height map into a stamp in Gaia. Then one could bring it back into Map Magic.
     
  10. Teila

    Teila

    Joined:
    Jan 13, 2013
    Posts:
    6,932
    Well...I decided to test out the nodes, make a terrain from scratch. I like doing that, so why not.

    The lag is terrible making the tool almost unusable. I have a very good computer, an excellent graphics card, lots of memory, etc. I had to upgrade to 5.3.2 in order to use this since tool so maybe that is the problem.

    However...when I hook up the nodes and then make a change, it is at times a ten to 15 minute wait for Unity to unfreeze and the results to show.

    I have no idea how you are doing it in those videos. :) I am hoping this can be fixed or maybe release it for a more stable Unity version.
     
  11. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,266
    Map Magic got a free evaluation version.

    This version is fully functional with two limitations:
    • It should be used for evaluation purposes only. The project build is not possible with it. To make a build remove all the plugin files.
    • Evaluation version has a save limitation: although the node graph could be saved, it could not be edited after the load.
    Download


    Teila, this version has a raw input performance fixed, so probably it worth seeing. A fixed fully functional version will be submitted to Asset Store today.
     
  12. Teila

    Teila

    Joined:
    Jan 13, 2013
    Posts:
    6,932
    Great!

    Although, I not currently using the raw input and I am still having huge performance problems. Just moving the link between height and terracing on a 1k terrain took 10 minutes to unfreeze. Every time I move or delete a link, another freeze. I have Noise, Veroni, Terrace and Curve nodes in sequence hooked to height. I did try to add erosion, but that took a very long time, not the 3 seconds stated in the manual. So there is some problem here..again, maybe it is 5.3, in which case I suggest you try a different version of Unity.

    Here is my computer info:

    Intel Core i7_2600K CPU 3.40Hz

    Memory: 32 GB ram

    64 bit OS, Windows 10

    Graphics: GeForce GTX 970

    Performance issues are not only related to raw input.
     
  13. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,266
    Could you please send me your scene, I will try to find out what's wrong. Erosion on 1024 can take up to 10 seconds, but it should not happen on link change after it... Is it 10 minutes?!! OMG, it is incredibly enormous lag, I should definitely see the scene.
     
  14. Teila

    Teila

    Joined:
    Jan 13, 2013
    Posts:
    6,932
    I would be happy to do so. Will upload to Dropbox and PM you the link.

    Also, I have barely used erosion. I can't seem to find anything in the manual on what to do with the cliff and sedimentation nodes. Are there at least some pictures of finished MM editor screens with erosion? Could I have missed those?

    Frustrating from one who can breeze through World Machine. LOL But the documentation is vague. It is a great description of what everything does, but not very good at how to do it. I have a feeling there is a lot of power here that I just can't seem to utilize.

    It makes me feel stupid, and I don't think that is true. lol Please, take some time to make your docs better. The best assets are those that empower the users, not make them feel stupid and giving the the information to feel empowered really helps. I hate coming here and asking tons of questions...no matter how entertaining the discussion is to the readers. ;) At least one of my friends is enjoying the conversation.

    I have some GREAT asset developers look back and wish they had provided better docs. It keeps you from having to repeat the same things over and over again and gives us a reference to use to avoid having to ask you all the time.
     
  15. Teila

    Teila

    Joined:
    Jan 13, 2013
    Posts:
    6,932
    Okay, went back to the scene and noticed I had the Raw Node still in the editor, but not connected to anything. Deleted that and the freezings stopped. So I guess that is the problem you mentioned will be fixed in the next update. Amazing that an unconnected node can do that. :)

    So, I will wait to send the scene unless it happens again. However, would still like a picture of the erosion hooked up to the cliff and sediments. :)

    Also, how about a tutorial showing how masks work? Do you have a picture of the editor using masks anywhere?
     
  16. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,266
    I fully agree that good documentation could be really vital. So I decided to add pictures like you requested right into manual with a detailed description, and maybe even example scenes on the web or in the package.

    The authors of the other asset, UniStorm, could make their asset compatible with Map Magic. This is what they achieved:
     
    tequyla, BHS, Wavinator and 1 other person like this.
  17. Teila

    Teila

    Joined:
    Jan 13, 2013
    Posts:
    6,932
    Thank you!

    I am going to give you a break and move on to working on something else. :) But I appreciate the help and I am really looking forward to the examples. Thanks for your patience.
     
  18. Wavinator

    Wavinator

    Joined:
    Dec 24, 2013
    Posts:
    79
    Hi Denis. Infinite terrain has to be able to be centered from time to time in order to avoid floating point errors resulting in graphic glitches and jitter (when the player is past 50,000 on the x,y or z axis if I recall correctly). Does Map Magic do this automatically or is there anything about your tool that would make doing this manually difficult? Could something like this technique be used:

    http://wiki.unity3d.com/index.php?title=Floating_Origin
     
    Last edited: Mar 15, 2016
  19. Wavinator

    Wavinator

    Joined:
    Dec 24, 2013
    Posts:
    79
    Few more questions:

    1) In the infinite terrain mode, with scripting would it be possible to use different generators at different times? I would like to be able to simulate a planet that has different biomes or areas that might use radically different generators (volcanic area in the middle of a dune desert or mountain range cutting through plains). I'm thinking one way to do it might be to generate a grid where each cell represents a different piece of terrain and reference the grid as the player moves at runtime, getting values or seeds which either change a generator or enable/disable a generator

    2) Is there support / callbacks for terrain addition and removal in infinite terrain mode? If you spawn a mob of creatures, for example, how do you when to deactivate AI?

    3) For flight in infinite terrain is it possible to control terrain spawn with view distance?

    4) Would it be possible to enable/disable expensive generation features based on distance? I'm imagining there's no value in eroding distant terrain, for example, when the details would not be visible

    5) Is it possible to build a generator which can abort terrain operations after a given amount of time? For example, on a slower machine applying only 1 or 2 erosion passes versus several on a high end machine. Another use would be rapid map switching (teleporting or loading a new level)

    Thanks!
     
  20. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,266
    There's nothing that prevents using Map Magic with that script. It could be moved to any position at any time, no matter if the terrains are generated or not. I've experimented with static camera, moving terrain instead in demo scene - an it is still works.

    You can enable/disable generators or adjust their parameters with scripts. But there could be a problem in welding dissimilar terrains - the desert can end up with a mountains with almost no blending - there will be no seam and even a slight transition because Map Magic will weld terrains automatically - but I cannot promise that this will look good.
    But changing generator parameters gradually from terrain to terrain can do the trick - slight terrain differences will be neglected by welding.
    I have biomes in my roadmap, but I don't know yet if they will be implemented soon - I'm going to see what features do users require to sort my to-do list.

    There are a callbacks on the terrain apply. With their help you can adjust and modify the objects: float[,] for the heightmap, object lists for objects and trees, etc. after they have been generated but before they are applied. I'm not sure if a callback on chunk remove is required - AI could be deactivated with OnDisable, can't it? I'm just curious because I dont really know the way it's made in your project - but if you describe a use case I can try to implement a callback you need.

    I think rather than disabling generators it's better to lower distant terrains resolution. This will increase performance in quadratic dependence and btw will save polygons for render. This feature is also in a roadmap, competing with biomes :)

    I's no problem in making such a custom generator. And since all the source code is included you can take an erosion generator and make something like a guard clause in each iteration: if (timer.ElapsedMilliseconds > 1000) break; where timer is a System.Diagnostics.Stopwatch.
    Note that it's better to make a custom generator by coping erosion rather changing the source code. You can even publish it in your blog on in forums the way Hellhound did:
     
    Wavinator likes this.
  21. KaseyMisner

    KaseyMisner

    Joined:
    Mar 1, 2016
    Posts:
    6
    Hi, I have a question.
    Do you have a suggestion of a better terrain shader than the Unity's that would be compatible with your texture generator?
     
  22. KaseyMisner

    KaseyMisner

    Joined:
    Mar 1, 2016
    Posts:
    6
    I have also another question, how can I navigate into the editor?
    There are some generators that are down and I cannot see them.
    I want to scroll down but there are no way I can see them.
     
  23. KaseyMisner

    KaseyMisner

    Joined:
    Mar 1, 2016
    Posts:
    6
    I replay to my own question... ALT+click that's the shortcut to move the editor window... ffff
     
  24. Wavinator

    Wavinator

    Joined:
    Dec 24, 2013
    Posts:
    79
    Thank you for the detailed answers. Just purchased this. I've been working on an infinite terrain solution but have not been happy with the generation performance I was able to obtain. Erosion and multi-terrain features like roads/rivers have been especially difficult. I'm VERY impressed with how fast and mature your asset is.

    Glad to hear this is on the roadmap. I was thinking of using one or more terrains to blend from one biome to another as you suggest. But biome transitions really need the ability to apply generation directionally, so that for example if you have mountains in the south and swamp in the north you can transition heights, splatmap, foliage and object types smoothly. You have implemented curves and blending but at the moment I don't think you have anything for directional generation, correct? Or would it be possible to use a curve to for example gradually lower heights from the bottom of the map to the top?
     
  25. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,266
    KaseyMisner, MM internally uses a standard Unity terrain, so any shader that works with standard terrain will work with the plugin.

    Yep, Alt-clicking scrolls the editor, Control-clicking zooms it. Or you can scroll/zoom with a mouse-wheel if you have one.

    Wavinator,
    Thanks a lot!

    So you need a generator that will set the output pixel value depending on it's position in the world? For example, 0 if terrain area is located at -10000 along X axis, and 1 if it is located at 20000? This could be easily done, I think I'll make this generator as addon after a while.
     
    Wavinator likes this.
  26. Wavinator

    Wavinator

    Joined:
    Dec 24, 2013
    Posts:
    79
    Thx! I think that could work. It would be like lerping values directionally.
     
  27. Wavinator

    Wavinator

    Joined:
    Dec 24, 2013
    Posts:
    79
    I am seeing a problem with textures only applying to starting terrain using infinite terrain mode. Do you know what could cause this?
     
  28. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,266
    Do you assign textures to the pinned terrain directly by selecting it in inspector and adding textures in paint mode, or do you use a Texture Output generator (Left-click in editor > Create > Output > Textures)?
    AssigningTextures.png

    If you press Generate button - do the textures remain on your pinned terrain? If you pin a new terrain - will it have textures?
     
  29. spinaLcord

    spinaLcord

    Joined:
    May 25, 2015
    Posts:
    29
    Looks really nice. I buy this, and give it a try :)
     
  30. Wavinator

    Wavinator

    Joined:
    Dec 24, 2013
    Posts:
    79
    The pinned terrain's textures are assigned using the Texture Output generator. For the initial pinned terrain ,when I press generate the textures remain. When I move pin a nearby terrain (Terrain 0, -1) and press generate, no textures appear.

    I'm going to try to create a new scene and see if I can duplicate the problem. The scene I am working with had some problems with crashing Unity when I switched to 2048 resolution then back to 512 so maybe there's something wrong with the file.
     
  31. Hormic

    Hormic

    Joined:
    Aug 12, 2014
    Posts:
    251
    Will it stay with the same price for now?
     
  32. Wavinator

    Wavinator

    Joined:
    Dec 24, 2013
    Posts:
    79
    Denis it must be a corrupt file or something as I'm not seeing the same problem with a new scene / new graph. I can send you the file if you'd like to take a look but I was just experimenting so really need it fixed.
     
  33. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,266
    I'm afraid it will not. Initial price was made specially to compensate inconvenience from some launch bugs. And, as I promised, this price is valid until the first update.

    Wavinator, I'm glad that the new scene is ok, but I need to take a look at a possible bug anyways. Could you please email it at mail@denispahunov.ru?
     
  34. Exbleative

    Exbleative

    Joined:
    Jan 26, 2014
    Posts:
    216
    What are people's lighting/light probe/shadow setups for Map Magic?

    I'm using a real time directional light/sun system, so it needs to be real time both because of Map Magic (I'm using it for infinite terrain) and this sun/time of day system.

    Currently I'm using a ridiculously large realtime reflection probe, which I'm guessing will break once I travel too far in any direction. Maybe I could also try 'scattering' light probe prefabs using Map Magic?

    My shadows are also a bit of a problem, I'm using a 2000 distance shadow in Quality Settings, with 4 cascades, and its very hard to get decent close and far shadows like this, but of course we can't bake anything right? I can see a rather ugly transition occur between cascades, especially on terrain that is facing me, ie hill sides etc.

    I've got precomputed and baked GI off too. Honestly not really sure what precomputed is even doing, I turn it on and off and see no change. I believe it needs baked information to work(?).

    Keen to know what people are doing, cheers!
    Jay
     
  35. Hellhound_01

    Hellhound_01

    Joined:
    Mar 5, 2016
    Posts:
    102
    Hi Denis,

    could you please give me a short introducion or example how I could intercept the value change events of your UI componentss to invoke a function call, if the value of the UI component has changed.

    Thanks in advance.
     
  36. angel_m

    angel_m

    Joined:
    Nov 4, 2005
    Posts:
    1,160
    It seems an interesting tool, very complex and complete. The problem I see with all the new terrain-world tools are being released lately is the same: performance.
    With these tools, you can make big and beautiful scenes with nice detailed terrains and a lot of trees and grass covering them, but, they are not suitable for real games because the Unity terrains are not well optimized and the performance is pretty bad.
    (For example in the Map Magic demo I get 15-25 fps on a medium specs PC).
     
    Last edited: Mar 20, 2016
  37. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,266
    Exbleative, if you are using only one reflection probe maybe than maybe it's better replace it with custom reflection source (in Lighting settings). Here you can assign a heightmap that will be used for all of the scene no matter how far you will travel.

    In demo scene I'm using shadow distance 200 with two cascades (20% and 80%). Distance of 2000 seems to be extremely high - for example default camera far plane is only 1000.

    Hellhound_01, briefly - you can use layout.OnBeforeChange callback to determine change before Field will return a new value (it is called OnChage in current version), or monitor layout.change or layout.lastChange to know if any of layout fields or the last field were changed.

    I don't really think that developers should put an end to the Unity terrains. It is the matter of the game optimization - and maybe I should make some quality selector for the demo - not the standard fastest-fast-good-beautiful-fantastic, but the real one that changes terrain pixel error, base map distance, etc. If standard terrains could be used for mobiles, I believe they could be configured to use with medium specs PCs.
     
  38. Hellhound_01

    Hellhound_01

    Joined:
    Mar 5, 2016
    Posts:
    102
    Correct me if I'm wrong but I can only intercept value changes at the surrounding Layout object, not at a single field explicitly?

    I tried to define a callback, this was really slow (takes 4 sec. before the first simple "hello world" log was printed to console). And it was called too often to check a single field. I must admit that I do not really understand how I could check there which field value has been changed.

    So I have come to this solution: Actually I use this to check if a field value has been changed:
    Code (CSharp):
    1. var generator_type = this.module;
    2. layout.Field<Base>(ref generator_type, width:0.5f);
    3.  
    4. if (generator_type != this.module){
    5.      this.callback();
    6. }
    This works, but in my eyes it's not really elegant because I've to use an extra condition check to invoke my required method on value change.
     
    Last edited: Mar 17, 2016
  39. c-Row

    c-Row

    Joined:
    Nov 10, 2009
    Posts:
    847
    So for now the only easy way to add a river or lake would be to manually edit the height map of a pinned terrain?
     
  40. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,266
    Hellhound_01, OnChange is used to determine undo, and there is no lag related with it. Anyways if you want to perform something after the value was changed it's better use "change":
    Code (CSharp):
    1. layout.change = false;
    2.  
    3. layout.Field(ref myValue1);
    4. layout.Field(ref myValue2);
    5. layout.Field(ref myValue3);
    6.  
    7. if (layout.change) DoSomethingIfAnyValueChanged();
    or "lastChange":
    Code (CSharp):
    1. layout.Field(ref myValue1);
    2. if (layout.lastChange) DoSomethingIfValue1Changed();
    3.  
    4. layout.Field(ref myValue2);
    5. if (layout.lastChange) DoSomethingIfValue2Changed();
    6.  
    7. layout.Field(ref myValue3);
    8. if (layout.lastChange) DoSomethingIfValue3Changed();
    edit: code formatting

    c-Row, the real rivers - not those that are made of turbulence noise - require splines support which is not implemented yet. But the lakes could be created by lowering height below a water plane. Such an approach has a drawback thought (you will always get it rendered even when no lake is within camera frustum).
     
    Last edited: Mar 18, 2016
  41. Hellhound_01

    Hellhound_01

    Joined:
    Mar 5, 2016
    Posts:
    102
    It finally sunk in! Thanks for your patience. I will give it a try.
     
  42. Hellhound_01

    Hellhound_01

    Joined:
    Mar 5, 2016
    Posts:
    102
    I've a strange issue at my custom noise generation I cannot deal with. For my ridged noise I've to calculate a float list of spectral weights, based on a predefined max octave value and offset (math absolute factor). For those values I got two float fields as UI components. If a value change is raised, I force a recalculation of this list from OnGUI method:

    Code (CSharp):
    1.        
    2. public override void OnGUI(Layout layout)
    3. {
    4.        [...]
    5.  
    6.        layout.SmartField(ref this.maxOctaves, "MaxOctaves");      
    7.          
    8.        /* check if the ridged noise specific maximum octave value has changed to
    9.            force the reinitialization of the spectral weights.*/
    10.        if(layout.lastChange){
    11.           this.ComputeSpectralWeights();
    12.        }
    13. }
    14.  
    Code (CSharp):
    1.  
    2. private void ComputeSpectralWeights()
    3. {
    4.         float frequency = 1.0f;
    5.         this.spectralWeights.Clear();
    6.      
    7.         for (int i = 0; i < this.maxOctaves; i++) {
    8.                 this.spectralWeights.Add((float)Mathf.Pow(frequency, -this.persistence));
    9.                 frequency *= this.lacunarity;
    10.         }
    11. }
    No magic here up to this point. The issue occurs at the generate method, here I got an undefined behavior. I've a loop through a number of octaves which is less then max octaves of the ridged noise, at the end I've to sum the total noise value with the actual noise value and the precalculated spectral weight of the actual octave:
    Code (CSharp):
    1.  
    2. // Add the signal to the output value.
    3. total += (signal * this.spectralWeights[i]);
    Sometimes the count of the precalculated spectral list is 0 or less the actual octave, but why? More strange: I've added a condition check to check if the actual octave i is less than the count of the spectral list:
    Code (CSharp):
    1. if(i>this.spectralWeights.Count){
    2.                 UnityEngine.Debug.Log("Spectral Weights: " + this.spectralWeights.Count);
    3.                 UnityEngine.Debug.Log("Octave (Index): " + i);
    4.             }
    Sometimes the condition is true but the logs reports, my values are correct. In some cases this results in a ArrayOutOfRange exception.

    Have you any idea what's going wrong?
     
  43. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,266
    It's hard to say what's wrong without seeing your full code.

    What if you make spectralWeights readonly for tests to find out if it is GUI or not?

    Does spectralWeights changes during generate?

    You can email me your generator and I'll try to find out the error at the weekend.
     
  44. Hellhound_01

    Hellhound_01

    Joined:
    Mar 5, 2016
    Posts:
    102
    Thanks for your support offer. I've send your my actual source code and will check your remarks in the late evening when I'm back at home.
     
  45. Wavinator

    Wavinator

    Joined:
    Dec 24, 2013
    Posts:
    79
    Really enjoying this asset. I've never been able to get Voronoi noise to create decent canyons quickly until now. The Terrace generator is especially effective (as the manual says)!

    CanyonsInEditor.png Canyons7smaller.png Canyons4smaller.png Canyons15smaller.png

    I was trying to get a painted desert look but only partially succeeded in using a curve to clamp how textures are applied. I suspect I need to make better use of masking, but I can't seem to get it to work and I don't see it documented in the manual.

    What I'd like to be able to do is
    * Only apply textures to a terrain within a given height range
    * Apply textures based on a range of normals
    * Apply textures based on terrain facing direction (apply snow only to the west facing peak of a mountain, for instance)

    Big request also for future update: Ridged Multifractal noise (fantastic for creating mountains) and Billow noise (great for hills or organic, bubble looking terrain). I'd love to be able to use erosion on both of these noise types.

    Also, is there a way to to scale noise output? There were many times when Voronoi produced features that were too narrow and high to be usable, but maybe there's a better way to do this (was trying to create terrain with paths through it):
    Voronoi Noise smaller.png
     
    Wright likes this.
  46. Hellhound_01

    Hellhound_01

    Joined:
    Mar 5, 2016
    Posts:
    102
    Hi Denis,

    I've tested my code with a ReadOnlyCollection<float> list as you have mentioned. I've set up this list at the end of the compute spectral weights method and referenced only this list in the generate calls. But I got the same weird effects when I modify the ridged offset in the editor. The condition is sometime true and the list size is zero.

    Is the generate method called thread based? In that case I dare say this is a thread side effect.

    @Wavinator
    Nice work. I like your water filled canyon. Maybe could you give use more details how you realized this cool effect?

    BTW: I actually extend my SimplexNoise generator which I've already published in this thread. This extension includes an Improved Perlin Noise base generator and support also billow and ridged noise algorithm extension for both base types. If I could fix this weird issues I will publish this generator here too.
     
  47. KyleOlsen

    KyleOlsen

    Joined:
    Apr 3, 2012
    Posts:
    237
    It would be great if you could support registering multiple transforms for infinite terrain generation, instead of assuming main camera. This would allow us to use infinite terrain in a multiplayer setup, generating terrains around all players connected to our server.
     
  48. spinaLcord

    spinaLcord

    Joined:
    May 25, 2015
    Posts:
    29
    Function to draw objects (Stones, etc. ) only in game mode would be nice.
     
  49. Wavinator

    Wavinator

    Joined:
    Dec 24, 2013
    Posts:
    79
    Thanks! Here's the graph:

    CanyonsGraph.png

    The layering effect is achieved through curves. I tried for height-based layering of the rock but haven't figured out how to do that yet. The water is Aquas Free by the way.

    Great! Looking forward to these!
     
  50. Freddy888

    Freddy888

    Joined:
    Sep 13, 2014
    Posts:
    165
    This is really great ! I'm very impressed with the demo scene, it's just the kind of thing I was trying to make. Totally worth full price.

    I like the node thing, I've never used something like that before, but it's a really nice way to do things.

    I'll study the demo scene graphs carefully. I saw you had some videos on Youtube, I'd like to understand how forest and grass is done at this point, but I bet you are really busy.

    Good luck with this product :)
     
    camta005 likes this.