Search Unity

MapMagic 2 - infinite procedural land generator

Discussion in 'Assets and Asset Store' started by Wright, Apr 24, 2020.

  1. Greviouss

    Greviouss

    Joined:
    May 27, 2016
    Posts:
    170
    I will see if this overcomes that on my next major fail :D
     
  2. Watanka

    Watanka

    Joined:
    Sep 22, 2020
    Posts:
    24
    Hello. Not sure if the support on Gitlab is used, so I post (again) my problem here.
    I have an issue with grass and lock since more than a year.
    In short, after putting locks on terrain there is an error when I try to regenerate.
    It can occur after few days of work or after a month even if I change nothing on the terrain / MM Graph itself.
    So I'm not sure how to reproduce it, but it occured many time now. Had it on several scenes sometime with very simple MM graph, other time on very complex one.

    Only way to fix it, remove the lock (losing the manual work done inside those locks), regenerate, place the lock again.
    Reproduced recently in Unity 2021.3.9 (with HDRP 12+) and MM 2.1.11.

    I tried at some point to fix the code by myself but it started to take me too much time. So I fully commented the grass generation part in lock, it worked, but it is far from ideal and is reversed by updates.

    Full error :

     
    Last edited: Sep 6, 2022
  3. Liminal-Ridges

    Liminal-Ridges

    Joined:
    Oct 21, 2015
    Posts:
    256
    Infinite terrain stopped again wtf, i have the default settings and terrain size is 2000
     
  4. Greviouss

    Greviouss

    Joined:
    May 27, 2016
    Posts:
    170
    read back on the pages a bit to get up to date on the efforts related to this known error..
     
  5. Greviouss

    Greviouss

    Joined:
    May 27, 2016
    Posts:
    170
    Id love to give you some insight but you could have provided an equal amount of information for that if you said :
    " it no work wtf... 135 is c == false"
     
  6. Watanka

    Watanka

    Joined:
    Sep 22, 2020
    Posts:
    24
    Did a search for "lock" and "grass" + took the time to read the 4 previous pages. I don't see any mention of the lock crash. Are you talking about the grass rendering issue (billboard / no transparancy) ?
    It's not related to the issue I've mentionned above, or I'm missing something ?

    Edit : I should mention that I use Nature Renderer and mesh grass.
     
    Last edited: Sep 6, 2022
  7. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,276
    Thanks for sharing this idea - will keep it in mind (however can't promise implementing).

    If you will get a scene that will get this error - at least 1 of 10 times - could you please email it me before fixing?

    The only grass related known issue I'm aware of is full or zero transparency in builds on latest Unity versions (and it's Unity issue). And this is not it. Maybe I missed it, but it doesn't seem to be known issue.

    Is there any error in the console? Do you remember what were you doing before it stopped? Do demo scenes in package still work?
     
  8. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,276
    Oh wait a minute - there really was something about Nature Renderer, my bad. Unfortunately I have not looked into this asset, but probably I will some day, since it seems to be pretty popular among MM users.
     
  9. Greviouss

    Greviouss

    Joined:
    May 27, 2016
    Posts:
    170
    yea this - nature renderer has come up a couple times
    ODDLY it works for me with phenomenal results in 2020.3.37....
     
  10. Watanka

    Watanka

    Joined:
    Sep 22, 2020
    Posts:
    24
    Thanks for the answers.

    Sure, will send you one with the simpliest graph today.
    Yes Nature Renderer work very well with MM. The creator even made a MM integration guide
     
    Greviouss likes this.
  11. Watanka

    Watanka

    Joined:
    Sep 22, 2020
    Posts:
    24
    I took a scene where the issue is occuring.
    I removed everything but the terrain with MM and few default Unity components (light etc). The issue is still occuring.
    In this scene the lock is quite big and leaking outside the terrain, but I also have the issue with smaller locks that are fully inside a terrain.
    As you can see, there are 2 terrains. The one without lock is (re)generated with no problem.
    I've sent this scene to you Denis. Thank you for your help !
     

    Attached Files:

  12. TimDoesDev

    TimDoesDev

    Joined:
    Feb 23, 2018
    Posts:
    35
    Hi @Wright we are using MM2 to create our multiplayer procedural open world survival game and I'm just starting to think how to handle versioning and similar. I have the idea to handle versioning in a similar way to Minecraft. The way they kind of do it is that they simply save the content of a newly generated chunk. I was thinking that we could do the same using MM2 tiles. That way different graph versions would always work together during the lifetime of the game.

    What I was wondering if there is any functionality for this already or not.. I haven't found any but I feel it would make sense to add this functionality to MM2. The way I'd expect it to work is that before generating a tile MM2 would check if there is already stored data for this tile and in that case \simply\ load the heightmap, splatmap and instantiate the saved prefabs instead of generating them.

    Do you think you could implement this, or if anyone has already implemented this? If you can't/won't maybe you or someone else can point me in the right direction in order to implement this myself.

    All the best,
    Tim
     
  13. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,276
    I'd like to recommend you serializing not everything that was ever created with MapMagic, but only the changed data. For example, if a player chop a tree - save a data that the tree on position XZ (or with some id) was chopped, and do not save any data about the trees that were not touched. Then after MM generates a tile you can apply serialized changes. Since MM will generate exactly the same terrains there's no need in storing all those information (especially splatmaps and heightmaps).

    Otherwise you will have to save all the scene information about all objects if a player will decide to take a walk straight for an hour. And I might be mistaken, but Minecraft serializes only the changed blocks as well.
     
    Greviouss likes this.
  14. Artaani

    Artaani

    Joined:
    Aug 5, 2012
    Posts:
    423
    Hello. Amazing tool. But a question:

    How to spawn MapMagic2 Bundle during runtime?
    I tried to:

    1. Press GameObject -> 3D Object -> MapMagic
    2. Turned that object into prefab
    3. Via script, Instantiated that prefab
    4. Assigned some Graph to MapMagicObject.Graph variable

    But nothing happened.
    If I will select instantiated object in the scene, the console will be spammed with:

    NullReferenceException: Object reference not set to an instance of an object
    MapMagic.Terrains.GUI.FrameDraw.CreateLinePoints (UnityEngine.Terrain terrain) (at Assets/MapMagic/Terrains/Editor/FrameDraw.cs:184)


    Moreover, if I will add some Graph right to the prefab and will try to move that prefab into the scene during edit time, it still will not work and I will got the same error in the console.

    So, what a proper way to spawn MM2 via script? Or I should always keep MM2 in the scene and activate it when needed?

    Tried that in clean project, Unity version 2021.3.1f1
     
    Last edited: Sep 10, 2022
  15. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,276
    The best solution would be to keep MM object in a separate scene and load this scene additively.

    But if you still want it to be created from script, here's what happens if you press menu Game Object -> 3D Object -> Map Magic:

    Code (CSharp):
    1.         public static MapMagicObject CreateMapMagic (Graph graph)
    2.         {
    3.             GameObject go = new GameObject();
    4.             go.SetActive(false); //to avoid starting generate while graph not assigned
    5.             go.name = "MapMagic";
    6.             MapMagicObject mapMagic = go.AddComponent<MapMagicObject>();
    7.             Selection.activeObject = mapMagic;
    8.  
    9.             mapMagic.graph = graph;
    10.             go.SetActive(true);
    11.             mapMagic.tiles.Pin( new Coord(0,0), false, mapMagic );
    12.  
    13.             //registering undo
    14.             UnityEditor.Undo.RegisterCreatedObjectUndo (go, "MapMagic Create");
    15.             EditorUtility.SetDirty(mapMagic);
    16.  
    17.             return mapMagic;
    18.         }
    Main thing here - disable MM after creation to avoid it start to generate automatically.
     
    Artaani likes this.
  16. Liminal-Ridges

    Liminal-Ridges

    Joined:
    Oct 21, 2015
    Posts:
    256
    Does MM2 work with hdrp? cause the forest node works but doesnt change the tree sizes
     
  17. Artaani

    Artaani

    Joined:
    Aug 5, 2012
    Posts:
    423
    Excellent, exactly what I need, thank you! : )
     
    Wright likes this.
  18. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,276
    Yes, MM2 works with HDRP.
    If you are using Trees output objects are placed in scene like standard Unity terrain trees. In most cases Unity treats them as billboard/impostor trees (unless they have no LOD in prefab). This kind of objects has some limitations: they could not be rotated and scaled (scale is applied to billboards only, not objects themselves). This is Unity limitation, not MM one. You can use Objects output to place your trees as standard objects, but in this case do not expect Unity tree optimizations (batching and billboarding) and thus performance will be reduced.
     
    Liminal-Ridges likes this.
  19. Stefan86

    Stefan86

    Joined:
    Aug 31, 2017
    Posts:
    62
  20. mick129

    mick129

    Joined:
    Jun 19, 2013
    Posts:
    228
    I was wondering if it could be possible to expose the min value of the selector?
    I would like to use the water level common to many nodes (texture, splines etc)

    Thank you! :)
    Edit: made a work around using the beach actually, should have tough about it before.
    upload_2022-9-14_19-36-56.png
     
    Last edited: Sep 15, 2022
    Greviouss likes this.
  21. Greviouss

    Greviouss

    Joined:
    May 27, 2016
    Posts:
    170
    Another useful tweak would be if you could open the script in your code editor from the node - maybe add this to the generator right click sub menu, nodes are not always named what thier named in script, finding many similarly named test scripts or even just tracking down the script when you have alot of nodes can be harsh.
     
  22. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,276
    Really? Hooray! Nice to see Unity fixes the issues reported!

    You've got to switch Selector mode to Min/Max. All of the Transition mode is just a GUI wrapper, real values Selector works with are From min/max and To min/max.

    Hmmm, that would be handy, but do you know the way to make Unity open specific script file and find a specific class here?
    Alternatively you can just search for the node name - it's always specified in node class definition attributes.
     
    mick129 likes this.
  23. AlexanderMerk

    AlexanderMerk

    Joined:
    Nov 9, 2016
    Posts:
    16
    Hello!
    I got that strange texture square from a layer which I don't ever use in that graph. Any ideas why?
    P.S. its a layer with index 6

    UPDATE 1:
    Solved by updating heigh map in Gaea, increased "Zero borders - Margins"

    UPDATE 2:
    Issue still there =(
    It seems for some generated maps from Gaea I had that problem, for now cant figure out when and why

    UPDATE 3:
    Issue seems to be gone when I set map magic tile resolution to 257 instead of 1025, but obviously its not cool that way =(
    (Gaea exported height map resolution is 1025)

     
    Last edited: Sep 19, 2022
  24. AlexanderMerk

    AlexanderMerk

    Joined:
    Nov 9, 2016
    Posts:
    16
    Another question, for some reason I cant paint textures on my terrain =( upload_2022-9-17_14-36-37.png
     
  25. iHavo

    iHavo

    Joined:
    Oct 7, 2012
    Posts:
    10
    Fantastic. I was able to build a functional seed randomizer every startup with no more than a 15 line script, and there still isn't any performance hit. Bought the bundle, and it's arguably one of the most effective spends I've ever had in development. Somehow abhorrently powerful while simultaneously incredibly lightweight, can't hardly comprehend the IQ that goes into building a behemoth like this tool. It's so polished.

    For anyone who needs a quick and easy random seed generator on startup script for MapMagic 2, here's mine:
    Code (CSharp):
    1. using System.Collections;
    2. using System.Collections.Generic;
    3. using UnityEngine;
    4. using Den.Tools;
    5. using Den.Tools.GUI;
    6. using MapMagic.Core;
    7. using MapMagic.Core.GUI;
    8. using MapMagic.Expose.GUI;
    9. using MapMagic.Nodes;
    10.  
    11. public class RandomSeed : MonoBehaviour
    12. {
    13.     public MapMagicObject mapObject;
    14.     public int startingSeed = 12345;
    15.     public bool usingRandomSeed = true;
    16.  
    17.     void Start()
    18.     {
    19.         if (usingRandomSeed)
    20.             startingSeed = Random.Range(1, 999999);
    21.         mapObject.graph.random = new Noise(startingSeed, 32768);
    22.         mapObject.Refresh();
    23.         Debug.Log("Random seed generated: " + startingSeed);
    24.     }
    25. }
     
  26. Greviouss

    Greviouss

    Joined:
    May 27, 2016
    Posts:
    170
  27. Liminal-Ridges

    Liminal-Ridges

    Joined:
    Oct 21, 2015
    Posts:
    256
  28. Stefan86

    Stefan86

    Joined:
    Aug 31, 2017
    Posts:
    62
    after building the scene with mm2 the grass was gone
     
  29. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,276
    Grass in build displayed either with no opacity, or with 100% opacity on all terrains created with scripts (including MM-generated tiles).

    Wow, thank you! Now I will look into implementing opening node code with a right click!

    Thank you, glad to hear that! And thanks for sharing your code!

    Switch
    I wonder whether it's related with MicroSplat or heightmap you are using. May I ask you to try using standard Textures output instead of MS output (just one texture should be enough)?
    the MS output apply type to both to output splat maps together with MS masks. More info.
     
  30. implicitz

    implicitz

    Joined:
    Nov 12, 2021
    Posts:
    1
    How can I add a component to the terrain tile trough script.
    I want to add a component to the main terrain in the terrain tile
     

    Attached Files:

  31. mick129

    mick129

    Joined:
    Jun 19, 2013
    Posts:
    228
    Just wondering.

    Is it possible to have 9 instances of MM2 next to each other and have them generate 1 tiles with different seed without having 9 time the same graph with only the seed changed?

    Like the example bellow, first tile could be made with Seed 10, second with Seed 5, etc...

    upload_2022-9-30_10-13-39.png
     
  32. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,276
    I'm afraid it's not possible. All of the seed values (both global and per-node) are attributes of the graph, not MM object. So changing the seed will make all MMs generate the same terrain.

    Instead I would recommend you using 1 MM object with intermediate graph assigned. This graph will have several function nodes, one for each terrain:
    upload_2022-10-1_10-38-7.png

    Each of the functions will use the same graph, but this graph will output result to one tile only. You can use multiplication with square simple form (called pyramid) to do this:
    upload_2022-10-1_10-42-37.png

    And for each of the graphs you'll have to expose nodes local seed value and Simple Form's offset:
    upload_2022-10-1_10-44-22.png upload_2022-10-1_10-45-9.png

    You can use TerrainTileManager's All enumerable to iterate in all of the MM tiles, and select main terrain with tile.main.
    Code (CSharp):
    1. foreach (TerrainTile tile in mapMagicObject.tiles.All())
    2. {
    3.     Terrain mainTerrain = tile.main?.terrain;
    4. }
    Note that main can be null if this terrain has only draft created.
     

    Attached Files:

    mick129 likes this.
  33. mick129

    mick129

    Joined:
    Jun 19, 2013
    Posts:
    228
    Wow amazing answer as always!
    Thank you!
     
  34. Greviouss

    Greviouss

    Joined:
    May 27, 2016
    Posts:
    170
    yes I think that this is possible -
    This will work best if you write a custom generator node that leverages custom seed values. -
    So.. kinda... .code and reference your own custom node that reads your seed in from an external script and set the mm seed to 0 (or use it for other things)
     
    mick129 likes this.
  35. Greviouss

    Greviouss

    Joined:
    May 27, 2016
    Posts:
    170
    Kinda randomly dropping an up to date iteration of my work...
    For anyone who isnt following me and is trying to work this out do not give up. It is possible.

    This is a 10 biome map magic powered planet on an 8x16 tile array of smart tiles that talk and share data.

    This is a generally low res render at 128, and while i still have heights issues to sort out - atleast some of my texturing is coming out nicely(2nd image)....

    :)
    Unity_ab7x8RKcSL.png Unity_2q0VwALFyB.png
     
    Wright likes this.
  36. Greviouss

    Greviouss

    Joined:
    May 27, 2016
    Posts:
    170
    sirleto and Stefan86 like this.
  37. mick129

    mick129

    Joined:
    Jun 19, 2013
    Posts:
    228
    One last question.

    I'm trying to change an exposed value at runtime and I'm not sure of the way to do it via code (the right function or way to do it).
    The closest thing I could find is "generator.SetValue("ExposedValue", int)" but it doesn't seems to be how I need to do it.

    EDIT: I will leave my question here, I really missed that part in the documentation here in case it can help someone: https://gitlab.com/denispahunov/mapmagic/-/wikis/Main/Expose
     
    Last edited: Oct 4, 2022
  38. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,276
    Have you tried it, is everything described here work? I wonder why haven't I moved to Scripting FAQ. It was a year ago already. Maybe just forgot to it.
     
    mick129 likes this.
  39. mick129

    mick129

    Joined:
    Jun 19, 2013
    Posts:
    228
    Yeah it is working out of the box :)
     
    Wright likes this.
  40. Liminal-Ridges

    Liminal-Ridges

    Joined:
    Oct 21, 2015
    Posts:
    256
    @Wright is there a way to use this or something similar with MM?

    Also there is something wrong with the way MM applies the textures. Projectors dont work and Global Snow also.
     
    Last edited: Oct 9, 2022
  41. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,276
    Do they work with the standard Unity terrains (the ones that created manually)?

    Hm, I'm not aware of this asset, so I cannot say for sure whether it will work. But looks nice, so I guess it's worth trying :) Maybe someone already have experience with using Stylized Grass Shader with MM?
     
  42. Liminal-Ridges

    Liminal-Ridges

    Joined:
    Oct 21, 2015
    Posts:
    256
    I managed to get better grass performance with Nature Render but it doesnt look as beautiful :D
    Yes the projector and Global Snow work with the unity default terrain.
    One more thing i wanted to ask, if i want to bake lightmaps, do i set the terrain to static?
     
  43. Evallis

    Evallis

    Joined:
    Nov 6, 2012
    Posts:
    20
    Hello everyone! Does anyone know how best to access the terrain layers when using the MicroSplat Output? I am trying to implement a footstep system that reads the terrain layers at the player's position and plays certain sounds for certain textures. The problem is when I make a build all the terrain layers return Null Reference Exceptions. Even trying something like:

    foreach(TerrainLayer T in CurrentTerrain.terrainData.terrainLayers)
    {
    Debug.Log(T.name);
    }

    returns a Null Reference Exception.

    Is there some other way I am supposed to access the terrain layers when using MapMagic and the MicroSplat Output? I have tried all kinds of different combinations of Set Component, Custom Splatmaps, Apply Type, etc. But nothing seems to be working. Or is there a different approach that would work in this case?

    Any help would be greatly appreciated!

    Thanks!
     
  44. valentinwinkelmann

    valentinwinkelmann

    Joined:
    Nov 3, 2014
    Posts:
    190
    When MapMagic is used in conjunction with MicroSplat and the MapMagic MicroSplat Output node is set to Apply Type: Splats, this error always appears. I have tried it with very simple material setups and different blank projects. It is always the same frustrating result.

    Code (CSharp):
    1. Thread failed: System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values.
    2. Parameter name: index
    3.   at System.Array.InternalArray__get_Item[T] (System.Int32 index) [0x00009] in <9aad1b3a47484d63ba2b3985692d80e9>:0
    4.   at (wrapper managed-to-managed) Den.Tools.Matrices.MatrixWorld[].System.Collections.Generic.IList`1.get_Item(int)
    5.   at MapMagic.Nodes.MatrixGenerators.TexturesOutput200.BlendLayers (System.Collections.Generic.IList`1[T] matrices, System.Collections.Generic.IList`1[T] masks, MapMagic.Terrains.Area area, System.Collections.Generic.IList`1[T] channelNumbers, MapMagic.Products.StopToken stop) [0x000eb] in E:\SSDWorkspace\Unity\Steampunk\Assets\MapMagic\Generators\Matrix\Runtime\TexturesOut.cs:206
    6.   at MapMagic.Nodes.MatrixGenerators.MicroSplatOutput200.Finalize (MapMagic.Products.TileData data, MapMagic.Products.StopToken stop) [0x0023d] in E:\SSDWorkspace\Unity\Steampunk\Assets\MapMagic\Compatibility\MicroSplat\MicroSplatOutput.cs:140
    7.   at MapMagic.Nodes.Graph.Finalize (MapMagic.Products.TileData data, MapMagic.Products.StopToken stop) [0x0002b] in E:\SSDWorkspace\Unity\Steampunk\Assets\MapMagic\Nodes\Graph.cs:964
    8.   at MapMagic.Terrains.TerrainTile.Generate (MapMagic.Nodes.Graph graph, MapMagic.Terrains.TerrainTile tile, MapMagic.Terrains.TerrainTile+DetailLevel det, MapMagic.Products.StopToken stop) [0x00070] in E:\SSDWorkspace\Unity\Steampunk\Assets\MapMagic\Terrains\TerrainTile.cs:717
    9.   at MapMagic.Terrains.TerrainTile+<>c__DisplayClass48_0.<EnqueueTask>b__0 () [0x00000] in E:\SSDWorkspace\Unity\Steampunk\Assets\MapMagic\Terrains\TerrainTile.cs:624
    10.   at Den.Tools.Tasks.ThreadManager.TaskThreadAction (Den.Tools.Tasks.ThreadManager+Task task) [0x00000] in E:\SSDWorkspace\Unity\Steampunk\Assets\MapMagic\Tools\ThreadManager\ThreadManager.cs:138
    11. UnityEngine.Debug:LogError (object)
    12. Den.Tools.Tasks.ThreadManager:TaskThreadAction (Den.Tools.Tasks.ThreadManager/Task) (at Assets/MapMagic/Tools/ThreadManager/ThreadManager.cs:144)
    13. System.Threading.ThreadHelper:ThreadStart ()
    14.  
    If the Apply Type is set to "Textures", the textures fade over if the LayerIndex was changed in MapMagic. For example: If there is a sand material on terrain layer index 1 and a grass material on 5. If you then change from 1 to 5 and back to 1, the sand is slightly greenish because the grass shines through. This multiplies with every index change and is very annoying and leads to faulty terrain texturing.


    The MicroSplat integration documentation was updated over a year ago, so I can't find any new information here that would help me. It would be really nice if there was an up-to-date tutorial describing in detail how MicroSplat and MapMagic can work together smoothly without causing a chain reaction of problems.

    It is really very sad that the two best and most outstanding assets from the assetstore harmonise so badly with each other and that there is still no really well-functioning cross-integration.
     
  45. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,276
    Actually you don't need to use MicroSplat for this. There are nodes that were made specifically to export masks that could be processed with custom shaders (Direct Textures) and scripts (Direct Matrices). Changing the steps sound based on where character is walking is a classical use case for those.

    Have you tried apply type Both? It works with MicroSplat in same native mode as Textures, but also applies Splats if some MS modules need it.

    This apply type - Both - is in here (MS Output). But I see what you mean, page has improper formatting, so this apply type belongs to the parent list. Thanks for letting me know!
     
  46. sirleto

    sirleto

    Joined:
    Sep 9, 2019
    Posts:
    146
    Hello Wright, thanks for the great product! I'm happy customer/owner.

    MicroVerse is hip these days, especially as the stamp placement allows for very fast, very realistic and diverse looking terrains. But it can't do infinite terrain (AFAIU).

    There is a "feature" I'm looking for now in map magic, and I think this is something you could greatly advertise to work in conjunction with terrain "editors" like MicroVerse:

    I want to design high quality terrains, manually "in the center" where player starts, but have infinite MapMagic terrains procedurally generated "around it".

    Is this already possible with pinning/locking in MM2?

    Ideally I would use MicroVerse to craft N*M terrains with fixed size, configure MM2 to produce terrains with same fixed size, finally tell MapMagic to exclude the zone of MicroVersed terrains.

    Setting the same textures/layers/rules/tools (e.g. MicroSplat) will make the terrains visually compatible. Having different "height" styles between the two terrain tools doesn't bother me.

    Example: open world doom moonbase. A city/action area is is in the center of terrains, but player can sit in flying spacecraft and fly outside this FPS area.

    What's your opinion? Ideas how this is perhaps already possible in MM2 ? Can you estimate how much work it would be to add support for this idea?

    Thanks a lot!
     
  47. Evallis

    Evallis

    Joined:
    Nov 6, 2012
    Posts:
    20
    Direct Matrices worked for me! Thank you so much!

    Oh one more question if you don't mind, is it possible to have multiple graphs for the same MapMagic object? As my level gets more and more complex I am finding it more cumbersome to try and find the nodes I'm looking for in the current graph, is there some way I can make different graphs for different things and combine them into the main graph?

    For example I would have 1 graph for my terrain generation, 1 for spawning towns with houses and props, 1 for points of interest or landmarks, etc.

    Thanks again!
     
  48. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,276
    I'm afraid it's completely different thing. MM doesn't work this way - it's not about stamps or inventing new terrain based on an example (ANN-based?). It's about procedural algorithmic maps - noise, voronoi, etc - and their combinations.

    But it supports manual edited terrains in locked areas. So you can generate something that looks like a background terrain you want, then lock central terrain, and manually sculpt here what you want exactly.

    Yes. Take a look at Function nodes. They can hold the whole graph in a single node. This way you can make one graph for terrain, one for villages, one for POIs and one top-level graph to rule them all.
     
    sirleto likes this.
  49. Liminal-Ridges

    Liminal-Ridges

    Joined:
    Oct 21, 2015
    Posts:
    256
    @Wright any idea how to fix the grass problem in URP? I have to instantiate grass as a mesh which ruins performance. Is there another way?
     
  50. Evallis

    Evallis

    Joined:
    Nov 6, 2012
    Posts:
    20
    Excellent! Exactly what I was looking for, thanks again!
     
    Wright likes this.