Search Unity

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

Assets [WIP][Sept 16th] Terrafirma - An Auxiliary Terrain Engine Replacement and Extraction Toolset

Discussion in 'Works In Progress - Archive' started by Murpenstien, Dec 31, 2016.

Thread Status:
Not open for further replies.
  1. Murpenstien

    Murpenstien

    Joined:
    Nov 12, 2013
    Posts:
    104
    Entire Post below has been rebuilt and updated.

    Update


    TerraFirma is moving to a new home.. Though i will still be heavily involved in it's development from here on in, me and the brilliant designer, Lennart Johansen have forged a bit of a partnership, and the system is now officially, an "Awesome Technologies" production! ;)


    What this essentially means is as a whole, TerraFirma will be far more complete product, with many great features planned between the both of us that should give developers a bigger better suite of tools to enable more possibilities than one coder such as much so could hope to do in a timely fashion.

    With amazing vegetation, terrain and in a sense, scene management, at your disposal.. Well the future is looking very bright from our perspectives. :)


    We are working on this now and will soon start another forum thread and website with updates as the development continues.


    Thank you everyone for your support, and many great updates to come with this as well. !



    *** A good majority of the images found through out this post at the time of writing are no longer visible. Moved image hosting my own domain.




    This project is re-imagining of the terrain system built in with Unity3D designed from the ground up with intention of being performant, lightweight and feature rich, while also delivering a feeling of familiarity in-terms of how both the Terrain objects interact and are interfaced.

    Below I've outlined a mostly complete feature list, as well as image sets comparing mesh quality and performance.

    Mesh Comparison
    Top Image Set

    Left - Unity
    Right - TerraFirma (All patches set to the highest level of detail)

    Bottom Image Set
    Top - TerraFirma

    Bottom - Unity


    -Can generate from Unity terrain data. (Convert unity terrain to a terrafirma terrain.)

    -Is completely compatible with the unity terrain vegetation system. (Utilized for now and later as a fall back, vegetation system preview below.)

    -Mesh topology in terms of geometry is identical to the unity terrain object it is generated from.

    -When using the built-in shaders that come with texture splatting appearance is maintained as well.

    Performance Comparison
    Below is comparison of both TerraFirma and Unity handling the terrain mesh.

    The first image is in-land where only a small portion of the terrain is exposed.
    The bottom image shows the same scene running with entire terrain object expose in the viewport.

    In both image sets :
    Top - TerraFirma

    Bottom - Unity3D

    Middle of the Terrain.


    Whole Terrain in Camera Perspective


    4K Heightmap Based Terrain

    This scenario is much the same as the above examples, the only difference is rather than handling a 1048 height map, the terrain here is utilizing a 4098 height map as it's data set.

    Top - TerraFirma
    Bottom - Unity



    -Like unity, TerraFirma supports terrains up to a maximum size of 4096 pixels.


    Texture Array Support (Handle all texture layers in one pass)


    -With texture array support every terrain texture layer can be drawn all in a single pass.

    Tessellation Support


    -Tessellation supported across all texture layers.

    Texture Array Performance Comparison
    Because all painted textures are handled in one pass, draw calls are reduced. This leads to an increase in

    Top-Unity
    Middle-TerraFirma (Non-Array Based)
    Last-TerraFirma (Array Base)


    Triplaner Projections

    Left-Triplaner Projections ON
    Right-Triplaner Projections OFF



    -Supports Triplaner Projection removing texture tile stretching at sharp/long feature changes.


    Batching And Frustrum Culling


    -Comes with a custom batching method for reducing mesh instances/draw calls.


    Height Based Culling as well as User Specified patch culling/exculsion.


    -Supports culling of patches below a certain height.
    -Supports culling of patches specified by the user through script. (Create your own culling rules!)


    Real-Time Shadow Support


    -Supports Real-Time Shadows across all built-in shaders.


    Multi-Terrain Support


    -Supports stitching and LOD transitions across multiple terrains.

    -Supports modifying neighboring terrain connections in real-time, enabling the user to build infinite terrain
    generation schemes, as well as systems to load/offload data from disc, the web, ect.


    LOD Transition Methods


    -Currently Supports two transition schemes.

    Left Error Metric Based
    -Detail is placed optimally, where the terrain changes occur the most.
    -Partition "pop-in" on transition is reduced.
    -Works in a similar fashion to unity's method.


    Right Radial Based
    -Detail is set higher to camera and progressive degrades away naively based on distance.
    -Partition pop-in is noticeable on large terrains.
    -Overall requires less draw calls and resources to handle the mesh.


    Integrated Editor
    Comes with a built in mesh editor designed to mimic as well as add to what is currently offered with the unity terrain editor.



    -Also support layer-able brushes. Interface visible below.

    Full Object Interface


    Future Features


    Vegetation Handling
    As of now Terrafirma uses the unity vegetation system as a fallback with it's vegetation system in the works.



    -Custom Vegetation system. (Uses unity's as of now and later as a fall back.)
    -Wind simulation supported.
    -Custom billboard generator build-in.
    -Built to mimic the Unity vegetation system.

    Things Left to Do :
    -Support for different grass types.
    -Better tree handling along with other optimizations.
    -Voxel Patch Support/Paint on any mesh.
    -Add in option to handle grass via a GPU.


    Voxel Support (Tunneling / Mesh Over-Hang support)


    -Marching cube meshing integration then later surfaces nets, first naive then with the option to use a qef solver and Hermite data ("Dual Contouring").
    -3D data is utilized only when the terrain data in any given partition calls for it.
    -Stitches seamlessly with terrain patches driven by a 2D data set.
    -Faster processing when editing volumetric data. (Flood filling, ect)

    Things Left to Do For Starters :
    -Material handling for volume patch edges.
    -Optimize/finish the volume patch manager.
    -Optimize the volume partition structure.
    -Integrate the voxel editor. (Video below)

    Things to do Later
    -Island removal. (floating chunks).
    -Surface nets/dual methods.




    Mesh Terrain Intersection Blending (Just needs to be interfaced)

    Top - Two Objects Blended with the Terrain
    Bottom - Two Objects Blending with each other and with the Terrain



    Things Left to Do :
    -Interfacing


    Full GPU Driven LOD Transitions (via tessellation for now compute shader handling in the works well)



    -All LOD transitions handled via the gpu.
    -Dramatic reduction in draw calls.

    Things Left to Do :
    -Interfacing

    Other Planned Features
    -Sphere mapping a cube with 6 terrains as the faces. (Planets)
    -Texture Coverage System for both meshes and the Terrain (procedural snow/leaf covering system handled via shader.)
    -Threading support.


     
    Last edited: Sep 16, 2017
  2. LennartJohansen

    LennartJohansen

    Joined:
    Dec 1, 2014
    Posts:
    2,394
    Looks great, I can not wait to try.
    Will you include an API like the unity terrain where you can sample height, normal's etc at points?
     
  3. zmaxz

    zmaxz

    Joined:
    Sep 26, 2012
    Posts:
    143
    Terrafirma may be great to integrate into MegaSplat .
    Looks really cool.
     
    jdraper3 likes this.
  4. chingwa

    chingwa

    Joined:
    Dec 4, 2009
    Posts:
    3,789
    Looks interesting. Will be watching this :)
     
  5. Murpenstien

    Murpenstien

    Joined:
    Nov 12, 2013
    Posts:
    104

    Yes, There will be an API with a sampleHeight (3 calculation methods) and getNormal option (4 calculation methods), i'll update the main post to go a little more in-depth on this later tonight. But there will be api for accessing materials, normals, heights, ect. Thanks you.
     
  6. Murpenstien

    Murpenstien

    Joined:
    Nov 12, 2013
    Posts:
    104
    Hmmm... Considering the assets popularity i'll be definitely purchasing MegaSplats and working towards that. Personally however I think integration would be rather trivial myself. :D Thanks for pointing this out to me however, I'll add an advanced option with parameters for the number of splats per layer/pass aloud when generating materials and inputs for giving the generator the proper tags, floats, ect for the shader.
     
    Last edited: Jan 3, 2017
  7. Murpenstien

    Murpenstien

    Joined:
    Nov 12, 2013
    Posts:
    104

    Thanks !
     
  8. Murpenstien

    Murpenstien

    Joined:
    Nov 12, 2013
    Posts:
    104
    Update January 4th and 7th:

    **Demo and Video previews planned for release sometime between 7th (Tonight) and the 9th. (90% ish complete)

    Technical Bits and Showcase (Updated January 4th)
    -Images showing the difference between rendering a scenes terrain using Unity's Terrain mesh vs Terrafirmas. Visual shows overall mesh memory usage and has a write up detailing what's going in terms of performance differences between the two systems. Terrain object featured consists of 9 unity Terrain objects, 2000 x 2000 units making up a landscape that is 6000 x 6000 units total. Terrafirma can currently represent the terrain using 55.4 mb's at 1700 fps vs Unity's mesh at roughly 250 fps.

    (Updated January 7th)
    -Mesh generator has received a few major extensions in it's functionality summarized below and detailed a bit more extensively across the intial post in this thread.

    Mesh generators settings have been accommodated to support :
    -Merging of Control Maps
    -Processing of level mesh generation across frames. (Works for all LOD options)
    -Support for specific meshing parameters for individual levels. (Works for LOD options)

    Link to updated mesh generation settings interface :

    http://i32.photobucket.com/albums/d29/Michael_Rochon/desktop_zpsidy1pisx.png

    **Image in initial post updated to reflect changes as well.

    The demo is almost ready as well, and will come in two parts; Both parts will essentially be the same. Currently I have a large terrain with a camera fixed along a path moving across the landscape. There's a toggle for switching between the Terrafirma Object and the Unity Terrain "Draw Base Mesh" Option as well as controls for LOD transition distances and a speed slider for controlling how fast the camera is moving with a rendering statistics window for contrasting the two systems performances.

    Part one is practical demo using the most efficient method in terms of speed and memory for mesh generation on the terrafirma object, and part two is more of stress test for comparing Terrafirma using the worst LOD option in terms of performance vs the Unity Terrain mesh with no settings changed. (Note; Terrafirma object was still faster by quite a bit when running the stress test) I will also be releasing videos of both demos in action as well showing the Terrafirma mesh running alongside the Unity3d Terrain Mesh.

    Also added a fourth LOD handling scheme which saves pre generated instances of Terrain Patches to disk instead of memory. Acts exactly like all memory saving schemes with the exception that it may be a lil slower when meshes switch levels but should run around the same overall in terms of speed (Slower is reallllly subjective especially when comparing memory/storage managed methods vs simply generating meshings on the fly ). No real trade of aside from that. Storing meshes in ram vs on disk will always result in the overall size of your game being bigger. It should however relieve your system of a lot of ram, having only the mesh instances needed being held in memory. (Basically uses the same memory as not storing any mesh information at all, LOD option 2). This all still remains to be interface at this moment however.

    Last note, new layer for prioritizing LODs based on complexity is under way. Currently finished functions for computation for assigning complexity scores to any given partition of terrain. Relies somewhat on some rudimentary concepts from differential calculus. This new additional layer will attempt to prioritize the best mesh quality based on patch complexity, distance, as well as weather or not a patch is currently in the view frustum. (Note; scores are precomputed so functions aren't ran at runtime)
     
    Last edited: Jan 7, 2017
    chingwa likes this.
  9. Murpenstien

    Murpenstien

    Joined:
    Nov 12, 2013
    Posts:
    104
    EDIT; Though Terrafirma is faster in both examples, the system has seem alot of optimizations since this has been posted. Feel free to view these, however be aware, the demo scene, at the top of my opening post of this thread is a more updated example of what my systems is now currently capable of and to be frank, puts my past effort seen below, to shame. :'( *whines*


    -Added a small series of videos comparing Terrafirma to Unity's Terrain under a new section labeled, "Performance Comparison Videos (Comparing only the Terrain Object Meshing Performance Between Systems in this Example) (Updated January 8th)". Located at the top of the initial post along with Terrain Object specifics and some information briefly detailing a few of the things going on in the scene used.

    Unity Terrain (Slowest) :


    Terrafirma Realtime Meshing Scheme (Second Slowest) :


    Terrafirma Storage Scheme (Fastest) :




    -Currently finishing up the demo scene. Should be live anytime over the next 48 hours.

    Stay tuned and have a great day!
     
    Last edited: Jan 13, 2017
  10. Murpenstien

    Murpenstien

    Joined:
    Nov 12, 2013
    Posts:
    104
    Update! The stitching algorithm has been optimized to use half the number of calculations the old method required. Memory Storage Schemes received a decent boost from this while the Transition Scheme received a negligible one.

    Also system can now offload meshing to the GPU.. :



    More on GPU vs the traditional method after I complete some more stress testing. So far looks extremely encouraging though !! :)

    Demo will posted tomorrow around this time, and the initial thread post will be updated to reflect these changes.

    Thank you.
     
  11. Frednaar

    Frednaar

    Joined:
    Apr 18, 2010
    Posts:
    153
    Very interesting asset, have you thought about talking with mapmagic dev to create a mesh output generator to bypass the unity terrain generation altogether ?

    This asset + mapmagic + megasplat could really become the terrain system unity has been waiting for...
     
  12. Murpenstien

    Murpenstien

    Joined:
    Nov 12, 2013
    Posts:
    104
    Not exactly sure if this will answer your question. The way my system was designed was with the initial intentions of being a replacement for the terrain Mesh produced when the "Draw" option is selected under "Base Terrain" on Unity3D Terrain Objects so as of now it act's as a light weight layer to free resources from Unity's Terrain Handling System and to also give users more control over.. well a lot of things.. haha. At some point though when I get around to vegetation handling I would like the system to stand alone, no longer dependent on the Unity Terrain asset it was converted from. At that point I may get in touch with a few developers as integration should be trivial if the asset was designed to work with Unity Terrain. Would also like to mention that when the system is enabled to run Unity Terrain free, aside from the case of infinite map generation; once an asset like gaia, or map magic generates a Terrain, terrafirma will have no problem converting it and running with out the need to fall back on the Engines default Terrain Object (Aside From two calculations, it already does. ;) ).

    Would also like to apologize for any seeming lack of punctuality in regards to getting back to you. I tend to get really caught up in my work, haha. Thanks for the interest in the project though. :) Maybe at some point in the future, it will be ready to replace the default solution, until I finish up a few more things however, I'll keep opinions in that regard to myself. ;D

    Major Updates

    -Rather then making two post as well, I figure I'll mention here the demo will be ready, hopefully tomorrow. Some set backs integrating gpu drawing methods. As of now though they are ready and support light weight culling options. (Frustum, Near Clip Plane).

    - Managed to find some major optimization areas however as well, depending on how long it takes to set up, I should be able to remove every "get" call in relation to Mesh data (vertices, triangles, ect) which is the only thing really causing garbage collection allocations. Removing them should speed things up tremendously in some case, in others, modestly.

    -Memory Schemes mainly use resources referencing mesh data, especially reading it. The actual stitching process barely dent's performance in contrast to simply reading the meshes vertices does.

    -I also re-implemented a lot of features in such a way that the system doesn't need as many objects to operate, and is able to manipulate the mesh data with out having to reference a meshfilter's sharedmesh directly. (When drawing on GPU is disabled).

    I would update the main thread post to relfect these changes but as of now I haven't slept for around 48 hours and feel it can wait till tonight. Thank you !
     
  13. Murpenstien

    Murpenstien

    Joined:
    Nov 12, 2013
    Posts:
    104
  14. Frednaar

    Frednaar

    Joined:
    Apr 18, 2010
    Posts:
    153
    Hi, I am quite familiar with MapMagic (and other terrain tools too, I have most of them) basically what I was asking is if your system could create a mesh terrain from a bitmap heightmap instead of using terraindata. I should also create a mesh collider but this is easy.

    If this is the case then it should be relatively easy to make a generator for Mapmagic to create mesh terrains directly. Also there are a lot of grass/tree placement tools on the asset store or as free community project that will place grass/tree/objects over a mesh.... or the same could be created in Mapmagic (or Terraincomposer, or Gaia)
     
  15. Murpenstien

    Murpenstien

    Joined:
    Nov 12, 2013
    Posts:
    104
    Sorry, that's what I'd figured you had meant, just wanted to make sure we were on the same page. Either tonight or sometime tomorrow, i'll add in functionality for the system to run completely independent of any default Unity Terrain objects (Terrain, TerrainData). With that in mind however, the only reason I opted to leave that portion till later on was because I have yet to set up any interface to actually manipulate said data from Terrafirma's side, though the api is there to do it (methods, datatypes, ect) , and aside from the built-in getHeight (3 options total) and getNormal (4 options total) options, the rest of the system is already independent of "TerrainData" Objects, and is actually referenced similarly, so you are correct in saying that it should be trivial to integrate support. And yes, of course, the option is actually already there. ;D You can enable Mesh Collider generation instead of using the Unity3D Terrain collider. And yah, they're would be no issue supplementing Unitys vegetation system with another, a few things would need to be considered though. Something that relies on the same height map along with an accompanying detail map as the ones used by Terrafirma would be ideal, rather than using the mesh it self for referring to heights and storing data in complex data structures.
     
  16. Frednaar

    Frednaar

    Joined:
    Apr 18, 2010
    Posts:
    153
    If you want I can test the mesh generation over heightmap and try integrating MapMagic maybe you could send me an alpha version .. I have some free time this weekend...
     
  17. Murpenstien

    Murpenstien

    Joined:
    Nov 12, 2013
    Posts:
    104
    I'm still a few week's away from a stable build ready to publish, and I figure it'll be a "last minute" thing getting the generate from height map portion of the editor up and running. Thanks for the interest however, I'll definitely keep you in mind if/when I need testers. I am planning on releasing a "lite" version before release, though. I'll leave in the methods that get height samples from .pngs Terrafirma, and add i'll add in function for injecting the height map .pngs so you can mess around with that. Can't promise thought any of that will be implemented visually however.
     
  18. Murpenstien

    Murpenstien

    Joined:
    Nov 12, 2013
    Posts:
    104
    Almost Finished Interfacing the extractors, exporters, converters and utilities. As these are still a work in progress and a set of "injectors" are in the works as well, to compliment them, I decided to post a preview for the time being to give an idea of what the system offers in terms of utilities. (Note** these are all intended to operate on default Unity Terrain Objects**)


    Other tools and Functions; 1 A - Control Extract (Not-Merged); 1 B Control Extract (Merged); 2 Height Extract; 3 Detail Extract; 4 Mesh Converter; 5 GameObjectSwitcher; 6 Tree to GameObject;

    Also managed to take even more of a load off of the rendering loop finalizing the merge splatmap function. (Yayy!!!) Along with a major boost in load times if the object is built in the editor first.

    Also posted two videos, a demonstration of 4 Unity Terrain Objects generated with MapMagic being converted and ran with Terrafirma in play mode along with an example video of the demo scene, available in the first post of this thread, along with brief descriptions. Links can be found below :

    Demo


    Conversion Example



     
  19. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    This looks fantastic and very promising. I am developing a couple of games for the Wii U and performance is always a concern. Is there any reason that this might not work on the Wii U? Any special requirements? I am super anxious to give this a try.
     
  20. jbooth

    jbooth

    Joined:
    Jan 6, 2014
    Posts:
    5,461
    Let me know if you want to do an integration with MegaSplat. I already work with Meshes and Unity Terrains, support converting from any standard Unity Terrain, and the quality of my texturing is second to none on the Asset Store. It also runs at a consistent pixel shader cost no matter how many textures you use, so it can outperform Unity's shaders on the low end.
     
    evilangel89, Teila, jdraper3 and 3 others like this.
  21. XaneFeather

    XaneFeather

    Joined:
    Sep 4, 2013
    Posts:
    97
    This has me excited. Terrafirma has already been on my radar but with an official collaboration with MegaSplat, it's Day 1 for me.
     
    Teila, Murpenstien and magique like this.
  22. Murpenstien

    Murpenstien

    Joined:
    Nov 12, 2013
    Posts:
    104
    As far as I know, I don't see why there would be any issue running the system on any platform (Including the Wii-U). And they're shouldn't be any special requirements, with the exception of using a shader that's not compatible with the system. Though I can't say for certain. I wan't to say the meshing portion 100% yes. I'm guessing material compatibility should be good as well if you can already run the built-in terrain shader solutions that come with Unity. Come release though, i'll get something to you that you can try yourself and if any issues do arise I'll try my best to work them out with you.
     
  23. Murpenstien

    Murpenstien

    Joined:
    Nov 12, 2013
    Posts:
    104
    I will definitely be sending a PM your way in the near future to discuss integration. Absolutely, amazing work by the way ! Some what off topic, but at some point I'd like to implement support for converting terrain to volumetric solutions and I noticed your system supports triplaner projection. Is using vertex color, rather than control maps something that's feasible? Not that it's important at this exact moment or anything, haha.
     
  24. jbooth

    jbooth

    Joined:
    Jan 6, 2014
    Posts:
    5,461
    The shader uses vertex data for meshes (which is fastest) and textures for Unity Terrains (which is slower, but required to make Unity Terrains work)
     
  25. antoripa

    antoripa

    Joined:
    Oct 19, 2015
    Posts:
    1,163
    Hi,
    excellent asset. What is your ETA to release that on Asset Store ?
    Cheers,
     
  26. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    Awesome. I look forward to it.
     
  27. Frednaar

    Frednaar

    Joined:
    Apr 18, 2010
    Posts:
    153
    And Sentieri for roads & rivers... come on guys join the forces !
     
    twda, Teila and antoripa like this.
  28. LennartJohansen

    LennartJohansen

    Joined:
    Dec 1, 2014
    Posts:
    2,394
    Murpenstien, do you have an email it is possible to reach you on?
     
  29. antoripa

    antoripa

    Joined:
    Oct 19, 2015
    Posts:
    1,163
    Yep .. agree ....;) .. I look forward to hearing from @Murpenstien
     
    Teila likes this.
  30. Murpenstien

    Murpenstien

    Joined:
    Nov 12, 2013
    Posts:
    104
    Ahh okay, that makes sense. If I'm following, this shouldn't be to much of a challenge to get working. Just been kinda swamped, with getting things up to a commercial standard in terms of stability and the interface. I'm basically done at this point in time though, wouldn't want to start something and have to ask you to make changes to compensate for last minute modifications made on my part, lol. Sometime tonight or over the weekend at the very least, I'll shoot you a PM/Email to discuss specifics some specifics however. I should also be more then ready to start building on to what I already have in order to support you shading solution sometime mid next week the latest if that works for you.

    Thanks!
     
    Last edited: Jan 21, 2017
  31. Murpenstien

    Murpenstien

    Joined:
    Nov 12, 2013
    Posts:
    104
    Yah sorry, you can get a hold of me here for now at : mrochon1@laurentian.ca.

    I'll typically check my email and this post once at the very least every 48 hours, though i try to get to it at-least once a day, so in-regards to any seeming lack of punctuality at times, sorry, lol.
     
  32. Murpenstien

    Murpenstien

    Joined:
    Nov 12, 2013
    Posts:
    104
    Thanks !

    I plan the submit it to Unity on the 28th of this month at the current moment. Though the exact date it will be available is Unity's call, lol.
     
  33. Murpenstien

    Murpenstien

    Joined:
    Nov 12, 2013
    Posts:
    104
    Also sorry, send me an email, or throw me your contact information to discuss Sentieri compatibility. I actually had the system running with easyroads 3d, if that's correct name, and had no issues there. I don't know much about the specifics of your system however. There's a good chance it could already be backwards compatible. :)
     
    antoripa likes this.
  34. Murpenstien

    Murpenstien

    Joined:
    Nov 12, 2013
    Posts:
    104
    Major Updates !! :)

    -Added in an option that now produces an exact copy of the original unity terrain. (Differences between objects when processing LODs still exist, but the highest detail produced will not differ in anyway. ) Example images posted below, updated the initial post as well with these changes.

    left Terrafirma, Right unity.


    -difference in triangles or vertex heights exists under the right setting, all plugins that adjust mesh topology should be completely compatible as of now, and the unity foliage/vegetation system is now, %100 supported. Also managed to get alot more speed out of the system experimenting with height retrieval methods, apparently I was doing to much work to get a value out of the height-field so stitching and mesh generation are now much faster. Was also able to remove garbage collections related to getting mesh data from Unity3D built-in 'Mesh' objects. Kinda of excited, wasn't sure I'd be able to push more speed out of the system but surprisingly was able to some huge returns in resource, Memory Handled methods barely hit above 1ms on my system even when moving the camera rapidly back and fourth over a distance of 4000 units.

    -Would also like to mention I'm still on schedule for January 28th submission, just been pounding away at the user interface. I added a debugger of sorts that now indicates and protects the systems when parameters are being changed, telling the user the object will and to be reset before changes take effect.



    Additional Note : Adding in Mirrored Editing Support
    -Editing terrains will soon be supported through either the Terrafirma Mesh, or The Unity Terrain objects being converted. Changes made to the Terrafirma mesh will have the option to be reflected on to the original terrain objects height and control maps. All foilage editing will be handled for the time being through Unity Terrain objects however. Preview to come sometime over the next couple of days. This all requires a new system that can edit both unity terrain, and terrafirma and reflect the changes onto the opposing systems. (Terrafirma Independance to come later, though a Terrafirma Object will also support converting back to a Unity Terrain object.)
     
    Last edited: Mar 28, 2017
    magique and LennartJohansen like this.
  35. LennartJohansen

    LennartJohansen

    Joined:
    Dec 1, 2014
    Posts:
    2,394
    Looking good
     
  36. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    Fantastic. Great news.
     
  37. gurayg

    gurayg

    Joined:
    Nov 28, 2013
    Posts:
    269
    Hi Murpenstien,
    This is looking wonderful. A lot of people will find this useful and looking at the quality of your work, seems like everyone will be pleased :) Wish you luck with the asset store.
    I was wondering a few things about Terrafirma:

    -In you plans for Second release you're mentioning "Volumetric Meshing" Can you give more details on this one?
    Is it something like voxel terrains (only cubes)? Can it be used to generate terrain meshes from arbitrary noises?

    -Can you give more information (or future plans) for you API? will it be possible to use most of the functionality at runtime?
    or some will be always editor only? I'd like to generate terrains and convert them to meshes (with LODs) at runtime.

    -Any thoughts about the pricing yet?

    Thanks
     
  38. Murpenstien

    Murpenstien

    Joined:
    Nov 12, 2013
    Posts:
    104
    Thanks ! :)

    As for voxel rendering, I'm planing on making an editor that meshes from scaler fields (Marching Cubes/Surface Nets). In regards to Terrain Handling, I think a solution that supports overhangs, caves, floating islands, ect, shouldn't be to much to ask in this day and age. I am aware of other solutions that offer this, but conversion from Unity Terrain will be supported and back when I was looking into to purchasing a pre-built asset to handle this type of meshing, I couldn't to really find a solution for volumetric data handling that was precise/sensitive enough for practical editing. (Though this may be different now)



    Note it's rather primitive, no normals or textures, just kinda want to give an example of how my mesh editing will work. I'm ultimately aiming for a system that feels similar to z-brush or other clay modelers, though.

    All the functions will be available, in the editor and at run time. You can actually tell the system to generate it's mesh at run time already, and building and setting up terrain handlers is also possible, though they wont be save by default when you exit the player. Closer to end of this week, i'll release a video detailing conversion a bit more. It can be a tad bit slow when converting multiple large terrains into one object, but for single terrains, it should be more than fast enough to handle run-time conversions.
     
    magique likes this.
  39. Murpenstien

    Murpenstien

    Joined:
    Nov 12, 2013
    Posts:
    104
    Editing support is now in the works and mimics the display and functionality found on a Unity Terrain Object.



    Support's Multiple Terrain Editing even when A Terrafirma Mesh isn't present, or conversion hasn't taken place. Height Map editing fully implemented, splats and vegetation are a work in progress. I'll release a video sometime soon.
     
    Last edited: Jan 24, 2017
    antoripa likes this.
  40. one_one

    one_one

    Joined:
    May 20, 2013
    Posts:
    621
    Will there be an API for run-time changes to the terrain? And are there any plans for blending other objects with the terrain?
     
  41. Murpenstien

    Murpenstien

    Joined:
    Nov 12, 2013
    Posts:
    104
    Yah there will be functions available for you to make changes to the Terrain at run time. As of right now my editor loops a little wonky, updating meshes at the current moment is actually much faster when it's not running from the editor, though it's more than fast enough on the editor side id like to add, small preview below. ;)

    Also, not at the current moment, but I've read up on how I could i'd implement something like that awhile ago working on something else. It's definitely something I'll consider when I'm not so swamped with other things.

    Should mention though that I now I have a configuration option that sets the system up to create an exact duplicate of the mesh Unity's terrain engine produces. The only shader solution that's not completely implemented thus far is standard. So in a lot of cases, editor extensions in 80-90 percent of cases should be compatible. Meaning if you have a scene set up with shaders that are already capable of this and your shader is compatible with my system, there should be theoretically no issue using a third party option for the time being. There's a lot of depth to configuration so definitely have a look at the manual when I make that available.

    Side note; Figure rather than making two post, I'd post this here :



    Just a small visual preview of the terrain editing portion of the system. Editing height maps is done, still need to finish splats and vegetation.

    -It can be used on unity terrains with out the Terrafirma meshing portion enabled and supports editing across all terrain objects currently selected by a Terrafirma terrain handler.
    -Editing done to Unity Terrain mirrors it changes onto Terrafirma meshes and vice verse.

    -Might add in options for some basic noise functions to paint heights and splats with as well as support for layering brushes and textures as well as the influence that each layer has on the tool when painting.

    If there's anything anyone would like from a terrain handling solution that not's available with the default solution, suggestions also are very welcome. :)

    Should also mention they're maybe a slight delay in order to make sure the editing tools are finished and stable before release. Most things are pretty much wrapped up and ready for the initial release however.

    **Update - Mangaed to fix my loop on the editor side. Everytime the terrain handler was selected it was stacking "EditorApplication.update += update;" calls.
     
    Last edited: Jan 26, 2017
    magique and antoripa like this.
  42. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    Have you determined what the pricing will be once you submit?
     
  43. Murpenstien

    Murpenstien

    Joined:
    Nov 12, 2013
    Posts:
    104
    As of right now, I'm aiming for the entry price of around $45 for the initial release. This price will be subject to change in the future however and may go up to between, $55 to $65 depending on a number of factors after assessing a few things.

    UPDATE

    Recently threw these together. I consider them the first 'Official' previews of the system. The first one is actually subtitled and breaks down general system usage pretty well aside from the mesh generator options. Ill be releasing another video later on to cover all that good stuff.

    Preview #1 - Converting And Editing Your Terrain



    Preview #1 Continued - Edited Terrain Performance




    Now that things are stable and the editor is as complete as it's going to get till after release, I started work on the LOD layer i had mentioned before. Just to give an idea of how it works, it simply looks at the local mins/maxs of both axis to make two complexity scores. With these the system will decide weather or not it should raise a level to better match the contour of the terrain or if it can even be bumped down to lower a level.
     
    one_one likes this.
  44. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    @Murpenstien How close are you to being able to get a test version I can try on the Wii U?
     
  45. Murpenstien

    Murpenstien

    Joined:
    Nov 12, 2013
    Posts:
    104
    Sent you a PM.
     
  46. Murpenstien

    Murpenstien

    Joined:
    Nov 12, 2013
    Posts:
    104
    Also added in a simple tree handling shell that'll take over tree-handling when the game is running. (Edit with unity tools, have a tree handler attached to any terrain unity/terrafirma and it'll take over.) Didn't really plan to start this but something really needed to be done about the resources being hogged using unity vegetation and details. The grass isn't bad, so i'll leave that for now, but the trees were making me sad.



    Still need to improve some things, this is more to show that the lag present when moving dramatic distance's across unity terrains is non existent when handling trees and terrain meshes Terrafirma side.

    TreeHandler will also have api for removing and adding trees run time. Could be useful for survival genre.

    Still need to finish the billboard generator, the cross fade shader is complete though and I want to do a few minor things so the system is updating the trees less naively.

    Also want to note none of this will put me behind as Im not putting much effort into anything else besides cleaning up and packaging everything that I have now. Just did this out of boredom. Anyways hope the results are as encouraging to everyone as they have been for me. Thank you.
     
    Last edited: Jan 29, 2017
    Mark_01 and jdraper3 like this.
  47. Arkensis

    Arkensis

    Joined:
    Jan 27, 2013
    Posts:
    13
    Would this LOD system work properly with multiple cameras? I'm doing split screen on Xbox One and improving terrain performance is very important.
     
  48. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    Will this work for any trees, including SpeedTree?
     
  49. Teila

    Teila

    Joined:
    Jan 13, 2013
    Posts:
    6,932
    Another fabulous looking terrain option! I have been considering dumping the Unity terrain lately and this looks really good.
     
    Alverik and Murpenstien like this.
  50. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    Thanks for the updated submission date.
     
Thread Status:
Not open for further replies.