Search Unity

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. Nihilus0

    Nihilus0

    Joined:
    Jan 25, 2017
    Posts:
    52
    @Wright
    Hi, MM's Matrix supports only one interpolation.
    I would like to use a large raw file or extend the matrix of the raw file,
    but the resulting products are the topography of the squares.
    20180401_125501_1.png

    I think other interpolations of the metrics are the solution.
    Currently, MM's Matrix supports only one interpolation. (It is similar to bilinear inflation.)
    I found a 'GetInterpolated', can you add Bicubic interpolation to it? or another interpolation?
    orwNd.png

    Code (CSharp):
    1. public float GetInterpolated (float x, float z, WrapMode wrap=WrapMode.Once)
    ps. I'm a non-English speaking Buyer. used Translator.
     
  2. malkere

    malkere

    Joined:
    Dec 6, 2013
    Posts:
    1,212
    Untitled-2.jpg
    Like this? You don't have to lock and you can have as many raw files as you want. I'm not sure we were talking about the same thing. =o
     
  3. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,277
    Thanks!

    Well, you can use multiple raw input nodes with a different offset each, and then combine them all using the Blend Node (with "Add" layers mode for all) - as malkere said, but I guess it will be more convenient to combine them in a single raw in photoshop or other editor.

    That's the other feature that will be brought by by v2.

    Sure, you can use a height scatter mask:
    ObjectsByHeight1.jpg
    or just do a clean up of already scattered objects with height mask:
    ObjectByHeight2.jpg

    Not a trivial task - it can't be made out of the box since noise and voronoi nodes does not support tiling, wrapping or mirroring. I guess you will have to use pre-made masks instead, or write your own cusom nodes.

    What subsequent generation passes do you mean? You can't stop the generate process, and every step is performed without actually applying the intermediate result to terrain, and the other step is performed without reading it, so I'm afraid it's not possible.

    Can't say for sure why does it happens. Don't know how does unity's noise works under the hood for 100%, but it can really be related with float precision - however not in height but in the distance from origin. How far are you making the house? Anyways I guess it's worth trying to change the algorithm.

    Guess that the scene 0 is in the center of the terrains grid, this way simple form should have a negative offset of 3*terrain chunk (like -3000). And I'd like to recommend you using the "Tile" wrap mode for simple form just to be sure. Also it's worth trying removing noises and connecting curves to simple form directly.

    Try this fix. It will check if the terrain removed (or the scene changed) and will stop apply if it doesn't.

    Oh, you can use a stamp node to convert the whole-terrain relief to per-object "stamp".

    Sure. Could you please add proposal at the tickets page just to keep track? I can't add this feature now since I'm busy with v2, but once it's done I will add bicubic interpolation, it ain't that hard.
     
    Last edited: Apr 1, 2018
    malkere likes this.
  4. Poxican

    Poxican

    Joined:
    Oct 17, 2012
    Posts:
    37
    I have tried that actually, as explained in this previous post. The stamped raw image doesn't span multiple chunks, whereas a raw input on it's own can.
     
  5. lordhoodie1

    lordhoodie1

    Joined:
    Apr 4, 2016
    Posts:
    3
    I have an issue after buying mm, loading a voxeland terrain into scene and making the generator mapmagic tells me I don't have it installed. upload_2018-4-1_12-58-58.png

    as you can see in the screenshot the error message on the generator selection and in the assets tab on the left I have map magic installed.
     
  6. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,277
    If restarting Unity does not help check in Window > MapMagic > Compatibility both Voxeland and MapMagic are checked (or enable them if they aren't).
     
  7. Nihilus0

    Nihilus0

    Joined:
    Jan 25, 2017
    Posts:
    52
    @Poxican Hi, I had a similar consider in the past.
    I am a beginner and not a programmer, so I don't know the details about MM but I'll explain it as I know it.
    You would like to change the terrain of the range depending on the object, but you may have a problem getting cut if the range is larger than chunk.

    because, MM doesn't sampling the neighbor Chunk's graph, so it is cut.
    For this reason, MM used the SafeBorder variable.
    This is definitely MM's limit.

    Here's what I have ideas.
    - Change code architecture for customize MM(Not Custom node). Before the currently created Terrain is enabled, it is necessary to sampling the graph of neighboring Terrain to modify the generated terrain in runtime. (This is difficult because it requires code architecture changes and it have signify modification of the code.)
    - When designing a graph, the graph design and game design are changed according to the purpose. I got a design that is quite different from the tutorial.my work was designed to be divided into two graphs that affect the whole chunk and that affect each chunk.
    - Create custom node(Load Raw Data each chunk), 'Save Terrain Raw Data' Component.

    and, I'm a non-English speaking Buyer. used Translator. Maybe I got it wrong or misunderstanding you're issue, maybe my explain is weird...so then sorry.

    @Wright Thank you. I immediately opened the issue. cheers for MM version 2!
     
    AthrunVLokiz likes this.
  8. Poxican

    Poxican

    Joined:
    Oct 17, 2012
    Posts:
    37
    @Wright I'm using the Lock function to create permanent locations in my game. I have a couple of questions/requests:
    • What's the performance impact of using these locked terrains? If I create moderately complex scenes of buildings, objects, scripts etc., does MM pool them in any way or do anything to help performance?
    • I use the Mass Pin/Lock function to pin the tiles I want to work with, and then manually lock the desired tiles:
      • I think 'Unpin All' button should avoid unpinning Locked terrains, as the chance to accidentally lose all the work associated with those terrains is too high.
    • Working with terrain chunks beyond 99,999.99 units (ie., Terrain 100,100) enters the realm of floating point inaccuracies in the editor, with lights and geometry flickering etc., making it very difficult to build scenes/set dress etc. Do you have any suggestion about how to get around this issue?
     
    valentinwinkelmann likes this.
  9. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,277
    Yep.

    Locked terrains are not generated with MM and are saved to scene - there is no difference between the terrains made by hand and locked ones.

    I don't really like the mass pin feature. I'm going to replace it with something in the new version, but don't what yet... Selection frame?

    You can try re-parenting locked terrain to scene root, moving it to origin, making changes and returning it back then. Not a very convenient way, but you are trying to push the limits of Unity - don't expect it will be easy :)
     
  10. Mixality_KrankyBoy

    Mixality_KrankyBoy

    Joined:
    Mar 27, 2009
    Posts:
    737
    Thanks. That got me a bit further (the negative offset - though not sure why that was needed). I now see the preview I expected a blend from red to green. However though the preview looks correct, the base terrain (red) only shows up in the Scene view. Any ideas?
     

    Attached Files:

  11. Poxican

    Poxican

    Joined:
    Oct 17, 2012
    Posts:
    37
    OK good to know! I prototyped a system that uses additive scene loading associated with terrain chunks, but it didn't really work out. It might be worth pursuing this further...

    I actually like the way the mass pin works. When working with specific terrains, it's important to be able to specify which tiles I want to pin.

    My main issue with the current pin/lock functionality is that it's very difficult to find a specific tile and pin/lock it, more so the further it is from 0,0,0. It would be very useful in the replacement to be able to specify the tiles I want, as I can currently with the mass pin functionality.

    That makes sense actually. It's fiddly, but feasible. A useful feature would be to be able to 'center' the map over the selected tile, essentially offsetting the whole map so that the selected tile is moved to 0,0,0. And then it could be moved back once the work is complete.



    @Cosmoraph Hi Cosmoraph, thanks for the input. I'm not sure we're completely on the same page, but we agree that the game design and map design have to work in tandem. I'm not a programmer either, so rewriting how MM works is pretty much out of the question for me!
     
  12. malkere

    malkere

    Joined:
    Dec 6, 2013
    Posts:
    1,212
    I use the WorldShifter with a threshold of 8192m. I also use a big seed, Random.Range(1, 1million), that is almost always six digits... ah, it doesn't look like that should effect it though... ah though right... even with the world shift, the particular case I was looking at was at around x 11,000... I'm going to setup a script to just run the fractal 100 times with different variables see if I can figure it out... try it with different noises, etc...

    addition:
    I have found the cause. It only seems to happen on safe borders. I wrote a simple script:
    Code (CSharp):
    1. public class NoiseTest2 : MonoBehaviour {
    2.  
    3.     Terrain terrain;
    4.     float[,] heightMap;
    5.  
    6.     void Update () {
    7.         if (Input.GetKeyDown(KeyCode.E)) {
    8.             terrain = GameObject.Find("Map Magic").transform.GetChild(0).GetComponent<Terrain>();
    9.             heightMap = terrain.terrainData.GetHeights(0, 0, 129, 129);
    10.             Debug.Log("Running initial scan, " + heightMap[120,120].ToString());
    11.         }
    12.         if (Input.GetKeyDown(KeyCode.R)) {
    13.             float[,] heightMap2 = terrain.terrainData.GetHeights(0, 0, 129, 129);
    14.             Debug.Log("Checking current heightmap, " + heightMap2[120,120].ToString());
    15.             for (int x = 0; x < heightMap2.GetLength(0); x++) {
    16.                 for (int z = 0; z < heightMap2.GetLength(1); z++) {
    17.                     if (heightMap2[x,z].ToString() != heightMap[x,z].ToString()) {
    18.                         Debug.Log("difference found, 1: " + heightMap[x,z].ToString() + ", 2: " + heightMap2[x,z].ToString() + " at x" + x.ToString() + ", z" + z.ToString());
    19.                     }
    20.                 }
    21.             }
    22.         }
    23.     }
    24.  
    25. }
    When the terrain is alone it does not generate any errors. If I generate for example x0z0 and then after than x1z0, and turn off x0z0, when I run play I run gather the data, then force regenerate, the borders values 1-3 (not 0, nor above 3) will all return as have regenerated to different heights than before. I suppose because sometimes loading an area in my game the NE area might load before the NW area whereas other times the NW might load first this is causing discrepancies across different session. On of my players just happened to build right on the border.

    Have to get to bed, will see if I can stop it in the morning by playing with safe borders.
     
    Last edited: Apr 2, 2018
    Djayp likes this.
  13. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,277
    I have to admit that the safe borders are evil. I'm going to replace them with Voxeland-style margins, when the chunk is generated using a bit bigger size and resolution and then clamped to it's original size, cutting off all of the "safe borders".

    Do you get different results in a scene view and game view?

    Should I add a coordinate display in the frame in the scene view?
     
  14. Poxican

    Poxican

    Joined:
    Oct 17, 2012
    Posts:
    37
    Oh man, that sounds amazing!

    You mean like a gizmo in the scene view? Yeah that'd generally be really useful! It'd be a shame to lose the ability to type in the desired coordinates though, I like that workflow.
     
  15. malkere

    malkere

    Joined:
    Dec 6, 2013
    Posts:
    1,212
    @Wright in regards to my MM threads not seeming to fully disable I lately have noticed this is leaking even out of play mode. If I go in-game, then leave, then try to force generate all it throws errors trying to trigger my callbacks and is even placing my runtime scripts on terrains in the editor!? I assume this is my fault at this point or other people would be complaining about it, though I don't understand how the delegates are persisting outside of play... I do use some static scripts but again... shouldn't that all clear after leaving play mode?... confusing... if I restart Unity it works fine so, not a huge deal... Maybe you have an idea though?
     
  16. Djayp

    Djayp

    Joined:
    Feb 16, 2015
    Posts:
    114
    I had a problem with MapMagic and 2018.1 b12 ECS version yesterday night, but I don't know if it is my computer, or the new job system messing with MM multithreading.
     
  17. Mr-Logan

    Mr-Logan

    Joined:
    Apr 13, 2006
    Posts:
    455
    Heya, I'm pretty new to Map Magic and I've run into a small issue.
    I was following this tutorial, so my node setup is pretty similar.


    My issue is that I have both trees and rocks spawning under water. It's alright with rocks at the water surface, but since the player won't be able to dive underwater, it's a waste of resources to have objects there :)

    Currently, I'm just using the shore's sand output to limit where forests can grow, but I also have grass growing under the sea

    upload_2018-4-7_0-15-46.png

    As you can see the grass is the base, so if there is nothing else there, then there will be grass. Ridges and such underwater are rock or sand and between is the grass, annoyingly.

    My textures are set up as follows:
    upload_2018-4-7_0-28-20.png



    My trees:
    upload_2018-4-7_0-26-52.png



    And my rocks:
    upload_2018-4-7_0-26-17.png

    Can anyone help me with this? :)
     
  18. blitzvb

    blitzvb

    Joined:
    Mar 20, 2015
    Posts:
    284
    I think You need to use the ground node as a mask for your rocks.
     
  19. Mr-Logan

    Mr-Logan

    Joined:
    Apr 13, 2006
    Posts:
    455
    Where do I find the ground node? It's neither in maps nor in objects.
     
  20. Mr-Logan

    Mr-Logan

    Joined:
    Apr 13, 2006
    Posts:
    455
    Ah, I solved it!
    I put my height through a curve that looks like this.
    And I used an inverter on it to remove grass from the sea bottom and thereby also trees.

    upload_2018-4-7_10-8-11.png
     
  21. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,277
    I was going to release public v2 preview this week, but it seems that I will need a couple of weeks more to finalize it. Sorry folks.

    Are you unsubscribing from events object's OnDisable (the way it's shown in Unity tutorials)? MM uses weak events internally, but the external events are the standard ones just to make things simple and understandable for users.

    Yep, that's a right way to mask something using height.
     
    blitzvb and Mr-Logan like this.
  22. Mr-Logan

    Mr-Logan

    Joined:
    Apr 13, 2006
    Posts:
    455
    While it might be the right way it's also rather unprecise, it would be cool with a node specifically for limiting the height placement of something. (also the curve really should have more presets, but that's on unity)

    Oh, and a thing that just struck me, would it be possible to limit updates to the current node only (sort of like a mute mode) .
    Like if I'm playing with the curve, looking at the preview on the terrain. What interests me is visual changes on the terrain, not all subsequent steps that happen further down the line.
     
  23. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,277
    Do you mean feature like a preview, but with a height display instead of heatmap?
     
  24. Mr-Logan

    Mr-Logan

    Joined:
    Apr 13, 2006
    Posts:
    455
    Not at all.
    It was two different ideas.
    1) a node that has a max height and a min height and some sort of blend value for smoothness

    2) some way to only update the node you are currently working on and not further up the chain.


    On an entirely different note, I've noticed editing the nodes gets heavier and heavier the more there are. even if I'm just editing values in a node that hasn't even been connected yet. Is there some way to help avoid this?
     
  25. malkere

    malkere

    Joined:
    Dec 6, 2013
    Posts:
    1,212
    edit: fixed my original problem

    new question: I've got two grass outputs in my graph, one of them always switches to 16 patch res when I build, which then sets the grass count too high and breaks it. I reset it to 8 and even tried recreating the node entirely but it keeps going back to 16! =o Any ideas?

    Is there no way to turn up the detail resolution individually?
     
    Last edited: Apr 8, 2018
  26. secondsight_

    secondsight_

    Joined:
    Mar 2, 2014
    Posts:
    163
    Hey there,

    I´ve written in the past that I have severe problems with refreshing and never ending generation (until I refresh the scene view by clicking into it). In my current project this becomes unbearable. I also get a lot of assertion errors and I have no idea why.

    As you can see in the picture, I try to generate some bushes. First group are small bushes scattered all over the terrain. It generates in around 20 second. Now when I want to generate the second group (same assets, different size and noise) MM generates forever and I get the assertions (as an example... other groups also behave this way).



    Also, I loose focus of the MM editor window whenever I come back from playmode. And when I click on my MM object in the hierachy, my performance drops to the bottom, especially when there are colliders in the scene (like on trees).

    I´m wondering why all this happens, cause I rember a time ago when all this worked out smoothly and performance was okay (according to the project of course). I still have the same PC and I had projects before that were way more demanding. Also working in the editor becomes very laggy very fast. I have messed up a lot of groups multiple times because of input lag and groups were mixed into each other (<- reload).
    Furthermore, if deactivate an output group or grass, it happens a lot that the objects are NOT beeing deleted from the scene. My suspition is that all these bugs have the same cause (on 3 different PCs). I´m using Unity 5.6, and MM 1.9.

    So, if anyone has a tip or knows why I have such a bad performance I would appreciate it ! Is it just me or does anyone else encounter performance issues and lags ?

    Thanks !
     
  27. SSL7

    SSL7

    Joined:
    Mar 23, 2016
    Posts:
    349
    @Wright It seems that the Vegetation Studio Output generates a new default VegatetionSystem component for every terrain. That means that no render settings, or any other settings taking into account with VS, which makes the output unusable for now.

    A good way to use it would be to have a pre-configured VegetationSystem prefab that can be selected in VS output, and have this one generated with every new terrain, is that possible?

    In short what I mean is to just have the VegetationSystem Prefab of our choice for every VS output (different output per biome).
     
    Last edited: Apr 10, 2018
  28. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,277
    That sounds exactly like the preview node works.

    All of the outputs of the same type (including the ones in biome) share the same settings.Since these settings are applied to the single terrain you can't have patch res of 16 and 8 at the same time.

    According to the error description you've reached 32K LOD objects limitation. Unity got this bug fixed in 2017, so either use link workaround or consider upgrading.
    And yep, this error produces a lot of lag after being displayed. So maybe it's the reason of the performance drop.

    I've talked to Lennart about it yesterday, we are going to make a prefab slot in VSO that will be used as a reference for all VS components settings.
     
    blitzvb likes this.
  29. SSL7

    SSL7

    Joined:
    Mar 23, 2016
    Posts:
    349
    This is awesome, thank you and Lennart. If it s possible have an option to use the VSO prefab with runtime spawn or mapmagic way, so if someone chooses to use it with runtime to make every changes to VS (slopes etc.) and just spawn the correct VegetationSystem on terrains according to biome etc. and if chooses mapmagic way to make the normal mapmagic workflow.

    That would help if someone wants to make the vegetation settings all on VS.

    best regards.
     
    blitzvb likes this.
  30. amelnyk_

    amelnyk_

    Joined:
    Nov 2, 2017
    Posts:
    2

    Hi Vagrod, I need the normal map of MapMagic Terrain for my project, according to your post I need only your script to produce the normal maps in MapMagic? or I need an RTP also?
     
  31. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,277
    Just wanted to share some sneak peek of the upcoming MapMagic 2 feature: using the LOD mode in editor:


    MM starting to generate both LOD and hipoly terrain versions at the same time. LOD applied almost immediately, while it takes some seconds for hipoly to finish generation. I'm using Erosion node with "heavy" settings just to make the effect more visible.
     
    MickM, Exbleative, wwg and 6 others like this.
  32. malkere

    malkere

    Joined:
    Dec 6, 2013
    Posts:
    1,212
    I'm trying to make them all 8 actually. One of them will always build as 16 no matter what I seem to do. 16 seems to generate much less grass than 8 though really I'd love a way to turn of the detail resolution so I can get more grass, MM doesn't seem to allow that though?
     
  33. blitzvb

    blitzvb

    Joined:
    Mar 20, 2015
    Posts:
    284
    Is this only in the editor or at runtime too?
    ------

    On another notes, I have the same problem as others with the VS output. A prefab will do it.

    Furthermore since CTS 1.6, I get an error when I try to fix the Custom Shader material. See Attached. The null exception come from thoses lines:

    shader = Shader.Find("CTS Terrain Shader Basic");
    MapMagic.instance.customTerrainMaterial = new Material(shader);

    Shader is null.
    Desktop Screenshot 2018.04.11 - 09.29.14.38 (2).png
     
    Last edited: Apr 11, 2018
    TidyDev likes this.
  34. neoshaman

    neoshaman

    Joined:
    Feb 11, 2011
    Posts:
    6,493
    I want to dispute that, infinite terrain is only possible because we can precisely match neighbor using pseudo neighboring: That is if I can derive neighbor's data from my own, I don't need the dependence. That's how perlin works, neighbor share common corner data derived from the position hash.

    In fact there is 3 main methods of achieving continuity within locality of generation:

    1. Offset
    Generation of terrain derive their cells seed from the hash of the reference position, if you have a cell position you can derive its seed, and therefore all data that derive from that seed, so it's easy to reproduce what's in another cell precisely because it's not dependent on other cells. Then we can derive data from that cells's data to create joint data through derivation (like interposlation, difference etc...). Worley noise use that to make infinite voronoi pattern that are locally generated, they only take the point position within neighbor cell and then compute influence by rasterizing only their cell.

    2. SuperCell
    We can have multiple hashes from a single position, bigger hash can encompass multiple smaller hash, we can also used the hashed position result to further hash again. Let say we have a hash such as haspos = pos/10, that mean a cell is influencing 10 units, but we can also do superhash = hashpos/10, and then the super cell will influence 10 cells, which mean we can share generated data from the derived supercell to all the subcell. When generated a cell, we also pick its super cell and all cell with the same supercell will have the same set of data, which allow for long term continuity across the range of supercell. That's how fbm noise works.

    3. Staggered cell
    Like supercell you use multiple hash, but instead of covering larger cell, you use an offset on the position to hash. Instead of just doing pos/hash, you do pos+offset/hash, with generally offset being half the cell size. That way each cells will also share a common seed overlapping coordinate with neighbor where they can share generated data across border ensuring continuity. For example: you generate inner stamps using data seeded from the cell position and generate border stamps using data generated by the staggered position, those will be shared with neighbor cells.

    That's how you can have city or river across many cells, you either generate local derivation for a segment of a river (that is you cannot know where it begin or end, just that it exist within a cells and its neighbor), or generate general parameter in a super cell (begin, end, subcells that are traversed) then let the subcell further detail the aspect of the river inside itself.

    Tangential tips, use correlation rather than causation for river generation, it's harder to generate the landscape first then find how it cause river to happen, rather than generate the river first then find the correlated landscape that support it (using influence of the river segment as a mask, as the river always flow down, it correlate to a landscape slopes, that is a mountain. Basically like we flatten area for village, or using low frequency data to define an island)

    These techniques can also be applied to fake simulation, where you simulate npc live using a timetable, random schedule (seeded for determinism) and hashing the time axis. This allow infinite npc to have infinite plausible lifetime and have existence beyond a single cells, basically generating a cell ensure you filter out if the npc is there or not, and that it exist plausibly despite you not simulating it, at the surprising cost of 0 memory and process outside of the pgc generation. Of course that mean npc follow rivers and road to.
     
    MakeGames2 likes this.
  35. TidyDev

    TidyDev

    Joined:
    Dec 16, 2012
    Posts:
    45
    I am getting this error too :'(
     
  36. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,277
    There's no need to dispute since I'm fully agree with you: various noise patterns could be generated seamlessly without sending any data from the neighbor chunks. Actually, this way it's done in MM. But the problem arises when the user wants to know the position of the objects scattered by custom generator - for the flatten node, for instance, to make edge object flatten both chunk object located at and it's neighbor chunk. The only solution I can see here is
    So MapMagic 2 generates not only the chunk itself, but a bit of overlapping information from the other chunks.

    Now this shader is called "CTS/CTS Terrain Shader Basic". Fix.

    When switching all the grass outputs in all biomes to 8, does it still resets to 16?
     
    tapawafo, neoshaman and blitzvb like this.
  37. malkere

    malkere

    Joined:
    Dec 6, 2013
    Posts:
    1,212
    I don't use biomes actually, just a single graph. There are two grass outputs, one for grass with four on it, one for flowers with four on it. Whenever I build the grass output always goes to 16, though the flower stays the same... I just built a new project and it built properly without changing to 6 =o will try to recreate my main projects graph... someday... never XD someday..
     
  38. neoshaman

    neoshaman

    Joined:
    Feb 11, 2011
    Posts:
    6,493
    If the flatten is just merely a stamp:
    - generate the list of spawn point from adjacent cell
    - discard those that does not overlap using the stamp size
    - regenerate only sample of the height using the neighbor's seed
    - rasterize only the part that overlap the current cell
    Since there is continuity it will automatically fit when the relevant cell will generate it's part.

    Now I might have come off as too direct and dismissive, the goal was to educate people, because I believed it would be useful to onlooker using map magics and that they can implement it themselves (hence why I provided example to use that to generate path and rivers) .... except I might not have consider you aren't exposing the generation of seeds, which then they cannot, unless there is a possibility that they can override the seed by their own ... Off course it's not as trivial as I say because it mean you have to really think to make the node design smart to not overgenerate data (ie have too many prior dependency before sampling a relevant data).


    However I'm not using map magic yet, I'm working on planet generation, so I can share gotcha to look for to anyone interested.

    I hope to be able to adapt mapmagic to it when I finished.

    I think I read here people discussing planet generation, and discussing triplanar noise, I looked into it, don't do triplanar, perlin2d use a hash with 4 points, using triplanar mean generating 12 points per sample, with 3d noise you get only 8points.

    I'll also look into optimizing perlin generation by batching the hashes, instead of redoing the perlin for each point, we might just pick only two points of the tile (diagonal), hash them, and interpolate and filling with data the other hashes, might produce more cache coherent data (and not oversample the corner as we regenerate them for every point in the same hash), which will leave the dot product and ease curve to batch at each point, not sure if it will works, it might be worth it because we do so many compute to do.
     
  39. Nihilus0

    Nihilus0

    Joined:
    Jan 25, 2017
    Posts:
    52
    Wow! List some functions to 'Mapmagic2' what I understood.
    - Add the spline element of the node.
    - LOD of Terrain .
    - Share redundant elements with neighboring terrain. (feature to flexibly minimize problem at the perimeter)
    That's cool!

    And he said,
    "'Mapmagic2' has already put it on the Asset store and are waiting for a check."
    And he said,
    "after about two weeks, we can download 'Mapmagic2'."
    !?
    Really?
    Awesome!
     
    Last edited: Apr 13, 2018
  40. wwg

    wwg

    Joined:
    Apr 2, 2014
    Posts:
    130
    Hi all,
    I'm still playing with the MM trial version, but will be buying the full version soon. I have a couple questions:
    1. I've seen in earlier posts that people are using MM with Horizon[ON], and custom shader output. I couldn't find the custom node in the evaluation version. Has anyone been able to send a color map/textures to Horizon[ON], to make it match the MM textures more closely?
    2. How many map graphs (and/or biomes) does the full version of MM come with? Or is there a place to download different graphs to use as starting points?

    Thanks!
     
    Last edited: Apr 13, 2018
  41. Razmot

    Razmot

    Joined:
    Apr 27, 2013
    Posts:
    346
    Hello, I would like to try voxeland + mapmagic, but I can't make the 2 evaluations packages work together ( as soon as I add mapmagic, voxeland doesn't compile anymore, suggests to add some using mapmagic for matrix class) - I tried all combinations of import order. Note I ve been trying with 2018 b13
     
  42. PiterQ70

    PiterQ70

    Joined:
    Mar 3, 2015
    Posts:
    82
    @Wright Hi. I have two questions.

    1. I read something about v2? This will be other version or update to MM1? I ask bcz I want buy MM but I want v2.

    2. I wait for official Unity 2018.1 version, MM is compatible with this version?

    Cheers.
     
  43. SeaWardDM

    SeaWardDM

    Joined:
    Mar 12, 2018
    Posts:
    8
    Hey Folks,

    First time poster here, fairly new to the development side. I have a semi-enclosed mountain range with an internal lake and I can't for the life of me figure out how to get the shore node to only produce a shore internally and leave the external of the mountains alone. Any ideas or solutions?
     
  44. SeaWardDM

    SeaWardDM

    Joined:
    Mar 12, 2018
    Posts:
    8
    Hey Logan, can you show where you put that invert? I've tried that a few times before in a number of places with no luck.
     
  45. Jaimi

    Jaimi

    Joined:
    Jan 10, 2009
    Posts:
    6,208
    You could make separate biomes for the areas..
     
  46. MaximilianPs

    MaximilianPs

    Joined:
    Nov 7, 2011
    Posts:
    322
    Ok I'm lost, I would like to have grass with bald areas , but where bald, I would like to use a different texture, advise please..

    I though that i could use the bald, to get an output, and send the area in back to texture input again, but it won't link the portal (also, I guess also, that on this way I would have that texture also underwater, which I want NOT)

     
    Last edited: Apr 14, 2018
  47. SeaWardDM

    SeaWardDM

    Joined:
    Mar 12, 2018
    Posts:
    8
    I'm completely new to this part, I just started trying to create biomes, don't know how successful it's going to be yet.
     
  48. Mr-Logan

    Mr-Logan

    Joined:
    Apr 13, 2006
    Posts:
    455

    Is it possible that you're making a circular logic error?
    MM doesn't warn about it, but it doesn't allow you to connect nodes either if they do cause circular logic.

    For example. I'm guessing that the grass portal is the output from the texture output node for grass, and you then want to set the grass bald to affect the texture output node for, that makes grass dependent on grass bald which is dependent on grass which is dependent on grass bald etc.
    It's sort of a chicken and the egg problem :)
     
  49. MaximilianPs

    MaximilianPs

    Joined:
    Nov 7, 2011
    Posts:
    322
    Yes indeed, I've already realized that I've that kind of issue. but actually I can't find a solution. How do I tell to MM to mix the grass texture, for example with a noise that use two different kind of grass?
     
  50. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,277
    Is there any way to determine if a coordinate is placed internally or outside of the mountains? I know it's obvious visually, but you will need a node logic that masks shore for all external areas. If you could describe yourself the way you distinguish internal areas from external you will have a clear vision of what your graph should be.

    As Mr Logan said you are trying to create closed node circle. Did I get it right that you are going to paint with specific texture in areas where some sort of grass grows? If so then I guess it would be easier to paint with this texture first and then use it's texture output as a mask for that type of grass.