Search Unity

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
    Finished up the normal blending. In the mesh blending set-up. Im going to add back in the texture normal mapping and such a little later. Figure I should finish up the LOD methods tonight, but the hard part in regards to a terrain blending shader are done with. Was a lot easier then I was i expecting though. Mind you achieving this between any two arbitrary meshes would be another story.



    Much better now. I aligned the tiling by hand so there is a micro mis-alignment and I need to fall back to pre-computed normal's for the terrain mesh (Micro normal differences in places. Precomputed normal's tend to be more accurate, as lower lods don't have enough points to make an accurate enough normal representation.), but aside from that, everything is done in terms of what's needed to pull this off, the rest is trivial.

    Anyways Im going to finish up the last LOD method, safe to say the system now supports mesh blending however; There'll be an interface for setting up objects and dispensing them. Essentially add objects like you would trees/details. Define the settings on a per object bases and click generate when selecting object from the tray with.

    I'll detail the whole thing when that's ready. But should be relatively efficient.
     
    Teila and Whippets like this.
  2. Whippets

    Whippets

    Joined:
    Feb 28, 2013
    Posts:
    1,775
    Looking good. It's something that only needs to happen close to the camera. Further than 50m it wouldn't be noticeable at all.
     
  3. Murpenstien

    Murpenstien

    Joined:
    Nov 12, 2013
    Posts:
    104
    Thanks, actually finished up the normal issue, so you can get as close as you'd like and the seam shouldn't be noticable. :) As i mentioned you'll need to use baked in normal's but other then that it works as expected. Also supports blending with other objects to some extent as well.

    Minor Update In regards to that. Also finished up the LOD methods so everything is done. Going to finish up the documents and go through the code, but everything's finally ready plus some.

    Anyways heres the blending effect with proper lighting before normal mapping, metallic, ect, and multiple splat support. (I'll add the rest in later.)


    Blend Close Up


    Blend Backed Up


    Mesh Blending with a Mesh, Blended with the Terrain


    I have it set up as of now so each object will only require a single pass as well. When blending two objects (Not with the terrain.) Intersections will need to be defined by hand. I'll set up a vertex painter for that. I also plan to get this working with vegetation. Seems like the possibilities are endless though. Anyways as mentioned I'm basically done as far as feature development goes till after release.

    I figure a week or two and the docs will be done and the first revision will be submitted for review. The hard part is now over... :')
     
    tapawafo, one_one, magique and 2 others like this.
  4. jc_lvngstn

    jc_lvngstn

    Joined:
    Jul 19, 2006
    Posts:
    1,508
    Beautiful!
     
    Whippets likes this.
  5. Whippets

    Whippets

    Joined:
    Feb 28, 2013
    Posts:
    1,775
    Tell us more about the splats it generates, and how/where it generates them. Can we paint this blending, or is it fixed in some way?

    Lots of questions XD
     
  6. Murpenstien

    Murpenstien

    Joined:
    Nov 12, 2013
    Posts:
    104
    Well, for starters when blending with the terrain, you can use intersection tests and adjust the blend threshold. Higher values envelope more of the mesh with the blending effect, while lower ones blend close to the terrain/object intersection.

    Using this you're object will blend no matter where there placed on the terrain automatically in real time.

    You'll be able to paint as well and optionally layer the results with the intersection test if specified but instancing won't work as you'll need a mesh instances with unique vertex colors to store the painting information.

    The blending is tied to the world normal of the height map. So you won't have infinite freedom in terms of blending two meshes, where one isn't the terrain. And the intersection between two meshes will initially need to be painted though it wouldn't be hard to set up an automatic intersection test later for finding the blend regions in those cases.

    I'm going to start showing off everything soon. Just wrapping up. So bare with me lol.

    I'm also going to do a proper update tomorrow, the quad tree systems are beyond fast. In terms of processing time they dwarf the already decently speedy methods I had initially set up. So definitely excited to talk about that.

    Also added in baked SSAO option for tessellation, an Optional Multi-UV sampling on a per splat/texture basis. Finished majority of the API as well, updated the mesh instancing system, there's a lot more. Essentially this came together way better then I initially conceived it could. As much fun as it has been rendering height maps for the past 8 months, Im excited to dive into voxels. So today will be the last feature related update till release.. I hope, lol. Though i may add in threading support as the portion that evaluates the map is completely thread safe at this point.

    As mentioned though, the new quad tree transition methods work phenomenally well. Really can't wait to show off the processing time differences in terms of handling mesh updates, lol. Essentially though in-terms of meshing the system now includes a method the works on the same principle unity uses to produce terrain, just much faster. ;)
     
    Last edited: May 26, 2017
    magique and Hikiko66 like this.
  7. Murpenstien

    Murpenstien

    Joined:
    Nov 12, 2013
    Posts:
    104
    Update

    The entire core is now finished. There is now a total of at least 7 stand alone methods for LOD transition handling methods that should cover majority if not all terrain related mesh handling scenarios. I'm going to start release copies asap to testers.

    Personally wanted to ensure everything was finished up and the LOD schemes had some serious holes I needed to get to. I'm going to ensure there's no lingering bugs over the next couple days, but I'll be releasing test copies as soon as I'm confident I haven't over looked anything.

    So in terms of cpu methods we now have three settings.

    Quad Tree Based Transitions

    This method was a complete rebuild of the same system used to handle LOD transitions with unity terrains.

    The great thing about this method is it takes no time at all to handle transition processing. It is extremely fast never reaching more then a 1 ms on this map. In fact transition times seem to be around a static 0.3 when moving the camera.

    Due to how the tree breaks seems to lead to better batching the way I have things set up, averaging an area so to speak rather then checking the geometric variation on a per patch basis, like we are doing in the example below.

    The main negative in my opinion is the limitation on the LOD we can use over an area. The quad tree essentially supports two levels per leaf/depth level of the tree. Essentially an area near another rendered at the highest level could hypothetically be represented with a low level mesh but since the tree breaks based on the best LOD to use and we have only two levels we check per leaf, we instead end up wasting a little bit of geometry. (Level of detail increase as the tree leaf quadrants get smaller) The trade off however is the mesh is more batch-able overall as the transitions are more uniform which will be apparent when glimpsing the example below.

    Non-Quad Tree Based


    This method is custom method, which works roughly the same as the method above with exception that it checks on a per patch basis rather then over the entire leaf area of the quad tree.

    Overall all it leads less geometry and overall better transitions. It suffers however in not being as batch-able as the quad tree methods. However the distance tree is optimization ive mentioned before ive engineered to compensate for this.

    Non-Quad Tree Optimized (Quad Tree Hybrid at distance.)


    This method is the non quad tree based transition system with the distance tree enabled. What the distance tree does, it allows the system to transition into a quad tree transition scheme from a per-patch transition scheme enabling us to get similar performance in contrast to the quad tree only method in terms of patching. Over all though these two last schemes take a little more cpu, but are overall still faster then a standard unity terrain when set up right.

    I'll preview the geomorph methods more this week as mentioned before there layer-able with the cpu methods are can be ran independently.

    In-terms of the interface there's a few more things I plan to add in such as the mesh blend interface, the baked ssao texture slot, the coverage system as the apis done (Preview that soon) and maybe a couple of other things but as of now here's a brief look. There's a lot of new inclusions. Small things mostly.


    The engine will now respond to any change made to the system at anytime, reacting to change made through the interface instantaneously. I had it set up so settings when changed needed to be done in bulk restarting the system but as of now it adapts to changes in real time as it should. I'm in the midst of making a video, it may be a week as there's alooot to cover interms of a system preview.

    LOD systems can also be switched on the fly i should mention as well. So we can use a scheme that favors visual quality of the mesh when terrains are close and flip the scheme for terrains in the distance that demand less detail. I was thorough with the API in terms of the what I set up for anyone using the engine, so sky is basically the limit in terms of how and when you choose to use what I make available to you.

    I personally strive to make this system feel as familiar as possible in contrast to using a unity terrain, so any work flow you're already use to use unity terrains should be possible with the terrain object the system comes with plus some.

    Tomorrow Im going to make to docs available and update them live nightly so hopefully that will reveal whats there with explanations or it should be shortly updated with them up until release.

    Also sorry for any grammer or spelling errors, i personally need sleep at the moment.
     
    Acissathar, Teila, antoripa and 5 others like this.
  8. Flavelius

    Flavelius

    Joined:
    Jul 8, 2012
    Posts:
    945
    I opened the demo and using the vegetation option, like in your video, it skips or kind of micro-freezes every 1-2 seconds ca., as if it needs to load something while blocking. Without that option toggled, it runs very smooth.

    Impressive system btw. I'm super interested in the voxel sculpting part
     
    Last edited: May 31, 2017
  9. Murpenstien

    Murpenstien

    Joined:
    Nov 12, 2013
    Posts:
    104
    First off i apologize, the vegetation system in the video is a prototype ill be adding in later. In the demo, the vegetation system is the one built in to unity's terrain engine. I made my system compatible with it as a fall back for now. Essentially the initial release will be the mesh handler. I plan to treat it as foundation moving full tilt into voxels as the first major update. I figure after I wrap up voxels ill get back to work on vegetation so i wont have t rework it later to support "volumetric" meshes. Essentially i'm sidelining it for now lol, so terrafirma doesn't become vaporware. Just figured id show off in the demo i had set up that the two systems (mine and unitys terrain) are both compatible.

    I'll break down what i have in mind for voxels soon as well (Really excited for that). I figure ill be releasing the first bit of the system in a week-ish so once that's submitted, ill try and lay out the benefits of the voxel solution i've come up with.

    Anyways tiny update

    In that regard, im going to take tomorrow to correspond with basically everyone I haven't gotten around to, just wanted to apologize, been on a wicked keyboard binge for the past couple of weeks getting this done. There were a few major holes mainly in my geometric deviation calculation set-up that was holding me back from .. well a lot of things, thats all good now though. Ill get dev copies out asap anyways, just finishing up some optimizations related to quad trees and the stupid manual.. (Not on the best terms with that guy.. Looking look like a 100 pages + behemoth before shader and system api .. -_-)
     
    nxrighthere, SyGem, magique and 2 others like this.
  10. Murpenstien

    Murpenstien

    Joined:
    Nov 12, 2013
    Posts:
    104
    Kinda dropped the ball getting to some people. Anyways just working through the docs mostly now, been playing around and thought I'd share my current results in terms of performance;

    First of anyways, test scenario specs were a single 4k height map being projected across a region of 40 000 x 40 000 units. Overall I'm managing on average, 4 times the performance. :)

    TerraFirma Top Unity Bottom


    TerraFirma Top Unity Bottom



    Honestly couldn't be happier, and it looks like I can push this further as well with a little tlc, though ill save the majority of the optimizations i have in mind for a release patch as Im happy enough with where the systems is as of now to let free into the wild.

    Anyways, seems like I'll actually be able to sit down today. Should be working mainly on the documents for the next week hammering out bugs as I go. Essentially though, the first release is close and I'm weeping with relief. (It's been a long road getting here to say the least.)

    Figure anyways now that I'm not so stressed and the cores complete, ill start corresponding and getting "priority/dev" builds out slowly.

    Also working on a trailer as well, there's a lot of ground to cover so that may take some time as well, but ill show the new system off in action soon.
     
    Whippets, tapawafo, SyGem and 3 others like this.
  11. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    @Murpenstien I'm looking forward to giving this a try. One thing. I know you are talking about doing Voxels next, but is there any chance you might be able to see about MegaSplat integration before all that?
     
  12. Frednaar

    Frednaar

    Joined:
    Apr 18, 2010
    Posts:
    153
    Agree with Magique, you solution as is covers 99% of terrain requirements, I know voxels are sexy but integration with megasplat, and terrain generation tools such as map magic or terraincomposer would definitely make your asset much more interesting to buy
     
    one_one and magique like this.
  13. lawsochi

    lawsochi

    Joined:
    Oct 24, 2016
    Posts:
    107
    I read this branch now for the first time ... what can I say ... nothing, just no words ...
    just that you are doing magic!
    It gives me hope that we will still be able to create games with the open world, despite the efforts of the unity programmers, who for the fourth year promise to (officially) rework the terrain system))
    Your work is gorgeous, I hope it gave you much pleasure and will allow , finally Unity is called an AAA product.
    Just, please do something with the grass and trees (including trees and grass Speedtree, a lot of beautiful assets, but so slowly).
    In any case, thank you and a successful release.
     
  14. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    Keep your eyes open for AWESOME vegetation. It should be the missing piece you are looking for.

    http://www.awesometech.no/
     
  15. lawsochi

    lawsochi

    Joined:
    Oct 24, 2016
    Posts:
    107
    Thanks for the link, very interesting, but I can not find them on the asset store, they do not have a buy button on their site ;-) and I do not see the forum either ... or is it also under development?
     
  16. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    Yes, it's getting close to beta. That's why I said keep your eyes open for it. It isn't available yet.
     
  17. lawsochi

    lawsochi

    Joined:
    Oct 24, 2016
    Posts:
    107
    I see. Thanks I prefer complex solutions (like UFPS, for example), fewer errors, but I'm just learning to C#, and this is just a hobby, so it's not always possible to make two decisions.
    All the more, the author has a desire to develop such a system, and if she will support Speedtree, everyone will be extremely pleased
    generally idiot dream;) this is Terrafirma + Speedtree+ World Streamer+ AQUAS Water+ EasyRoads3D + UniStorm + UFPS + Inventory pro + Dialogue System + ICE Creature Control + Easy Save+Candela SSRR... and the button to integrate all, and everything, Fallout 4 is resting :)
    Sorry for offtop.
     
    Last edited: Jun 8, 2017
  18. Elecman

    Elecman

    Joined:
    May 5, 2011
    Posts:
    1,372
    Can your terrain system handle world size terrain streaming a-la Google Earth or Outerra? Does it also handle a coordinate reset to get around floating point limitations when moving away from the world center?
     
  19. neoshaman

    neoshaman

    Joined:
    Feb 11, 2011
    Posts:
    6,493
    Simple questions: can you rotate the terrain in all axis? will it be compatible for the creation of planet terrain?
     
  20. crocvr

    crocvr

    Joined:
    Oct 7, 2015
    Posts:
    44
    Hi, everyone!

    What about beta or release date? Any news?
     
    sylon, coverpage, Killersan and 3 others like this.
  21. Murpenstien

    Murpenstien

    Joined:
    Nov 12, 2013
    Posts:
    104
    For you yes. ;) lol; I'll make sure Jason gets a copy asap, I honestly wouldn't even mind taking on integration myself, just need a copy of the asset first to play with. Considering megasplats is what all the cool kids are talking about its a priority above voxels. Well releasing voxels anways, lol. Also noticed you inboxed me, should get ahold of me on facebook, should be easier, wanted to ask you a few questions; https://www.facebook.com/dr.murps

    If you'd rather contact me through email try mrochon1@outlook.com; That goes for everyone btw, my school reset my email so the address i provided before is totally different lol... -_-'

    Yah I agree, the voxel stuff is on the back burner to post release. I should be done in a couple days enough to start handing out copies for testing/integration purposes. Essentially that's the main goal, so expect a build real soon. ;P

    In-regards to the first part no it could be set up similar to how a unity terrain would handle this though. And in-regards to position reset, this can be done at anytime via script simply by changing the terrains transform. The terrain objects i designed are intended to act as much as unity terrain would out so it's essentially a terrain mesh renderer component and can be treated just as a unity terrain would.

    Essentially though in the area of your code where you would tell the camera/player and all the other objects in your scene to reset positions, you would just tell the terrain objects as well to in the exact same way.

    I may compensate for this later, world map data streaming would be interesting but as of now the focus is to aim for a lighter replacement interns of performance when compared with unity terrain with generally the same functionality at first.


    At the moment honestly no, I intended to remove the rotation influence in the shader awhile ago but it's slipped my mind till actually now. I'll have that in before release as it's some trivial stuff. (A few line in the vertex cginc). Stitching between the terrains would be possible out of the box as well. Ill see how much work it would be to map the "Box" to a sphere via the vertex function in the shader code before displacing the points further via the height map. Sounds super easy anyways. :)


    Very soon, I have less then a weeks worth of work to complete and I'm shipping it out.


    Hey everyone, essentially finished just gutting the Editor and finishing up some multi terrain stuff.

    The documents are finished I just have a few things to attend to (bugs) and a final look over of everything before submission.

    What I've been doing this past week and a half has been gutting the entire system, essentially putting together the final draft. Now the entire system with exception of multi terrain handling should act like a unity terrain would.

    First off I took a few options and streamlined them into the background to make things more simplistic. Everything is still there for the most part though with the exception of the optimization options. The non quad tree methods along with the distance tree have been removed in favor pushing the system with the fastest method supported rather then having to subdivide my attention between two schemes, one that works fantastic, and the other that needs more work.

    Essentially though no ones losing much if anything. The other stuff was experimental, so essentially I just kept the parts that worked great and ditched stuff that could have worked better for a rainy day.

    I also broke up the terrainData object for my system up into a few more manageable objects which took a bit of time.

    I also have the system culling with unity again (Frustum culling) this ensures shadows are fully supported. I still have the my frustum settings, which should be used only when the terrain isn't casting shadows. Receiving is fine though.

    So first off heres a big one, since finished majority of the multi-terrain stuff. Have a few minor things to do tomorrow in-regards to that.

    There's some difference's in the way the two systems meshes handle ambient light below, but rather then sitting around setting up light for the sake of a proof of concept figure id post the result here as is.

    Three Terrains Stitched (Unity Top TerraFirma Middle Terrain Layout Bottom)


    Haven't really showed off shadows either.. TerraFirma Top Unity Bottom

    They work, lol.

    Also getting great boosts with texture arrays now.

    Unity Terrain Top, TerraFirma middle, TerraFirma Texture Arrays Bottom


    So the core is really complete, I can't really put a specific date in terms of when I can have what I need to done. Trying to estimate times is getting me into trouble.

    Just know however, i enjoy stressing to get this done as i'm sure some of you enjoy waiting lol. Not much longer anyways now is this best i can offer interns of release. I have three things to tend which is finishing the multi terrain stuff. Ended up redoing it for a much better scheme, it essentially treats all terrains as one while being memory conscious.

    Anyways, going to try my best to get to everyone now who's in-boxed me. Also should have presents soon for developers/testers. Honestly just don't want to hand you guys a piece of crap. I've had a list of bugs ive been going through for awhile now, so figure it may be counter productive to have anyone testing a unstable version. Anyways as mentioned did a full final draft re-write thing and things are a lot better across the board, 10000 line plus to a more reasonable 5000 ish. The editor interface was a mess...

    Anyways back to work i just need to tend to the editor and and finish neighbor terrain stuff and im getting test builds out. I need to do a few things with the shader stuff mainly organize and add the legacy bit (All supported, just needs to be wipped up into surface shader.)

    Should mention I tried my best to keep my shader stuff the same as Unity's so every shader in the system is a surface shader to serve as a template, written similar to the builtin shaders that come standard with a unity terrain. You can use the functions inside vert/frag shaders as well though, the brush projector does exactly that already.

    Also would like to mention I love all you guys. ;) Thank you for your patience, continued support, and in regards to some of you; For not killing me for being unintentional tease. ;D
     
    Last edited: Jun 17, 2017
  22. Murpenstien

    Murpenstien

    Joined:
    Nov 12, 2013
    Posts:
    104
    Double Post By Mistake. Have Crappy Internet.. Sorry :(
     
  23. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    I don't use Facebook so that's a no go. I'll drop you an e-mail.
     
  24. DonLoquacious

    DonLoquacious

    Joined:
    Feb 24, 2013
    Posts:
    1,667
    I'm also up for it if you need additional testers- I own Gaia, AQUAS, and Megasplat (among other things) and I'll be testing A.W.E.S.O.M.E. Vegetation as well when the beta for that starts (soon, I'm told) and possibly Sentieri.
     
    Last edited: Jun 17, 2017
    antoripa likes this.
  25. neoshaman

    neoshaman

    Joined:
    Feb 11, 2011
    Posts:
    6,493
    This is a bit ambiguous for me to parse >_<, but I want planet size planet, and for all intents and purpose, I just need a regular terrain system (lod around a position, no quadtree complication, a proxy planet and terrain appearing at some altitude) at an angle, the only tricky thing (for stitching) is the corner case, in which you have 7 neighbor instead of 8, which mean some stretching once projected as sphere (trivial on a box, the harder part is to figure out a coordinate system that allow neighbor query). But this latter point use this algorithm to lessen the problem http://catlikecoding.com/unity/tutorials/cube-sphere/

    However good job!
     
  26. tapawafo

    tapawafo

    Joined:
    Jul 25, 2016
    Posts:
    170
    My apologies if this has been asked - I've been following this asset for a long time, but don't remember it coming up.

    Have you thought about distance-based uv-wrapping (tile size) implementation? (To solve unity's default jarring tiling on terrains)

    Or would I be better off using a second asset to accomplish this? Since, if I understand your asset, it requires your own terrain shader, correct?

    Thanks,
    Matt
     
  27. larsbertram1

    larsbertram1

    Joined:
    Oct 7, 2008
    Posts:
    6,900
    hi there,

    i think your texture setup does not really fit to pbs and 2017 :)

    textures.png

    smoothness is said to be the most important texture in pbs – so it should not be driven by a slider.
    a metallic slider also is not that much useful if the final output is just a single specular color (horribly tinted in case of grass e.g.) – which you could push directly instead.

    so in order to do proper pbs one would also need:
    - smoothness (grayscale)
    - metalness (grayscale)
    - occlusion (grayscale)

    you could pack these three channels simply into the height map.
    more useful i think would be to store smoothness either in the alpha channel of the diffuse map (both high res) or combine it with a dxt5 compressed normal which would make specular filtering easier (same texture, same size).
    the height map most likely will have less resolution – which should be fine for metallness and occlusion as well.

    although combining the heights of 4 layers into one rgba texture lets you sample the heights of all of them with just a single texture lookup (needs you to lock tiling).
     
    Last edited: Jun 25, 2017
  28. Murpenstien

    Murpenstien

    Joined:
    Nov 12, 2013
    Posts:
    104
    the more the merrier. :)

    Honestly,
    I've actually already checked out that post for a project i was working on a while ago, lol. :)

    I get the concept, haha. As of now multi-terrain support has kinda gotten me bogged down, I basically over thought the whole scenario and ended up basically wasting a lot of time. When I have more time though possibly closer to release, during testing phase I'll have a look. :) It's not hard or anything per say anyways to achieve, just requires more interfacing in the editor, for handling corner cases, etc.
    I would have to look more into, but at the moment no.

    The system does use a custom shader set. But for the most part it's intentionally built to mirror the unity built-in shader set as well as the splatmapcommon.cginc file in unity. I did add in supplementary methods for triplaner projections, textures arrays, as well as a few other things. But as mentioned the set up it mostly the same. I'll talk to you a bit more however later and I can most likely get something going, just need example images er something, lol. Mainly been focusing on getting the meshing portion good to go as of now but I'll send you a pm when I finish that.
    Yah, I noticed Unity packs/expects the smoothness to be in the alpha channel of the diffuse layer, if present. I had my system essentially interfaced the same, slider goes from 0-1 (a float field would help admit-ably, lol), only appearing if the diffuse texture had the alpha map present.

    Overall the default splatting system is identical to unity's (I used unity's as a template,lol) with the exception of the vertex method portion. I did this intentionally at first to make shader conversion easier when needed. So basically the shader utilizes a value from 0.0 to 1.0 to adjust a value mapped in the alpha channel of the texture to handle smoothness if present.

    As you mentioned though, when I moved to arrays and tessellation I intended to add individual fields for occlusion, metallic and smoothness for all splatting schemes. And as you said the plan was to pack occlusion, and metallic into the height map textures while keeping things the same as unity in terms of the smoothness map having that packed in the alpha channel. There's a little more to it but I'm sure you get the gist lol.

    I haven't really gotten to that though as it's going to probably take a good a afternoon and my focus has been on the mesher as of recently. When I get back to it though I'll have the interface adjusted to reflect the above changes.
     
  29. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    I have a future feature idea for Terrafirma. In some outdoor games the world is not completely open. For example, in a Tomb Raider game you often have narrow areas of travel followed by some open areas. In that kind of world there is a lot of unused terrain space that could be eliminated. So, with Terrafirma being able to mesh terrains into smaller chunks, it would be nice to have a feature where I could select entire chunks and just tell Terrafirma to delete them or ignore them completely. So they wouldn't load or be in any culling calculations at all. Does that sound possible?
     
  30. LennartJohansen

    LennartJohansen

    Joined:
    Dec 1, 2014
    Posts:
    2,394
    Maybe that could be done as a masking feature. Create a texture mask, or even a minimum value on the height map. Ignore all chunks/cells that is bellow the value. In addition to culling this could also speed up terrain under water as it is ignored etc.
     
    mons00n likes this.
  31. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    Not sure if that would cover all the use cases, but possibly.
     
  32. Murpenstien

    Murpenstien

    Joined:
    Nov 12, 2013
    Posts:
    104
    Should be possible already. The voxel system essentially culls chunks from the 2d terrain meshing scheme so it can inject volume patches seamlessly.

    There's no calculation per-se using the mask. Just a check, the height mask is effectively the culling mask as well. If values are set below 0. It will ignore patches when checking for updates. There's a lot to in terms of how things are processed, but culling is done before anything. From there the work is broken up to handle what's on screen ignoring what's out of view or specified by the user.

    Here's with the height mask at work.



    Should also mention all my images are messed up so in the forum, I'm updating the front page for now and sticking to my own domain for image hosting, lol. Should be done later.

    Edit*, here a better example I threw together for the first post of this thread tonight.
     
    Last edited: Jul 1, 2017
    Flavelius and magique like this.
  33. RobsonFMaciel

    RobsonFMaciel

    Joined:
    Jan 12, 2013
    Posts:
    187
    @Murpenstien Do you have a date for submission for review?
     
    blitzvb and Teila like this.
  34. Murpenstien

    Murpenstien

    Joined:
    Nov 12, 2013
    Posts:
    104
    At this point I'm not sure for certain. I'm just getting out the first set of test builds to a few Asset developers in a small closed testing group this week. Figure I'll be expanding that group out more to the public in a week or so. From there I'm going to finish up the documents and then, ill be submitting it. In terms of what's left at this point for the first build there isn't anything left aside from the odd urgent error that arises and a script cleaning.
     
    Whippets and RobsonFMaciel like this.
  35. Teila

    Teila

    Joined:
    Jan 13, 2013
    Posts:
    6,932
    Looking forward to trying this. Currently testing other terrain assets and I think this will compliment them well. :)
     
    MarkusGod likes this.
  36. magique

    magique

    Joined:
    May 2, 2014
    Posts:
    4,030
    @Murpenstien It looks like all your images posted in this thread are now just some Photobucket error saying "Please Update Your Account to Enable 3rd Party Hosting."
     
  37. HeadClot88

    HeadClot88

    Joined:
    Jul 3, 2012
    Posts:
    736
    Getting this as well.
     
  38. HeadClot88

    HeadClot88

    Joined:
    Jul 3, 2012
    Posts:
    736
    @Murpenstien - Got two feature requests for Terrafirma and a question.

    1. Would it be possible to batch export multi tile terrain as individual greyscale height maps?
    2. Would it be possible to get Gaia 2 integration with terrafirma?

    I am using unity as an tool to make my terrain for Unreal Engine 4. So having the ability to export terrain would be great and having Gaia 2 integration would be amazing :)

    Thank you for your time,

    Headclot
     
  39. Murpenstien

    Murpenstien

    Joined:
    Nov 12, 2013
    Posts:
    104
    Yah I posted I notice I think on the main page about that. Photo bucket fees essentially. Going to replace a good chunk of them this week or bite the bullet and give them $400, lmao.. Serves me right for using that archaic piece of crap..

    I'm getting test copies out now actually, first to a few other asset devs and a figure in a week or two I'll be sending out copies to a group size of 50 people. If I have you already on facebook, or we've talked in the case you and me, you're already on my list in that regard.

    1. Yes, I had that set up before and removed it with intentions of bring it back later. I'll write you the function to handle that.

    2. Lennart actually mentioned setting up a conference with Adam Gaias developer, and Jason Megasplats (Get alot of inquiries about that one as well so figure id mentioned one for others sake) developer and I think a few other people, post poned that due to some bull crap going in life. But im spending today tacking out some last minute things which I figure I'll be done in 40 min lol. And from there i'll be getting to them. So Id say yah at some point, lol it's looking like. :)
     
    Teila and HeadClot88 like this.
  40. Teila

    Teila

    Joined:
    Jan 13, 2013
    Posts:
    6,932
    Perfect. I am testing two other assets at the moment so a week or two is great. :) We talked via forum PM. If you need me on Facebook, I can do that too.
     
  41. Murpenstien

    Murpenstien

    Joined:
    Nov 12, 2013
    Posts:
    104
    Yes I remember, it was quite awhile ago and face book works fine!

    Would also like to announce testing phase starts today. I'm going to go through my emails/unity forum inbox and start distributing everything.

    Also finished up a few "new" things.

    Terrains now support all types of transforms. Kinda didnt realize Unity didn't realize unity didnt support rotations till i finished lol.



    In that regard though, while it may not be supported with Unity Terrains it does open new possibilities :


    The neighbor interface doesnt allow connections like this (6 terrains linked in a cube.) But it can be set up via code with a little work. I need to personally build another section to the shader before spher mapping is possible and I want multi-terrain editing support done before I even look at that..

    Basically rotations aren't officially support as a new collider will be need among a few other things, but the foundations there.

    Performance seems to be a lot better now to :


    TerraFirma Top Unity Bottom



    Now that everything is finalized and i'm using the best of the many schemes i've come up with over the month things are flying. Feels surreal.. this thing has really come a long way, first with cpu drawn chunks, next templates with data projected via the gpu, then batching to quad trees to a completely revised error metric calculator it's taken a lot to get here, with so much further to go, figure with testing everything will get the final push it needs as well in terms of the first stable build.

    Anyways now that testing phase has started I figure a submission should be close to the end of next month in-regards to that.
     
    blitzvb, mons00n, Mark_01 and 9 others like this.
  42. AlwaysBaroque

    AlwaysBaroque

    Joined:
    Dec 20, 2014
    Posts:
    33
    Hope your not teasing us, Again.:)
     
    Teila likes this.
  43. neoshaman

    neoshaman

    Joined:
    Feb 11, 2011
    Posts:
    6,493
    Holy batman! ROBIN that's great!
     
  44. awesomedata

    awesomedata

    Joined:
    Oct 8, 2014
    Posts:
    1,419
    I feel voxels are just as important as megasplats.

    The one thing keeping me from using Unity terrain is the lack of being able to easily create overhangs and caves for portions of the world and being forced to go to my modeling app to modify the basic structure of the ground for simple structures like these.

    Just my two cents.

    Great job though man. Glad to see voxels in the pipeline at least. I unfortunately won't be able to justify buying this yet for performance or prettiness alone -- I need to speed up making topography and seamless worlds more than anything else here. Don't get me wrong, there are some other killer features here. However, mesh editing is absolutely the most useful for an editor tool -- the texturing can always be done *after* the meshing in my workflow. But that's just my opinion. Looking great regardless man! :)
     
    Last edited: Jul 30, 2017
    Whippets and Flavelius like this.
  45. blitzvb

    blitzvb

    Joined:
    Mar 20, 2015
    Posts:
    284
    Still in beta?
     
  46. Murpenstien

    Murpenstien

    Joined:
    Nov 12, 2013
    Posts:
    104


    Lol this time no.. Hit a snag right out the gate with the first handful of testers think that's solved.. but ill be opening the test group up more and more as time goes on.
    Honestly I feel the same way, the voxel scheme im going for isn't something i've seen documented however. It actually prompted me to start a research paper, lol. So with that said, im going to dive in soon. Not sure if this will make it out the gate however in-terms of release, all depends on time.

    Its demanding enough to make a terrain meshing scheme properly, essentially want to make sure the system is ready for the inclusion of voxels before frankenstein'ing it in, lol. If the base meshing scheme runs like crap no point adding voxels in right? Well guess I could.. lol One thing at a time though, i only have a two hands. ;)

    I get what you're saying though, so def no offense taken. :) Figured it would be easier to cater to people looking for larger user bases. (Less resources used more potential platforms you can run on) Or looking for more resource to add more complexity to scenes. Really excited to start playing with voxels though. I could probably at the very least add support for converting and editing voxel patches. Not sure i would have time for voxel LODs, but it would be trivial to give you a modeler of sorts and something that switches 2d heightmap meshes with 3d dataset meshes, essentially the foundation for the LOD system.

    Yes, ill be open that testing group up a bit more shortly. Just prepping the next build, had a major hole to cover but think it's good now. :)

    Update

    Still developing the system. :) I've had a lot going with getting my titles of incorporation and few other things that come with starting a business. Also had a busy month with work.

    From the small testing phase I initiated it became apparent that fill rates were going to be an issue.

    As it stands now though here's the system running on a surface pro 3;



    Not the most impressive shot, but this is running untethered on integrated graghics essentially passively cooled. When i started a month ago this scene ran at 90 fps tops of a surface pro 3 so think we have that under control now.

    Should also mention while the Surface Pro is a nice little tablet, it's terrible for .. well anything that's not writing up docs or watching videos.

    I plan to open the test group a bit later. I no longer personally have the luxury of infinite free time to work on this so Im planning to take the remainder of this month to work with some of the more higher profile devs, making sure API is good and the design/placement of functons is sound.

    Meshing logic is complete however. Just working on the placement of functions and structuring.

    My PA will also be checking the forum daily as well as my inbox so, now that, that is no longer my responsibility. Feel free to contact me and she'll ensure I respond. ;) I have bad anxiety and get scared like a deer in the head lights sometimes answering msgs, so this should remedy that, lmao.....

    Few other things as well, I added in material blending;

    Added in support for choosing materials at a distance, (helps with fill rates). So base map is now optionally, as well as another material schemes you might need. (Tessellation up close, normal mapped diffuse from a far.)

    Also started looking at MegaSplats, figured id mention that since just about everyone I talk to says it's integration is vital. :) Also spoke with Jason about MicroSplat so there's that to.
     
    tapawafo and Alverik like this.
  47. awesomedata

    awesomedata

    Joined:
    Oct 8, 2014
    Posts:
    1,419
    That's perfectly fine by me. That alone would be an excellent start! Definitely would be a selling point too imo, since the only thing that mixes voxels and heightmaps is combining MapMagic and Voxeland (but for a pretty hefty price). If your asset is affordable, you could have a nice market niche right there. :)

    Regarding LOD, it should be trivial to decimate the inner triangles in the middle of a square voxel patch (outside the outer-edge loop) for auto-LODs while leaving the edge loop triangles to align with the nearby heightmap meshes in tact. Assuming the voxel data could simply be converted to a standard mesh if the user wishes (perhaps keep a voxel copy for editing later), the voxel aspect of terrain editing can be thought of as no different than a simple mesh-modeling tool since it's likely people like myself will rarely use voxels' malleable nature for runtime applications (there are other more mature tools out there designed specifically for this purpose), and if we did need the terrain to change at runtime, we'd just swap meshes out manually with a copy of the patches with our changes applied. Does something like this sound feasible?


    As far as fill-rate issues go, something like what Distingo does could be a useful solution. I think, MegaSplats does some similar magic by default to what Distingo does, but perhaps if you supported something similar natively, it could help with fill-rate performance too? After all, if you scale the texture closer to the camera, then shrink it as it gets further away, as Distingo seems to do, you have less repetitions, thus less texture-to-triangle work overall, and it just looks a lot nicer in general. No idea why Unity doesn't do this themselves by default. Oh well.

    Just some food for thought.
     
  48. Xype

    Xype

    Joined:
    Apr 10, 2017
    Posts:
    339
    I think unity likes to offer asset creators the opportunity to add the great tweaks and sell them.

    Other than that, a thought on voxels if you did decide to implement them, or two.... 1 maybe do it as a addon package due to the fact that smooth voxels is still kind of a niche market and I think increasing the price of your base package to include voxels would turn more people away, keeping them seperate or maybe also a bundle would give more precision use per cost for your customers while offering the entire array to those who wanted it. Just a thought.

    Now on to the goodies, I have watched, bought, played with a ton of voxel systems, engines, whatever over the years. They almost always use marching cube, or some try to get fancy and use marching tetras, which heh.... performance... but there is a super simple, fast method in the isosurface family which looks almost as good as marching cubes for way less performance overhead. I would love to see someone do a full functioning voxel engine using surfacenet

    Here is a nice paper on the entire subject of comparing methods for smoothing. https://0fps.net/2012/07/12/smooth-voxel-terrain-part-2/

    As you can see in the paper surfacenets look almost as good as marching cubes, with half sometimes a third of the vertices and faces of marching cubes, and the processes run with half the computational resources. The only downside, and the reason I got stuck trying to fiddle with it myself, is surface net can produce non manifold vertices. Which that would not matter for most terrains but if you have runtime digging and someone went just the right way you would get some strange graphic artifacts if not errors/crashes. I am sure there is a way to handle/check/solution that but not in my skillset. At any rate its a great read.

    One more note. I have been digging and researching for the past few hours different terrain systems, shaders, extend extend extend mostly basing from the use of map magic due to a friend is hung in his project. 5.6 added the ability to runtime bake navmesh but nobody is really implementing it, maybe it is harder than I think. I would like to see a proceedural generation flow, where somewhere along the line the navmesh gets a wrapper thrown on the endpoint of each proceedural chunk call and bakes it for navagents to work on.
     
    Last edited: Aug 15, 2017
  49. LennartJohansen

    LennartJohansen

    Joined:
    Dec 1, 2014
    Posts:
    2,394
    I do not think this will be hard to adapt to Terrafirma. If Michael adds event when new chuncks are visible and when others go invisible you could make a component that updates the navmesh with unitys new run-time API
     
    tapawafo likes this.
  50. awesomedata

    awesomedata

    Joined:
    Oct 8, 2014
    Posts:
    1,419
    One can do that without the Asset Store.

    I think it's more that the amount of overhead of reprogramming existing features that were programmed or designed poorly in Unity's early days is greater than their ability to extend the application themselves, and the Asset Store was just a fluke marketing effort that actually worked out well for them and solved two problems at once -- their financial woes from piracy and their technical woes from the above-mentioned technical and design flaws because they could focus on those rather than keeping up with expectations from users to update with new features as almost all other software applications do.

    I'm a huge fan of Unity, but their focus on the Asset Store is becoming stale to many advanced users because it's reaching the limits of what users can do on their own without access to the source. The only option is for Unity to update the core technology to modern standards or extend the portions of the system themselves that people need most of all. The Asset Store unfortunately has a limit to what it can do for them currently and it exists solely as a business strategy to benefit them, not you, nor Asset creators (a 30% cut is quite hefty for a listing on a website). You the consumer ultimately have to foot the bill because Asset creators are usually indies like you and can't always make enough to survive to take the hit on what the consumer expects assets to cost. Unity is a business, and in business, what comes around goes around to everyone involved. In the end, it's best to just get along by helping one another out where you can.

    As much as I love Unity, its business strategist still needs to learn its lesson with the way it handles the Asset Store.
     
Thread Status:
Not open for further replies.