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

Voxeland - Voxel Terrain Tool

Discussion in 'Assets and Asset Store' started by Wright, Jun 25, 2013.

  1. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,265
    ReadmeHeader2.jpg

    Voxeland is a next generation of a cubic-style terrain, but a bit more than that: it is a subdivided and adroitly smoothed cubical structure.


    Screen2.jpg Screen3.jpg Screen5.jpg Screen6.jpg

    The tool comes with all the assets can be seen in demo: land and grass textures, tree objects, shaders, scripts and skybox. These assets will be a good help in a game creation or prototyping.

    Voxeland terrain could be modified and updated both in editor and in-game in realtime. A terrain collision mesh is generated along with a render mesh.

    Special Grass feature automatically plants a shader-animated grass above a selected surface blocks. And possibility to assign any object as a terrain block gives an ability to bind objects to terrain, add or remove them in-game like any other block or even create terrains made of objects.

    Asset Store
    Documentation
    Issues/Ideas

    Free evaluation version: a fully functional version with two limitations:
    - the legal one: it could not be used in a final product. Please purchase the full version before releasing your game.
    - the code one: most of the settings from the settings and generate tabs are locked to default and could not be changed.

    Demo build: If you'd like to play with Voxeland without importing anything to Unity feel free to download the demo scene PC build. It's a single 66Mb file "download and run" SFX with no install or manual unpack required.
     
    Last edited: Nov 27, 2019
    GoldenSkullArt and TarekNassef like this.
  2. kenlem

    kenlem

    Joined:
    Oct 16, 2008
    Posts:
    1,630
    Does this support mobile devices?
     
  3. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,087
    Looks nice.
    I am wondering with all this voxel assets comming lately, who/which will implement a "mesh brush" feature.
     
  4. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,265
    The target platform is the PC. But users claim that it works well on iPhone, although I have not tested the performance on mobile devices yet.

    Thanks. It is not hard to make a mesh brush, especially in Voxeland with a terrain objects support. Suppose I will do it in next version )
     
    Last edited: Jun 25, 2013
  5. kenlem

    kenlem

    Joined:
    Oct 16, 2008
    Posts:
    1,630
    Pardon... what's a mess brush?
     
  6. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,265
    Like in ZBrush I suppose. The ability to paint with meshes on a landscape. Am I right?
     
  7. CreativeChris

    CreativeChris

    Unity Technologies

    Joined:
    Jun 7, 2010
    Posts:
    457
    Hi @Wright,

    Really nice Terrain plugin, are you planning to support the undo function? much needed.

    Thanks,
    Chris
     
  8. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,265
    Hi Chris,

    Undo is working, but needs terrain to be rebuild to display changes. Rebuilding takes some time, and could be annoying on every undo. I plan to add auto-rebuild on undo after some performance tweaks. To undo now "rebuild" should be clicked after one (or many) undo steps.
     
  9. livio3d

    livio3d

    Joined:
    Feb 17, 2009
    Posts:
    145
    just bought! Really nice add on :)

    i have some request if is possible like a smoothing brush opton!
    (are you planning to add triplanar texturing?)
    sry for bad english.
     

    Attached Files:

    Last edited: Jun 26, 2013
  10. jc_lvngstn

    jc_lvngstn

    Joined:
    Jul 19, 2006
    Posts:
    1,508
    [Edit] Had a question about the grass, nevermind :)
     
    Last edited: Jun 26, 2013
  11. Rico21745

    Rico21745

    Joined:
    Apr 25, 2012
    Posts:
    409
    Any plans for a C# version?
     
  12. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,265
    Thanks!
    Smoothing brush is a good idea. Although it will not smooth terrain more than it could be smoothed due to core cubical structure, it can remove lonely peaks and single-block cavers.
    Voxeland per-face mapping gives an ability to tile textures with no repeatable elements every fixed distance. You can paint noticeable spots on a texture, and these spots will not be tiled every n meters. There is no need to create dull homogeneous textures.
    But I'll think about triplanar, I guess many have already prepared land tiles.

    I like javascript, we have warm relations) At this moment I don't see a point of a refactoring code to C#. But its true that C# gradually becomes the only scripting standard, so I dont exclude the possibility of C# version in future.
     
  13. Samsson

    Samsson

    Joined:
    Oct 12, 2010
    Posts:
    165
    Congrats, this is the most beautiful voxel terrain type i've seen so far on Unity.

    A few Questions :

    1. Does it works with occlusion culling ?
    2. Does it works with lightmapping : directionnal, dual ?
    3. Does it works with propes system ?
    4. Can you build more than one "voxel terrain" on a single scene ?
    5. Is it possible to export the voxel terrain from unity editor to .obj,via the obj exporter ?
     
  14. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,265

    Thanks, very pleased to hear!

    Voxeland works fine with occlusion culling and lightmaps, but of course not in a playmode.

    You can create and edit more than one terrain in a single scene.

    Obj export is turned off. It is possible to export only geometry and uvs, but as far as I know obj does not support vertex color (if someone knows how to add vertex color to obj - please let me know). You can uncomment line 71-81 VoxelandEditor if you need to export a geometry only, please note that it is untested feature - no one is responsible if the terrain will be lit with one texture or the moon come down from orbit or something.
     
  15. blackant

    blackant

    Joined:
    Jun 18, 2009
    Posts:
    529
    voxeland is a terrible plugin !
    if you like to build and play with coat it's very easy to use !

    could you improve the ability to stay clicked on left mouse to create chunks ?
    and the ability to set different grass and objects on Texture ?
     
    Last edited: Jun 28, 2013
  16. nuverian

    nuverian

    Joined:
    Oct 3, 2011
    Posts:
    2,087
    I suppose you ment "terrific" instead of "terrible" :) cause terrible means "very bad" and it doesnt look like you ment that.

    Anyway, a question. It's complicated so here we go:

    I am making a game which is underground and is grid based, digging and stuff. Imagine something like Dungeon Keeper. I was allways thinking if it is at all possible to use a voxel terrain instead of simple polygon prefabs for the tiles. How I imagine this happening is that when the player digs a tile, then a number of voxles that form a square actually, are removed at that specific location. So the question is, can I have a solid terrain of a specific size and then selectively remove many voxels at once at specific locations.

    I hope you understand what I am after :)
     
  17. Kirbyrawr

    Kirbyrawr

    Joined:
    Jul 23, 2012
    Posts:
    945
    I like the grass in the terrain.
    Keep it up, it seems to be a nice plugin :D!
     
  18. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,265
    I was afraid of that was going to be tough criticism :D Don't want to say say that it is really is terrible, do you?

    Here is an idea: I can make a special block type for grass - and once this block is above any filled block the grass is displayed. So you can place grass wherever you want. So question to everyone: how do you like such a way to set grass?


    Do you mean remove voxels by script? Sure! Use (voxelandComponent).SetBlock(x,y,z,0); where x,y,z are block(voxel) coordinates and 0 is the empty type. And you can set blocks similarly, just use block number instead of 0.

    Thanks!

    Btw if anybody had a problem with saves please update to version 1.04
     
  19. angelodelvecchio

    angelodelvecchio

    Joined:
    Nov 15, 2012
    Posts:
    170
    friends, after i watched some videos of this developers on youtube i was bothering him to release his work on assetstore, i am really proud and happy to see it here! and with a marvelous price!, judging by SplineBend work i can say this is a wonderful asset!, i cant see the time to have money and buy this! Many thanks, and please! keep the good work!
     
  20. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,265
    so it was you!) I thanks you for making me put Voxeland to asset store, it was the right idea!
     
  21. drizztfun

    drizztfun

    Joined:
    Jul 2, 2013
    Posts:
    25
    Hi

    really nice one, good job!

    took me a bit to get used to it, but i really like it now. it clearly wins against the PLANE :p i had before ;)

    What i would wish for.. is some tool or function to get the textures modified like its needed. Maybe i am just too clumsy for that ;)

    I noticed that the highlight-marker stays active and visible when entering playmode, even if edit in playmode is not active...thats a bit.. annoying ;)

    Is there any way to resize the voxeland created? just extend.. if i realize after some work, that its not big enough. that would be nice too.

    Right now i am trying to get into the code. What i need is to produce some "Diff-File" for changes.. in a multiuser-environment. So that i can only transfer the changes and store them on the server without creating too much overhead. I saw that SetBlock.. thats perfect for setting. Now i just need to find the changes the user makes before he hits some save-button or like that.

    Anyway, thats just ideas, as i said, great work, keep it up!
     
  22. Ali-Nagori

    Ali-Nagori

    Joined:
    Apr 9, 2010
    Posts:
    151
    hi Wright , i really liked voxelland after i checked on your web demo , but i do would love to know if it does might be usefull in my project or not ,

    1 - does it has mesh collider or terrain collider
    2 - can it be flagged as static and light mapped just like a regular terrain .
    3 - does it render as partially like the normal terrain , or just like regular meshes .

    and thank you
     
  23. blackant

    blackant

    Joined:
    Jun 18, 2009
    Posts:
    529
    héhé, sorry terrific means terrible in french !

    your english language is sometimes so complicated !!!! lol
     
    marlonial likes this.
  24. SJAM

    SJAM

    Joined:
    Jan 11, 2009
    Posts:
    729
    Wow, very impressive job !!!

    Good continuation !
     
  25. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,265
    I've got a substance for Substance Designer - you set our texture as input and receive proper texture at output. It's in my office pc, and I will try to publish this substance as soon as I get there on monday.

    About highlight - I've checked out and there is such a bug indeed. I've missed it before and it will be fixed. Thanks for report!

    All the voxeland terrain stored in data file:
    - (voxelandData).blocks is a one-dimensional int array of all block types used in your terrain. Its length is sizeX*sizeY*sizeZ (where size - is dimensions of data). To get block number in array by coordinates use z*sizeY*sizeX + y*sizeX + x. To find changes in data you have to compare two "blocks" arrays.
    - (voxelandData).exists is a boolean array of all blocks existance. If true - block is filled with ground, if false - it is an air block. Its count and methods are just the same as blocks array. Note that if a block is marked as "false" it will not be displayed event it has a ground type, so you should compare "exist" array too.
    - (voxelandData).ambient is array of floats that set ambient color of blocks. It can be re-calculated by (voxelandData).CalculateAmbient() so there is no need to compare these arrays.

    To get access to single blocks you should call (voxelandData).GetBlock(x,y,z) to get a block at a coordinates x, y, and z, this will return int block type. And (Voxeland component).SetBlock(x,y,z, type) will set a block at specified coordinates, where type is int of a block type. Please note that GetBlock is called on VoxelandData (asset file), while SetBlock is called on Voxeland component (terrain itself). In future version I will add GetBlock() to Voxeland to make it more clear.


    here's the info you requested:
    1 - voxeland generates a mesh collider.
    2 - it could be lightmapped
    3 - voxeland chunks are common objects with renderer and mesh filter. Unity terrain does not have an ability to create such a complex geometry.

    Thanks azert2k and thanks all for accolades!
     
    Last edited: Jul 5, 2013
  26. larsbertram1

    larsbertram1

    Joined:
    Oct 7, 2008
    Posts:
    6,893
    simply: wow –
    although terrain texturing is a bit corrupted on my mac book pro (nvidia geforce 9400m – as with most triplanar shaders…)

    lars
     
  27. bocs

    bocs

    Joined:
    May 9, 2009
    Posts:
    412
    Just bought it, very cool so far.

    only complaint, 1 type of grass seems very limited.
     
  28. sefou

    sefou

    Joined:
    Aug 30, 2011
    Posts:
    287
    Hi Wright,

    awsome plugin. Can we add differents materials grass ?

    Thanks

    $img.png
     
  29. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,265
    I have already started to implement this idea. Btw link grass to texture option will remain, you will just have to set grass block type number in textyre type.

    Hi lars, if you assign a simple Terrain4 shader - will a bug remain?
     
  30. drizztfun

    drizztfun

    Joined:
    Jul 2, 2013
    Posts:
    25
    hi again,

    i am really more than happy with voxeland, its just working great with most things. i especially like the exact editing, where i can really design even small features precisely.

    Just.. as somebody else already asked :) What about a c#-Version? would be so much easier and nicer to integrate for me.. and i guess for many others too..
    Maybe consider it?;)
     
  31. sefou

    sefou

    Joined:
    Aug 30, 2011
    Posts:
    287
    Hi Wright,

    is it possible welding 2 voxelands ?

    Thanks
     
  32. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,265
    You can set block data with script. To make a welding you should make all of the first (0) and the last (size-1) x or z of two blocks to be the same. The post somewhere above describes how to set (voxelandData).blocks

    I will consider C# version after auto-generator. I see there is big demand for it, so I nearly surrendered) Ok, ok, I'll think about it seriously. )
     
  33. amaca7797

    amaca7797

    Joined:
    Mar 29, 2013
    Posts:
    1
    Is this better than the terrain toolkit form sixtimesnothing?
     
  34. drizztfun

    drizztfun

    Joined:
    Jul 2, 2013
    Posts:
    25
    I dont know this terrain toolkit.. but Voxeland is nice, try the webplayer. I tried all voxel-terrains i could find and i stick to this one, even if it has that SERIOUS language-flaw :p

    But hey, i managed to access it all from my c# code and implement my own runtime-editor, its all working like a charm now.
     
  35. DigitalAdam

    DigitalAdam

    Joined:
    Jul 18, 2007
    Posts:
    1,201
    I ran the demo and watched the introduction video and it's very impressive. I do have a few questions though before purchasing:

    I'd like to use this for a multilayer shooter I'm putting together. From what I read in previous posts, this does have a collider and culling works, correct? How is the performance; draw-calls and such?

    I saw that you can change the brush size, what about amount of how much is added/taken away?

    Is it possible to add additional maps, such as specular if needed? I have no idea how the mesh is generated, but what about DX11 support to smooth out the terrain mesh based on distance?

    Finally, would it be possible to activate/de-active at run-time the ability to modify the terrain? I'm thinking about an option to allow both teams a certain amount of time to change the terrain during game play, say for 30 seconds.

    Thanks!
     
  36. Nurz

    Nurz

    Joined:
    Jul 18, 2013
    Posts:
    1
    Looks great indeed. Question, will auto-generator use custom variables to create the landscape? Instead of being just random, i was thinking also of an option for the user being able to define a few aspects for the terrain - such as its general size, frequency and diameter of caves and cliffs, water and foliage percentage coverage, etc. And a customisable density brush for placing trees and models maybe? Just my thoughts.
     
  37. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,265
    Yup. You got me. ;) I'm not a native speaker, and I can make mistakes. To be honest - sometimes I feel ashamed for them. :) If you find such a mistakes in editor, inspector panel, tooltips, help file, or anywhere - please let me know, don't hesitate, this is very important! You can write me a forum private message or mail to mail@denispahunov.ru Thanks in advance.

    Voxeland has a mesh collider and a terrain created could use occlusion culling. It consist of several meshes - chunks - which could be turned on and off by oc.
    Terrain uses one draw call per chunk (two if realtime shadows are on). Chunk size is 100 m^2 by deafult .

    Hmmm... Never thought of digging depth. But it should be not hard to implement, I guess I can make it in one of the future updates.

    You can write your own shader. Voxeland uses common surface shader which could be applied to any other object. The texture blend is set by a vertex color.

    It is possible. But please note that occlusion culling mentioned above could not be recalculated in realtime. So you may experience artefacts when chunks are not displayed using oc and realtime editing.

    I don't think that the first version of the generator will be so complex.But it will evolve, and I'll try to add all the necessary features.

    PS glad to hear that some are choosing this tool, having tried all the other. I'll try my best to get rid of the flaws :)
     
    Last edited: Jul 19, 2013
  38. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,265
    Once I promised a texture substance for Substance Designer for drizztfun. It gives the possibility to prepare perfectly tiled Voxeland textures in just a couple of clicks. I've sent this substance via personal message recently, but I think it would be fair if anyone can get it.

    I am a little surprised by the fact that only one person asks for the texture creation tool. Seems that others are pretty happy with default textures. I've got nothing against it, but it could result in a lots of games with the same landscape. Please feel free to use substance to give your game individuality. ;)

    http://www.denispahunov.ru/voxeland/VoxelandTexture.sbs
     
    syscrusher likes this.
  39. DigitalAdam

    DigitalAdam

    Joined:
    Jul 18, 2007
    Posts:
    1,201
    Before I purchase, I noticed that your grass and trees have motion. Is that using Unity's wind, or was it animated within the model? I ask in case I wanted to integrate this with some sort of storm system.

    Is there also an easy way to smooth the terrain to a flat surface? I had to click multiple times to get the original flat surface again in your demo, depending on how much land I added/removed.

    I think you miss-understood when I asked if there was an option of a setting on how much land to add or dig. Say in the demo is one unit; can I choose 3 units and add or dig 3 times as much?

    I like the idea of using Substance to texture the terrain, and have some more options for texturing! Ever consider about having a secondary "blending" texture get generated automatically on the vertical surface? I've seen a couple of engines do this (although I'm drawing a blank of which ones they were), so when you choose grass, the cliff side has a different texture. Your competition Ruaumoko has a cool snow feature that adds that texture depending on elevation. Just a thought of a cool feature to add! ;) Anyways here's a screen shot:

    $terrain.jpg

    Thanks!
     
    Last edited: Jul 20, 2013
  40. DavidWilliams

    DavidWilliams

    Joined:
    Apr 28, 2013
    Posts:
    522
    Your English is fine - I think he was referring to your choice of JavaScript over C# ;-)
     
  41. drizztfun

    drizztfun

    Joined:
    Jul 2, 2013
    Posts:
    25
    Substance Designer :)
    Hi, i am just too clumsy to use it.. can anybody tell me how to use the voxeland-substance with some texture? I just have no clue about the substance designer thing..
    Thank you!
     
  42. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,265
    Ok, there is a better way if you do not want to mess with Substance Designer:
    - download sb archive
    - copy it somewhere inside assets folder
    - assign Source Diffuse and Source Normal in Procedural Properties
    - adjust Offset and Blend to make tile borders less visible
    - assign textures (diffuse and normal) inside sb archive as voxeland type textures
    - enjoy! ))

    If you need more texture packs just copy sb archive and assign next textures.
     
  43. LordBytesworth

    LordBytesworth

    Joined:
    Dec 8, 2012
    Posts:
    6
    Hi Wright,
    I've purchased and spent a while playing around with both Voxeland and Ruaumoko, and I can safely say that they are both excellent tools.

    I do, however, prefer Voxeland primarily because of it's 'sculptability' and ease of use.

    The problem with Ruaumoko is that while it does have an 'infinite/paging/procedural terrain generation' feature, it is slow at rendering chunks and can become quite CPU intensive with only medium-sized terrains. As well as this, it is no where near as easily modifiable as Voxeland.

    I am interested in creating large terrains, and though Ruaumoko doesn't currently seem to suit my needs, your Voxeland definitely does. I do however, have one query on in-editor memory use, where creating 'large' Voxeland Terrain objects may return OutOfMemory exceptions upon creation or whilst trying to modify the terrain, though it may just be me trying to push it a little too far ;)

    Regardless, I am very impressed and I love this amazing tool. Keep up the amazing work!
     
  44. mormigil

    mormigil

    Joined:
    Jul 24, 2013
    Posts:
    1
    Hey Wright,

    So I've been looking around at some voxel tools for the last few day, and this one seems pretty great. I was wondering though how the terrain is rendered after being generated. Is there some marching cubes or dual contouring algorithm? Also under a similar vein is it possible to make true cubes with 6 flat sides?

    Anyway I'm hoping to get pick up a tool like this here soon and I'm looking forward to seeing what it can do.
     
  45. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,265
    Thanks, I'll try to keep up! Reducing the memory consumption - is my main direction of optimization. I've almost rewrote main algorithm, it should make Voxeland take far less memory. But there are still things to do, I'll finish along with auto-generator. In couple of weeks, maybe a bit more.

    Voxeland does not use marching cubes it similar algorithms. It works in a completely different manner. I needed a clean grid structure with strict linkage 4 faces per block side. Imagine Minecraft which is tessellated and smoothed. As an artist, I was inspired by the ZBrush Dynamesh.
    Theoretically it is possible to control the smooth value, but I did not thought that someone should need it. So I'll bring up the "smooth" setting in inspector in next version.
     
  46. DigitalAdam

    DigitalAdam

    Joined:
    Jul 18, 2007
    Posts:
    1,201
    Wright,

    At the bottom of the 2nd page of this thread I asked a few more questions before I purchase. Please take a look and let me know. Thanks.
     
  47. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,265
    Grass is animated with shader, and animation parameters are set only in the material. It is not connected with Unity wind.

    Now you can only dig or add blocks. But as I mentioned somewhere above I'll consider smooth brush (after generator maybe).

    Do you mean change brush size? Yes, it's possible within certain limits. You can increase brush size up to 5-unit rhombus.

    About snow - it auto-generator feature, for now I do not plan to implement it. But I'll keep it in mind. Substance now just allows to prepare tileable textures. Btw it is interesting idea to use substance instead of tiling and shader.

    It seems I overlooked post, even though it had nice picture ;) Sorry
     
    Last edited: Jul 26, 2013
  48. imaginaryhuman

    imaginaryhuman

    Joined:
    Mar 21, 2010
    Posts:
    5,834
    I'm considering you asset too and have some questions.

    There's been talk of substance, the procedural texturing thing.. I have no idea about it, do I need to buy/own substance designer or something in order to use your asset or can I use normal textures with it?

    I have a scenario where I want both a) very smooth `metaballs` and curved surfaces, where you can't really see any polygons (as much as possible), plus b) have flat/angular surfaces in other parts of the environment at the same time, like a completely flat wall or ground or maybe flat diagonal. Is this possible?

    I want to be able to also animate certain lumps of terrain, ie like with metaballs, emulating liquid, where the particles move around and your terrain mesh updates in realtime to make it renderable... I can generate particle points or volumetric data in scripts but can I then pass this to your system to have it generate the meshes in realtime, with some good performance?

    Also it seems that stuff like parallax shading and even geometry shaders would be a good addition to add extra visual detail to the terrain, or to smooth it out more, would that be possible?
     
    Last edited: Jul 28, 2013
  49. Samsson

    Samsson

    Joined:
    Oct 12, 2010
    Posts:
    165
  50. Wright

    Wright

    Joined:
    Feb 26, 2013
    Posts:
    2,265
    There is no need in Substance Designer. Voxeland works without it. This substance is just a helper for creating seamless tiles - and even in this case you do not need Substance Designer. You can download already prepared .sbsar file for Unity and include it in your project.

    Voxeland does not work with metaballs. It's voxels are like image pixels in 3D. Imagine minecraft with a smoothed terrain. It seems that you need something different than voxeland to simulate your liquids - something with metaballs and calculations on GPU to make it realtime. Voxeland works in a different manner, sorry :(

    Thanks for an idea. Adding parallax shader will not be hard. Cannot say that about tessellation though, never dealt with it. I am eager to try, but I'll do it only after big update with dynamic building, enhanced performance and autogenerator.
     
    Mienja likes this.