Search Unity

  1. The 2022.1 beta is now available for testing. To find out what's new, have a look at our 2022.1 beta blog post.
    Dismiss Notice

Terrain Composer2 a next generation GPU powered terrain tool.

Discussion in 'Assets and Asset Store' started by eagle555, Sep 16, 2012.

  1. jphibbard88

    jphibbard88

    Joined:
    Dec 19, 2016
    Posts:
    4
    im having the same problems as Mad_Mark after upgrading to 2018.4
     
  2. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,704
    Yes it's because I had some conditionals that only go until U2018_3, here's a fix for it. Will also submit it to the Asset Store.
     

    Attached Files:

    syscrusher likes this.
  3. jonfinlay

    jonfinlay

    Joined:
    Aug 25, 2015
    Posts:
    535
    Hi, I'm really glad to see terrain composer is being worked on again. It's well ahead of its competitors. However the only issue I have is that sometimes I get the message "Terrain not found. Create new terrain?". Whatever option I click I lose the modifications I've made. I think this happens to a number of people so might be worth adding the fix to the faq on your site. What should be done in this situation to keep the terrain? I've experienced it in all unity versions. Also, what is the recommended unity version for reliability? 2018 or 2019?
     
  4. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,704
    I made the scan terrain button (in the TerrainArea Inspector) which is included in the fix above^^
    So if it happens and you click that button is should get solved.

    As for stability that's more depending on Unity's side, TC2 is compatible with U5.1 and up. Currently we're using 2018.4, but 2019.1 is out of beta and should be good too.
     
    syscrusher and jonfinlay like this.
  5. jonfinlay

    jonfinlay

    Joined:
    Aug 25, 2015
    Posts:
    535
    Thanks! Works fine in the latest Unity version. Perfect for rugged African terrains and the texturing is second to none :)
     
  6. StrongCube

    StrongCube

    Joined:
    Nov 22, 2016
    Posts:
    51
    Hi, everybody.

    Question to the developers.
    Asset supports LWRP from Unity 2019 ?

    Unity has an example of LWRP TerrainLit Shader
     
  7. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,704
    Yes TC2 is compatible with LWRP and HDRP because it uses standard Unity terrain and you can use any shader you like on it.
     
    syscrusher likes this.
  8. Sajid_farooq

    Sajid_farooq

    Joined:
    May 23, 2012
    Posts:
    238
    I just purchased TC2. I wanted to report that on Unity 2019.3 the example scene is broken.

    It doesn't have a default landscape material applied, hence the landscape generated is pink.

    Regards,
    Sajid
     
  9. Sajid_farooq

    Sajid_farooq

    Joined:
    May 23, 2012
    Posts:
    238
    I also noticed that all of the images in the TC2 window for the sample are empty. I looked under the stamp folder and it seems to only have raw files.Your tutorial shows some jpg files but I didnt get them from the downloaded stamps package.
     
    Last edited: May 20, 2019
  10. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,704
    Thanks for reporting this. I will make a fix for it today.
     
    Sajid_farooq likes this.
  11. SgtLame

    SgtLame

    Joined:
    Nov 26, 2015
    Posts:
    117
    Hi,
    For texturing my terrain with TC2, I use a splatmap made with an external tool. I use 13 textures which are declared in the Splat textures section of the Terrain area object, and my splatmap is a png file with, accordingly, 13 unique colors. Then I create the 13 nodes for each texture and use a yellow file->image node for the splatmap. See screen capture below:

    Clipboard04.jpg

    Problem is, it looks like TC2 doesn't detect all 13 colors and does some "color fusions". In the example below, the flat part of the terrain should have its own texture. I tried playing with "color select mode" parameter. When set to "Color range", I get the result in the screen capture below. When set to "color", the select node only displays 2 colors. I also tried playing with the Red/Green/Blue sliders, which has an impact on the number of "detected" colors. The problem is that I am completely clueless about how these sliders work (and I couldn't understand it watching the tutorial video). Please help.

    Clipboard02.jpg
     
  12. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,704
    That's not really a splatmap, as a splatmap uses the RGBA channels for 4 textures. A splat texture for each channel. And the opacity of the splat texture can be from 0-255, this way you can blend them. However what you need to do is change "Color Select Mode" to "Color" and use only 1 splat texture per layer and need to use 13 layers instead. And on each Layer you can pick the color you want to use for it. You can duplicate a layer with control + d

    Let me know if you can get it to work...
     
    Last edited: May 20, 2019
    syscrusher likes this.
  13. syscrusher

    syscrusher

    Joined:
    Jul 4, 2015
    Posts:
    1,096
    So, for my own edification then, are the two curve parameters in the Color Map mode for the purpose of defining how closely the color on the input map needs to match the specified color to activate that layer? Is it a boolean yes/no match, if the colors are close enough, or is there a gradual in/out depending on those two curves?
     
  14. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,704
    Hey everyone,

    Here is a new update, I submitted it to the Asset Store:

    TerrainComposer 2.7

    Features:
    * Scan terrains button in TerrainArea for using terrains that already have a heightmap.
    (res expand border percentage needs to be on 0 in Settings inside the TerrainComposer2 GameObject)*

    Improvements:
    * Lod Groups always visible (LOD0) for the collision node

    Fixes:
    * Heightmap resolution 4097 wasn't working
    * Unity 2018.4 was giving 2 compile errors
    * Creating pink terrain in Unity 2019.2 and 2019.3
     

    Attached Files:

  15. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,704
    It's fixed in the update above ^^. As for the stamps images not showing it works here, are you sure you are in the folder before RawFiles?

    upload_2019-5-21_10-12-37.png
     
  16. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,704
    Can you show a screenshot of what you mean?
     
  17. SgtLame

    SgtLame

    Joined:
    Nov 26, 2015
    Posts:
    117
    Thanks a lot, it works!
    But now I have another little problem, see those black lines between the splatmap zones:

    Clipboard03.jpg
    I understand it has something to do with the splatmap resolution. Changing this parameter has an influence, but I can't get rid of those black lines. I thought it had something to do with my splatmap png files being resized, but the terrain is sized 2000x2000 and those png files are 2000x2000px, so I'm lost. Any ideas? ;)
     
  18. syscrusher

    syscrusher

    Joined:
    Jul 4, 2015
    Posts:
    1,096
    :) I was actually asking a question based on this screenshot from @SgtLame. I probably didn't ask my question very clearly, for which I apologize.

     
  19. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,704
    But Unity terrain splatmap is always power of 2, so probably with 2048 you wouldn't get it. What you can do is slightly scale the layers up so they overlap a little and you get some nice blending in-between. Also you need to enable `Normalizing` in the main splat node (on the left of the "Splat" button).


    I'm not sure if I understand you correctly but there's 2 options, "Color Range" which acts like splatmap mode with which you can import splatmap images, it detects a range. And the "Color" mode which I advised to use, detects only 1 color.
     
  20. SgtLame

    SgtLame

    Joined:
    Nov 26, 2015
    Posts:
    117
    Thanks for your answer. Maybe this is not the way you meant to do it, but scaling the layers up "spreads" the image wider from the center, and then layers still don't overlap.
    But using 2048px wide splatmap images works. :)
     
    Last edited: May 22, 2019
  21. Sajid_farooq

    Sajid_farooq

    Joined:
    May 23, 2012
    Posts:
    238

    Indeed I am. I downloaded the stamps from this location:
    https://mega.nz/#!HNIjxZZA!OQTmlM1jiT5rOCPz7_PZBJ-8UwJOPOsW-ghs25wHAik


    The DropBox link on the Terrain Composer 2 Documentation website does not work.


    I can confirm that the stamps folder only contains the folder "RawFiles". It does not have any files outside of that.

    Capture.JPG
     
  22. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,704
    They don't have, but I made an importer script that makes preview images for them in the folder above them, it does work on my side:
    upload_2019-5-24_7-3-43.png

    If it's not working you can try to right click the stamp folder and re-import it to trigger the importer script.
     
    syscrusher likes this.
  23. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,704
    Ah yes indeed that doesn't solve it, but glad it works with the 2048px splatmap, that's actually the way to go.
     
  24. Sajid_farooq

    Sajid_farooq

    Joined:
    May 23, 2012
    Posts:
    238
    Ok, so manually doing a "reimport" fixed it. It still wont auto-import though, even on unity 2018.3...Im all set but it might trip up other people as well.

    On another note, is there a way to get TC2 to play well with Dungeon Architect? Dungeon Architect's landscape modifier erases all hight-map data from TC2. On the other hand, it seems to work well with GAIA.
     
  25. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,704
    Strange it does work on my side with any Unity version. It uses:
    https://docs.unity3d.com/ScriptReference/AssetPostprocessor.html
    Which should get trigger on each file that is added to your Unity project. Do you get any errors?

    I looks like Dungeon Architect creates a new heightmap, if you want to use TC2 on top, you can export the heightmap from the terrain as a raw file and use it in TC2 as a stamp.
     
  26. Sajid_farooq

    Sajid_farooq

    Joined:
    May 23, 2012
    Posts:
    238
    I cant do that because both TC2 terrain and the DA Dungeon are dynamically generated. I want to generate the terrain first, then generate a dungeon, and then have the DA landscape modifier sculpt the terrain to fit the dungeon. Unfortunately while trying to fit the terrain, DA resets the height values.
     
  27. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,704
    So you use TC2 and DA at runtime?
     
  28. Sajid_farooq

    Sajid_farooq

    Joined:
    May 23, 2012
    Posts:
    238
    Yes. Its a procedurally generated level. TC2 makes the terrain and DA makes the dungeon that sits on top of it.
     
  29. syscrusher

    syscrusher

    Joined:
    Jul 4, 2015
    Posts:
    1,096
    No promises, but I may be able to help with this. I'm working with the same pair of assets here and hope to spend some time on it in the next couple of days. If you get to the solution first, please post here, and I'll do likewise. :)
     
    Sajid_farooq likes this.
  30. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,704
    If DA resets the height values, how do you solve it then in Gaia? As I assume you would run Gaia after DA. I could make TC2 add to the terrain additive but that wouldn't solve it as it would put on top of the DA terrain.
     
  31. Sajid_farooq

    Sajid_farooq

    Joined:
    May 23, 2012
    Posts:
    238
    There is a separate landscape transformer script in DA specifically for GAIA. Getting one for TC2 would be great.

    I have reached out to Ali Akbar (creator of DA as well) but haven't heard anything back.
     
  32. ArturoUSR

    ArturoUSR

    Joined:
    May 31, 2019
    Posts:
    15
    Hello.

    Terrain Composer is an awesome tool, and is helping us a lot to achieve a good speed in our production. I have a couple of issues though, and I'd like to know if someone has encountered something similar and found a way to solve them.

    My problem is: whenever I save and close unity, and open it again the next day looks like all the properties of my terrains are unlinked to TC2. In the TC2 worspace, there's still the nodes with the textures and objects I created, but seems like any change I do to them doesn't apply to my terrain on the scene. I tried clicking to "scan for terrain" but doesn't do anything. The terrain still retain the changes I did the other day, but I cannot edit it anymore with TC2.

    The other problem I have is when I try to back up my scene, and with "verify saving assets" enabled, even the smallest change done in TC2 are saved in my project and scenes, and I can't do any test or change, because these changes are kept, and with the first problem above, the result is lots of time lost.

    I'm using Unity 2018.3.1f1

    Thanks in advance for any help.
     
  33. WryMim

    WryMim

    Joined:
    Mar 16, 2019
    Posts:
    51
    Hi. I need help.

    I want to make 2 textures, BUT that would be the second grass texture was farther from the mountains.
    That is, after the Height to indent.

    Found "Expand", it indents well. BUT there is a line in the middle.
    How to remove it? Or how to indent after Height ?

    4 terrain connected

    upload_2019-6-2_17-11-36.png
     
    Last edited: Jun 2, 2019
    syscrusher likes this.
  34. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,704
    Yes I think it's best to do it on his side.

    That is strange. I've had some reports before but wasn't able to reproduce it so far. Is it always happening or sometimes? If you right click here:
    upload_2019-6-3_7-33-7.png

    Then in the popup window choose "Reset Textures" and "Refresh". Does that solve it?
     
    ArturoUSR likes this.
  35. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,704
    Yes it's because of the edge of the terrain, looks like it doesn't work correctly. Will look into it today for a fix.
     
    syscrusher likes this.
  36. ArturoUSR

    ArturoUSR

    Joined:
    May 31, 2019
    Posts:
    15
    Fantastic, thanks a lot for the help, indeed that solved the issue.

    I'm quite happy with TC 2 and the learning curve is good. Now that I'm going to move to the production of the project, I was wondering if there's a reasonable ammount of tiles I should divide my terrain and if this factor affect the performance of TC2 in the long run. My project is a flying simulator similar to pilot wings, and I need to set up a terrain of 150 squared kilometers (15 kilometers long) Have you made stress tests with huge terrains or do you have a recommended size for terrains?
     
  37. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,704
    As for the tiles terrain size doesn't affect performance but the amount of tiles and terrain resolutions each tiles has does. What I measured in the past that up to 5 x 5 can work good. I think you could do 15 x 15 km with between 2 x 2 - 4 x 4 terrains.

    Performance is all on Unity's side as TC2 uses standard Unity terrain. You can enable the GPU instancing in the TerrainArea GameObject for the heightmap (Unity +2018.3 feature), that should give a nice performance boost because of reduced draw calls.
     
    ArturoUSR likes this.
  38. iddqd

    iddqd

    Joined:
    Apr 14, 2012
    Posts:
    458
    Hello

    Is it possible to save full biomes as presets and then blend between them or must they all be created within one preset?

    I'm mean, if I have 30 different biomes or settings - i would like to edit them separately in their own scene and save the preset. Afterwards I would like to have a master preset where I can load those biomes and blend between them randomly.

    I also see that the Trees and Grass are defined in the Terrain Setup, so is it even possible to have different Vegetation per Biome?

    Thank you
     
    Last edited: Jun 10, 2019
  39. iddqd

    iddqd

    Joined:
    Apr 14, 2012
    Posts:
    458
    and another question: Does the distortion node work?
    Thanks
     
  40. gecko

    gecko

    Joined:
    Aug 10, 2006
    Posts:
    2,187
    I have two unrelated questions:

    1) Is there a way to use TC2 to paint additively on the terrain, without altering what's already been painted? (I've done a lot of manual painting since last using TC2 and now just want to add a texture here and there without redoing the entire splatmap).

    2) When painting grasses: I have great difficulty tweaking the node settings to paint a reasonable density of grass. Often the density is either crazy-high or way too low -- and often in the former case, that means that Unity can't actually render all the grass, so instead the grass appears in artificial strips. (I believe that's due to the Detail and Detail per Patch resolutions, but I've tried increasing those, but it hasn't really solved the problem. I know this is not a TC2-specific problem, but is especially hard to solve with rule-based painting, so any tips would be welcome.

    thanks!
    Dave
     
  41. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,704
    You can do this for each output group separately only. So you can make presets (layer group) for Heightmap / Splatmap / Trees / Grass and Objects and then blend those layer groups together.

    As for the trees / grass this is indeed linked to the terrain (needed by Unity) and you would need to add all what you want to be rendered to the terrain.

    Doesn't seem to be working anymore, it was an experimental node. I will look into fixing it for the next update.
     
  42. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,704
    1) I recommend to use free TC2 node painter extension for manual painting as you will keep anything you paint manually with it. This was one of the purposes Seneral made it for.

    2). This is a Unity terrain issue. Also recommend to use TC2 node painter for painting the grass, it has many more options than Unity's terrain brushes.
     
  43. iddqd

    iddqd

    Joined:
    Apr 14, 2012
    Posts:
    458
    Ok, thanks for explaining. That helps a lot.

    That would be amazing if you could fix it, warping/distorting can really give unique results.
     
  44. iddqd

    iddqd

    Joined:
    Apr 14, 2012
    Posts:
    458
    Does anybody know if there's an easy way to assign the TC2 Color Map to Microsplat automatically at Runtime? I'm assuming the Color Map is not a standard Unity Terrain features so it's applied to the Unity Terrain System like a Splat Map, correct?

    If that's the case would I manually need to assign it to split (for multi-tile terrains) and assign it to the Microsplat Terrains?

    Thanks
     
  45. iddqd

    iddqd

    Joined:
    Apr 14, 2012
    Posts:
    458
    Hi @eagle555

    I have another question:

    Since TC2 is GPU based and I'm assuming you're working with RenderTextures, wouldn't it possibly be a huge performance boost to implement these new methods:
    https://docs.unity3d.com/ScriptReference/TerrainData.CopyActiveRenderTextureToHeightmap.html
    https://docs.unity3d.com/ScriptReference/TerrainData.CopyActiveRenderTextureToTexture.html

    So you can go directly from RT to TerrainData?

    Currently I still see some jitter when using RuntimeTerrains and 1024 Sized Height/Splatmaps.

    Thank you.
     
  46. LukasKracek

    LukasKracek

    Joined:
    Feb 28, 2019
    Posts:
    1
    Hi, I need help with the color maps.
    TC1 was able to upload color maps in bulk ( see 2:15 min:
    ).
    I have 6x6 squares in TC2 and I need to add color maps (also 6x6 squares). Is it possible in TC2? Or I have to upload color maps one at a time and manually move to the position.

    Thank you very much.

    Lukas
     
  47. Sajid_farooq

    Sajid_farooq

    Joined:
    May 23, 2012
    Posts:
    238
    Quick Bug report:

    On the HDRP (Unity 2019.1), Materials appear appear pink by default because they use the old shader. "Upgrade materials" does not fix them automatically. Terrain shader can be fixed manually by changing to HDR->Terrain Lit in order to work.

    Havent managed to get trees/grass/foliage to appear correct in HDRP.
     
  48. Seneral

    Seneral

    Joined:
    Jun 2, 2014
    Posts:
    1,205
    Second that. Would likely be a HUGE boost to performance, since that takes such a large portion of TC2s generation time.
    Would have to look in the code again to estimate how much work that would be but I definitely think it would be worth a try.
    Although I'm not entieren sure if TC2 even uses RenderTextures at all. It's based on compute shaders and I think even for height/splat output it uses some data struct rather than render textures if I remember correctly...
     
    iddqd likes this.
  49. eagle555

    eagle555

    Joined:
    Aug 28, 2011
    Posts:
    2,704
    You can export TC2 colormaps on the Inspector of the main color map node (on the left of the color button). However assigning them automatically that depends on the Microsplat code, you have access to the colormap render textures in the TC2 code.

    Like Seneral says, yes that would make it a lot faster. Although I might not use a RenderTexture for it, so it would be more work to implement it. Currently I don't have much time, because we just released the free version of our game on Steam and we're going to do bigger marketing to get more players.

    What I did with TC1 is assigning the colormaps as a splat texture and use no tiling on it. But up-close it doesn't look good. I made TC2 colormaps compatible with RTPv3 and you can auto assign to it.


    Thanks for the report, will look into fixing it for the next update.
     
  50. iddqd

    iddqd

    Joined:
    Apr 14, 2012
    Posts:
    458
    By the way, I put this in TC_Generate.cs at Line 1222 - seems to work so far:

    Code (CSharp):
    1. area2D.currentTCUnityTerrain.terrain.gameObject.GetComponent<MicroSplatTerrain>().tintMapOverride = area2D.currentTCUnityTerrain.texColormap;
     
unityunity