Search Unity

GAIA - AAA terrain generator, procedural texturing, planting and scene creation

Discussion in 'Assets and Asset Store' started by AdamGoodrich, May 21, 2015.

  1. ZenMicro

    ZenMicro

    Joined:
    Aug 9, 2015
    Posts:
    206
    Hi Guys and Gals,

    I was so Inspired by GAIA and it's growing and warm community I thought I would kill two birds with one stone... Update my wheel texture which are just overlayed on the free SUV model from Unity with something a little more fitting to off-road, and then it hit me.. Goodrich - Terrain :) so i made a few changes :)

    If you would like the textures for use with the SUV let me know and I'll be happy to share them. I'll need to upload them somewhere as it's too big for email.

    ADGoodrich_lolz.jpg

    And Thanks @AdamGoodrich for the Skype session today, you have cleared a few things up for me, The Resources files and their flexibility, The fact that Get from Terrain does not actually get from what's spawned in the world but what is in the current Spawners (Objects) and Unity terrain sets (Textures, Trees, Grass) as well as realizing the power of the masks for example using a Perlin noise heightmap (or any other) to use to detail/object spawning masks and of course how important they are to use when laying another stamp onto the current one to avoid the square footprint problem that can be had otherwise. (hopefully i got all the right, right?) :D

    And here on the SUV...

    ADGoodrich_SUV.jpg

    EDIT: I should update the inside of the wheel too I just noticed...
     
    Last edited: Nov 17, 2015
  2. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,783
    Happy to help Tim - and nice image there - the name on those tyres... sort of has a ring to it :)
     
    S4G4N and ZenMicro like this.
  3. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,783
    It's actually a bug with the first release (i found it the other day) - when Gaia creates terrain it always has the center of the terrain at 0,0,0, so i never saw it. If you make sure that the centre of your terrain is 0,0,0 then it will all work fine. So for example if you have a 2048 x 2048 terrain - then it would be positioned at -1024, -1024 in order for the central point to be 0,0,0. Or say -500, -500 for a 1000 x 1000 terrain.
     
    jaimepollard likes this.
  4. Pequisto

    Pequisto

    Joined:
    Apr 21, 2015
    Posts:
    66
    On occasion, when using the Visualiser to check fitness, I'll attempt to move the visualiser up an incline only to have it disappear through the hill/mountain/incline at a certain point. I'm sure it's just something I've missed somewhere but I felt the need to mention it.

    EDIT: Solved the issue. Had to do with a mismatch in terrain height.
     
    Last edited: Nov 17, 2015
  5. 99thmonkey

    99thmonkey

    Joined:
    Aug 10, 2012
    Posts:
    525
    So is there a fix coming soon? I'm just starting out with Gaia and only using the default settings right now. So I have not changed the size of the terrain yet. I want to make sure I understand how to use the defaults before I go changing things.
     
  6. BackwoodsGaming

    BackwoodsGaming

    Joined:
    Jan 2, 2014
    Posts:
    2,229
    Quick clarification, the Resources file feeds the Spawners. Get from Terrain doesn't look at the Spawners, it looks at the terrain object and pulls textures, trees, and details from it. The Spawners may be effected by pressing the button if the resources within the Resource file changes, but only because the Resource file they read was changed. Hope that makes sense.
     
    ZenMicro likes this.
  7. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,783
    Yep. I have been busy working on next release. In the mean time the workaround mentioned is quite simple.
     
  8. Teila

    Teila

    Joined:
    Jan 13, 2013
    Posts:
    6,932
    So...save your resources folder outside your project somewhere so when you delete Gaia, like I did, you don't have to completely rebuild your resource folder again. :)

    I also always rename my resource folder to something that matches my current scene.
     
    kurotatsu, Mr-Logan and Pequisto like this.
  9. Snownebula

    Snownebula

    Joined:
    Nov 29, 2013
    Posts:
    174
    Something made with Gaia:
     
  10. S4G4N

    S4G4N

    Joined:
    Mar 13, 2013
    Posts:
    3,215
    Very nice to see a cool alien type scene :);)
     
  11. Mr-Logan

    Mr-Logan

    Joined:
    Apr 13, 2006
    Posts:
    455
    That's absolutely stunning!!
     
    S4G4N likes this.
  12. S4G4N

    S4G4N

    Joined:
    Mar 13, 2013
    Posts:
    3,215
  13. kurotatsu

    kurotatsu

    Joined:
    May 10, 2012
    Posts:
    588
    Ditto, did the same thing.

    I would also prefer the create terrain button would send the created terrain to a specifiable directory, rather that the Asset base folder, this is something that could be set up in the resource file.
     
    ZenMicro likes this.
  14. Teila

    Teila

    Joined:
    Jan 13, 2013
    Posts:
    6,932
    You can also just export the asset and save it somewhere. Unity sends created terrain to the base Asset folder as well. Remember..Unity is picky about folders so be aware.
     
  15. BackwoodsGaming

    BackwoodsGaming

    Joined:
    Jan 2, 2014
    Posts:
    2,229
    Yeah, I don't like that either but understand why Adam did it. Having a place to choose the folder to store the terrain would be an awesome solution. Might even be something to also be able to choose the folder where Gaia is located as well. That way those who like a clean root who move assets to appropriate folders after installation wouldn't be stuck with Gaia in the root. Again, understand why it is there now, but maybe this would be something that could also be configurable?
     
    kurotatsu likes this.
  16. kurotatsu

    kurotatsu

    Joined:
    May 10, 2012
    Posts:
    588
    Exactly my point, I think the Asset root folder should just be the default.

    I've taken to keeping my own resource files I make for GAIA out of it's hierarchy in my own folder so I can delete Gaia and reimport it if I want and not lose them, same goes for my personally made stamps.

    As we both stated above one bonehead move cost all the resources we made to be lost and had to start from scratch, this way Updating is cake.
     
    Last edited: Nov 17, 2015
    BackwoodsGaming likes this.
  17. 99thmonkey

    99thmonkey

    Joined:
    Aug 10, 2012
    Posts:
    525
    Here's a screen shot using Gaia with Mesh Materializer. Thanks for the script from @jaimepollard. Image Effects are just the unity standard ones.
     

    Attached Files:

  18. kurotatsu

    kurotatsu

    Joined:
    May 10, 2012
    Posts:
    588

    Wow, Henri Matisse eat your heart out.lol
     
  19. S4G4N

    S4G4N

    Joined:
    Mar 13, 2013
    Posts:
    3,215
    nice too start seeing some more stylized images
     
  20. Pequisto

    Pequisto

    Joined:
    Apr 21, 2015
    Posts:
    66
    I would be lying if I said I haven't had to do this yet. Heh.
     
    Teila likes this.
  21. Mr-Logan

    Mr-Logan

    Joined:
    Apr 13, 2006
    Posts:
    455
    Yeah, I know, the look is still amazing! =P
     
  22. Mr-Logan

    Mr-Logan

    Joined:
    Apr 13, 2006
    Posts:
    455
    Speaking of sharing scripts, I'm currently working on a script to flatten the terrain around a mesh object, however I'm kinda stuck, I'd be happy to put it up public domain if and when I've finished it as many others could probably have use of it =)

    As such the script was originally thought of for airstrips as my game is centered around flying, but could be used for all kinds of structures, houses etc., however they kind of need to be square as it uses the bounding box.
    The problem I'm having is that it works perfectly, only, as long as the object is not rotated, I'm not sure how I would go about allowing rotations though, so if anyone can help me do this "last bit" that would be awesome xD

    Code (CSharp):
    1.  
    2. #if UNITY_EDITOR
    3.  
    4. using UnityEngine;
    5. using UnityEditor;
    6.  
    7.  
    8. [ExecuteInEditMode]
    9. public class FlattenTerrain : MonoBehaviour
    10. {
    11.  
    12.    public Terrain terrain;
    13.    public int precision;
    14.    public float heightAdjust;
    15.    
    16.    void Start()
    17.    {
    18.      GetTerrain();
    19.    }
    20.    
    21.    public void GetTerrain()
    22.    {
    23.      terrain = (Terrain)FindObjectOfType(typeof(Terrain));
    24.    }
    25.  
    26.    /// <summary>
    27.    /// Get all the verts vertically aligned with the object and set them to the lower extent of the
    28.    /// </summary>
    29.    public void Flatten()
    30.    {
    31.      //Get object bounds
    32.      var bounds = GetComponent<Renderer>().bounds;
    33.      
    34.      // normalizes go position relative to the terrain
    35.      Vector3 v = Vector3.up * (bounds.extents.y - heightAdjust);
    36.      v += Vector3.right*(bounds.extents.x + precision);
    37.      v += Vector3.forward*(bounds.extents.z + precision);
    38.      
    39.      var relativeCoord = (transform.position - (v) - terrain.gameObject.transform.position);
    40.      
    41.      Vector3 actualCoord;
    42.      actualCoord.x = relativeCoord.x / terrain.terrainData.size.x;
    43.      actualCoord.y = relativeCoord.y / terrain.terrainData.size.y;
    44.      actualCoord.z = relativeCoord.z / terrain.terrainData.size.z;
    45.      
    46.      var hMapWidth = terrain.terrainData.heightmapWidth;
    47.      var hMapHeight = terrain.terrainData.heightmapHeight;
    48.  
    49.      //Gets the go's position relative to the terrain
    50.      var posXInTerrain = (int)(actualCoord.x * hMapWidth);
    51.      var posYInTerrain = (int)(actualCoord.z * hMapHeight);
    52.  
    53.      //Gets all points under the go
    54.      float[,] heights = terrain.terrainData.GetHeights(posXInTerrain, posYInTerrain, Mathf.RoundToInt(bounds.extents.x + 1) + precision, Mathf.RoundToInt(bounds.extents.z +1) + precision);
    55.      
    56.      //Readjust the heights
    57.      for (int i = 0; i < heights.GetLength(0); i++)
    58.      {
    59.        for (int j = 0; j < heights.GetLength(1); j++)
    60.        {
    61.          heights[i, j] = actualCoord.y;
    62.        }
    63.      }
    64.  
    65.      // apply the height back again
    66.      terrain.terrainData.SetHeights(posXInTerrain, posYInTerrain, heights);
    67.    }
    68. }
    69.  
    70.  
    71.  
    72.  
    73. [CustomEditor(typeof(FlattenTerrain))]
    74. public class LevelScriptEditor : Editor
    75. {
    76.    public override void OnInspectorGUI()
    77.    {
    78.      var myTarget = (FlattenTerrain)target;
    79.      EditorGUILayout.BeginHorizontal();
    80.      EditorGUILayout.LabelField("precision");
    81.      myTarget.precision = EditorGUILayout.IntField(myTarget.precision);
    82.      EditorGUILayout.EndHorizontal();
    83.      EditorGUILayout.BeginHorizontal();
    84.      EditorGUILayout.LabelField("Adjust height");
    85.      myTarget.heightAdjust = EditorGUILayout.FloatField(myTarget.heightAdjust);
    86.      EditorGUILayout.EndHorizontal();
    87.  
    88.      if (GUILayout.Button("Get Terrain"))
    89.      {
    90.        myTarget.GetTerrain();
    91.      }
    92.  
    93.  
    94.      if (GUILayout.Button("Flatten terrain"))
    95.      {
    96.        myTarget.Flatten();
    97.      }
    98.    }
    99. }
    100. #endif
    101.  

    upload_2015-11-17_21-29-24.png
     
  23. kurotatsu

    kurotatsu

    Joined:
    May 10, 2012
    Posts:
    588
    Hella kewl, mang. I can see many uses for this option.
     
  24. Snownebula

    Snownebula

    Joined:
    Nov 29, 2013
    Posts:
    174
    This is what my game apparently looks like if you forget to bake in the lighting:
     
  25. kurotatsu

    kurotatsu

    Joined:
    May 10, 2012
    Posts:
    588
  26. Mr-Logan

    Mr-Logan

    Joined:
    Apr 13, 2006
    Posts:
    455
    Actually that also looks kind of beautiful, an artsy moody game of flying over dark forests doing cod knows what xD
     
  27. 99thmonkey

    99thmonkey

    Joined:
    Aug 10, 2012
    Posts:
    525
    I have the same issue. I'm currently trying to resolve how to make the environment a little brighter at night time using Time of Day (Mod Monkeys https://www.assetstore.unity3d.com/en/#!/content/7316
     
  28. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,783
    Nice idea. Added to feature list.
     
    mwituni, Mr-Logan and BackwoodsGaming like this.
  29. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,783
    I will be adding a feature to the spawning system to do this. Didn't make it into the first release due to time.
     
    mwituni, Mr-Logan and BackwoodsGaming like this.
  30. Mr-Logan

    Mr-Logan

    Joined:
    Apr 13, 2006
    Posts:
    455
    Excellent, do you have a timeframe? =)

    Just an approximate estimate, no need to get hung up in details ;)
     
  31. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,783
    Hehe - a little while yet :)
     
  32. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,783
    There be Dragons!!

    Check this amazing Dragon from SF Bay Studios, Dragons Pack PBR and Gaia working together - this scene took me 5 mins to make. The dragons are so cool I would love to spend more time on building a scene that does them justice!! :)

    Very very fun ... want to play.. no have work to do!! :)

     
    Rick-, ibyte, John-G and 11 others like this.
  33. infinitypbr

    infinitypbr

    Joined:
    Nov 28, 2012
    Posts:
    3,149
    Super Like! :D
     
    S4G4N, jaimepollard and AdamGoodrich like this.
  34. mwituni

    mwituni

    Joined:
    Jan 15, 2015
    Posts:
    345
    Simply AWESOME !
     
    AdamGoodrich likes this.
  35. Mr-Logan

    Mr-Logan

    Joined:
    Apr 13, 2006
    Posts:
    455
    Fair enough =)
     
    S4G4N likes this.
  36. Mr-Logan

    Mr-Logan

    Joined:
    Apr 13, 2006
    Posts:
    455
    After having spent some time learning the ropes I've finally set out to build my first actual terrain for my game, this is very much a work in progress, but I wanted to show you guys what I've got so far =)

    upload_2015-11-18_2-35-30.png

    upload_2015-11-18_2-35-56.png

    upload_2015-11-18_2-36-17.png


    The inhabitants are supposed to be a vikingesque barbarian race, and yes, those are ships, on the top of a mountain, these guys are so bad ass that they probably carried them up the mountain side on their shoulders ;)

    EDIT
    I'm aware that the runway isn't actually touching the terrain everywhere, and intersects at other places, it's a placeholder ;)
    It's actually just a single quad that's been stretched out and had a random texture slabbed on to it. =)
     
  37. BackwoodsGaming

    BackwoodsGaming

    Joined:
    Jan 2, 2014
    Posts:
    2,229
    lol.. I was gonna ask about the ships up there.. :p

    Awesome work.. Neat to see some different climates!
     
    Mr-Logan likes this.
  38. kurotatsu

    kurotatsu

    Joined:
    May 10, 2012
    Posts:
    588
    Those aren't ships, they're Nordic Sleds.
     
    Pequisto, Mr-Logan, S4G4N and 2 others like this.
  39. ZenMicro

    ZenMicro

    Joined:
    Aug 9, 2015
    Posts:
    206
    I hope this won't become a big discussion, but it was shown to me that you do not have to have details or anything actually propagated into the terrain where it is visible. It looks at the slots for each type of resource (which is what you mean by the terrain object i am assuming) - It was this difference that got me. So assigned but not required to be painted into the terrain.
     
  40. Mr-Logan

    Mr-Logan

    Joined:
    Apr 13, 2006
    Posts:
    455
    I was actually discussing with a friend how they got them down again, and we agreed that had it been a AAA there would have been a cutscene in place where a bunch of them got onboard the ship, one guy standing up in front with his fist stretched out to punch any trees out of the way and then they'd set off! xD
     
    kurotatsu likes this.
  41. Dbone

    Dbone

    Joined:
    Mar 10, 2014
    Posts:
    56
    Hi,

    I just bought Gaia because it just looks too good. I've worked with TC and Axis Game Factory, Erosion Brush (which would be a great complement to Gaia) but I really needed a fast, easy, terrain generation tool and Gaia looks to be just that.

    Normally I read the entire forum before buying, partly to know what I'm getting into, but also not to duplicate questions. I was pretty damn shocked to see a 44 page forum for an asset released less than a month ago! I haven't gotten around to reading the whole thing yet so sorry if this has been asked a million times.

    My question is about procedural run-time generation of infinite terrain tiles, stitched together and generating around a player as they move. Any plans for it?

    Excellent work by the way. I haven't dug too far into it yet but it looks like you're making my life too easy. :p
     
  42. Mr-Logan

    Mr-Logan

    Joined:
    Apr 13, 2006
    Posts:
    455
    Heh, yeah the community grew pretty fast and pretty active xD
    I don't know about procedural generation, I don't think it's planned, as the main part of the software is the whole thing about using stamps to stamp out the terrain, everything after that however is procedural using specified rules.


    However from conversations with Adam Goodrich and duplicates of your question ;) The fact seems to be that "infinite" terrain support is certainly planned, though it's probably not right around the corner, I need it too though =)
    In the mean time one can use other thirdparty tools like some of the Sectr packs (I have never used them though so I know nothing about them), but the fact that you'll be able to work on "infinite" terrains doesn't necessarily mean that there will be support for streaming, though I don't know if that's part of the plan. Hope that helps some =)
     
    Dbone likes this.
  43. kurotatsu

    kurotatsu

    Joined:
    May 10, 2012
    Posts:
    588
    Alls I can say is level building is the bain of my existence, and this tool streamlines it so I can focus more on my systems and game mechanics
     
    ZenMicro and S4G4N like this.
  44. S4G4N

    S4G4N

    Joined:
    Mar 13, 2013
    Posts:
    3,215
    I think that is one of the biggest things about Gaia, first enabling to put your ideas down and finally easily create them, so that you can move on with the actual game and get a completed project
     
    kurotatsu likes this.
  45. Snownebula

    Snownebula

    Joined:
    Nov 29, 2013
    Posts:
    174
    Thanks man, this script is perfect! I been looking for something exactly like this!
     
  46. FyreDogStudios

    FyreDogStudios

    Joined:
    Aug 23, 2015
    Posts:
    97
    Using the same pack, looks like No Man's Sky a little.
     
    S4G4N, AdamGoodrich and mimminito like this.
  47. Snownebula

    Snownebula

    Joined:
    Nov 29, 2013
    Posts:
    174
    Last edited: Nov 19, 2015
  48. Mr-Logan

    Mr-Logan

    Joined:
    Apr 13, 2006
    Posts:
    455
    Well, my terrain just became a bit more interesting ^_^

    upload_2015-11-19_0-49-50.png
     
  49. AdamGoodrich

    AdamGoodrich

    Joined:
    Feb 12, 2013
    Posts:
    3,783
    First update will be released shortly - has some nice new features:

    * New screen shotter system
    * New grasses and flowers - much nicer than old ones
    * New grass cluster spawner
    * Ability to use up to 8 terrain textures as masks (compared to initial 4)
    * Much nicer grass and flower defaults
    * Some minor bug fixes
    * Many usability checks and balances to help detect and correct configuration issues

    It will be tested over the next few days and if all goes well, released early next week.
     
  50. Ralack

    Ralack

    Joined:
    Jul 12, 2012
    Posts:
    13
    First off to Adam: Great looking product. Congrats on what appears to be a successful launch.

    To anyone that has first hand experience:
    Is anyone using Gaia to tweak localized areas of terrains that are still under the control of TC and RTP? This looks like a really nice way to setup areas of interest quickly using custom masks.

    My concern is TC and RTP tend to be pretty unforgiving and get testy quickly at times when you introduce other tools (not bashing them, we love both products, but they are so flexible that shooting yourself in the foot is the easiest part of using them). It would be great to hear that this has been tested before I buy yet another terrain editing tool and it doesn't play nice in our workflow.

    The multiple terrain editing that is missing in Gaia wouldn't be an issue with our use case, disabling the other terrains while fixing up localized areas with Gaia's stamp system is completely reasonable in this case as long as we stay away from the edges of the terrains. Even if we did get a little to close, we could fix-up any gaps once we imported the height changes back into TC for re-splatting. We would just have to remember to not stay on the Height map layer in TC or click generate until after we exported the modified height maps and imported them back into TC on one layer again.

    Any experiences someone could share would be greatly appreciated.
     
    AdamGoodrich and S4G4N like this.