Terrain Former

Available on Unity Asset Store

1.7.15 - 16th of July, 2021

Fixes

  • Unity 2021.2 was sometimes not initialising correctly.
  • Setting the Terrain Former icon on the Terrain Former component is now more robust.
  • Some minor improvements to quality of code

1.7.14 - 8th of February, 2021

Fixes

  • Fixed errors when there are multiple Inspector tabs open/present the current editor layout.

1.7.13 - 5th of November, 2020

Improvements

  • Some source code cleanup.

Fixes

  • Fixed appearance of Scene View information when using the dark theme.
  • Fixed brush preview remaining present after selecting another object.

1.7.12 - 5th of September, 2020

Improvements

  • TinyJSON (used with Terrain Former in Unity 5.4 and earlier) has been updated to the latest version at this time.
  • The alternative (and now universally used) cylindrical cursor style now draws behind occluded objects, but with a darker colour.

Fixes

  • The newer cylindrical preview cursor is now used at all times instead of the projector since it has total compatability with all Unity versions and Render Pipelines.
  • Fixed warnings in all versions of Unity.
  • Minor code improvements.

1.7.11 - 19th of February, 2020

Improvements

  • Minor shader code refactoring
  • Minor C# code refactoring.
  • Improved the look of the Brush Preview's Grid (an optional feature found in Settings).
  • Mould tool no longer has a default offset, this is to make it less confusing when working at a small scale.

Fixes

  • Fixed an issue where the Mould tool was not working correctly in most circumstances.
  • Fixed a error when reimporting/importing a brush while the Settings tool was active.

1.7.10 - 19th of September, 2019

Improvements

  • Improved the performance of the Mould tool.
  • Moderate source-code cleanup.

Fixes

  • Mould tool was using the cursor's capsule collider when a Scriptable Render Pipeline is being used.
  • Fixed array-out-bounds error with the Mould tool.
  • Full support for Unity 2020.1 alpha and earlier versions. All deprecation warnings have been addressed.
  • Fixed an issue where sculpting would not behave as expected after importing a heightmap.

1.7.9 - 11th of March, 2019

Improvements

  • Slightly improved Paint Texture editor dialog to support Terrain Layers properly.
  • Terrain Layer parameters "Normal Scale" and "Mask" are now exposed.
  • Support for mixing different textures in Paint Textures across terrain grids.

Fixes

  • Terrain Mismatch finder now checks and handles empty Terrain Layers.
  • Terrain Mismatch finder now accepts mixing of different textures.
  • Full support for Terrain Layers including being able to swap them out.
  • Fixed crash when using terrain layers usage in Unity 2018.3.
  • Fixed errors that occurred when Terrain Layers are null.
  • Fixed incorrect alignment with the brush selection and texture selection grids.
  • Fixed an infinite loop when there are malformed settings files.

1.7.8 - 5th of January, 2019

Fixes

  • Support for Unity 2018.3 and Unity 2019.1a.

1.7.7 - 2nd of December, 2018

Improvements

  • Massive internal refactoring to make sculpting and painting very large terrain grids sufficiently quick.
  • The Smooth and Mould tools now use a seperable gaussian blur kernel, leading up to a 4x speed improvement.
  • All tools now have the same maximum brush speed/strength of 100 (from 2.0 in most tools), but the internal speed mutliplier has been refactored.
  • Maximum Smooth size increased from 11 to 15.
  • Smoothing Iterations now applies to realtime sculpting.
  • Smooth All and Mould All has been removed since it will create a lot of complexity to reimplement with the new internal changes.
  • General performance improvements across all tools.
  • Renamed Mould Iterations to Smooth Iterations.
  • Importing of heightmaps is now a lot quicker.

Fixes

  • Target Brush Opacity and the selected texture wasn't been saved across sessions.
  • Fixed an issue where Paint Texture's target opacity feature was not working as intended.
  • Fixed numerous other bugs.
  • No more freezes when first Terrain Former is initialized.
  • No more freezes when the Paint Texture tool is selected.
  • Small textures are stretched to in the Paint Texture textures pallette.

1.7.6 - 20th of October, 2018

Fixes

  • Textures scaled at sizes which aren't multiples of the terrain size will now appear seamlessly.
  • Terrain Former will no longer retain the last mode when focus is removed since it logically should be set to none when focus is lost.
  • Terrain Former is no longer reinitialized when entering play mode.

1.7.5 - 15th of October, 2018

Improvements

  • Multi-terrain now works on any valid adjacent terrains, even across multiple scenes. Having the grid of terrains under a parent object is no longer required.
  • No more stutters when pressing down the left mouse button to begin sculpting.
  • Progress bar for loading the alphamap (for Paint Texture) that is also cancellable.

Fixes

  • Fixed a mistake where exporting a heightmap as an EXR would export the heightmap in an incorrect value range.
  • Fixed a bug where certain terrain grid configurations would cause exceptions.
  • Fixed an incorrect labelling of a terrain being selected in the Neighbours foldout under Settings in some circumstances.
  • Fixed a bug where Raise/Lower would use Terrain projection when using Shift+LMB.
  • Fixed a potential bug where an internal data structure used for multi-threading wouldn't be resized when it was supposed to be.
  • Fixed an issue where projects with lower-case typed directory names would cause the "Create Terrain Grid" wizard not to succeed in terrain grid creation.
  • Fixed a problem where overriding many terrains when using "Create Terrain Grid" wizard could cause the confirmation dialog to be larger than is even viewable.
  • Minor internal code improvements.

1.7.4 - 13th of April, 2018

Improvements

  • Paint Texture's parameter editor now automatically closes when Terrain Former is no longer active.
  • Brush angle shortcut now wraps to/from -180° from/to 180°.
  • The brush name label is no longer bold since it was unnecessary and looks strange in Unity 2018.1 and above.
  • Changed Generate's "Height" option label to "Max Height".

Fixes

  • Fixed an issue where image brushes weren't being sorted alphabetically.
  • Fixed a bug when trying to paint a newly added texture onto the terrain.
  • Fixed a bug when trying to import a heightmap onto a non-square terrain grid.
  • Fixed a bug when trying to sculpt on a non-square terrain grid.
  • Fixed a bug when exporting non-square terrain to a EXR heightmap.
  • Fixed a bug where the brush angle shortcuts seemingly roated the brush in the opposite direction.
  • Fixed a bug where after the brush has been rotated by shortcut keys its opacity would be affected by the brush speed.
  • Fixed a bug when checking the "Invert Brush Textures Globally" option in Settings that causes an exception.
  • Fixed potential floating point precision inaccuracies that might make valid terrains incorrectly not part of a terrain grid.
  • Fixed a mistake that allows terrains to be a part of a terrain grid even if they are of different resolutions.

1.7.3 - 19th of January, 2018

Improvements

  • Support for Unity 5.1 and later has been brought back - the mould tool will be slower in Unity 5.1 and Unity 5.2 since there is an optimization that is incompatible with these versions of Unity.
  • Brought back the Behaviour group foldout to save some vertical space.
  • Optimized the "Paint Texture" mode.
  • The minimum brush speed has been reduced to 0.001 (down from 0.01) because Terrain Former can actually work too fast now.

Fixes

  • Terrain Former Lite would throw exceptions on terrains without a terrain data object.
  • Create Terrain Grid didn't enforce a file name extension.
  • Fixed an issue where changing from using TinyJSON for the Settings file to EditorJsonUtility would throw an excepction.
  • The current tool now remains selected even after script recompilation/assembly refresh.
  • Fixed an issue where the brush angle shortcuts only applied to custom brushes (image-based brushes)
  • Fixed an issue where the Perlin Noise brush didn't rotate based on the angle.
  • Random Rotation is disabled when there is a round falloff brush.
  • The updated terrain LODs were only being committed when the Update Terrain LODs was set to Always - the opposite situation of when they should be updated.
  • Support for Unity projects with a lowercase "assets" instead of "Assets" directory name.
  • Significantly reduced garbage allocations, resulting in less frequent and severe GC.Collect spikes.
  • The minimum brush size is now roughly 3 heightmap samples, lowered from the ~5 heightmap samples in previous versions.

1.7.2 - 4th of December, 2017

Improvements

  • Shortcuts are now allowed to be unbound by pressing the spacebar or the enter key when setting them.
  • Added shortcuts for Heightmap and Generate (which are unbound by default in the full version of Terrain Former).

Fixes

  • Fixed the Smooth tool not having a thicker falloff shape by default.

1.7.1 - 25th of November, 2017Unity 5.3 and newer

Improvements

  • Usages of radio buttons where equal spacing doesn't fit all elements perfeclty will now use non-equal spacing to fit all elements correclty.
  • Brush and texture selection colouring is now Unity engine-native in both colour and appearance.
  • Minor optimizations to Mould tool.
  • Mould tool is arranged before the Paint Texture tool.
  • Updated icon

Fixes

  • Fixed an out of range exception that could occur on the brush selection toolbar.
  • Fixed some wording/punctuation/grammar.
  • Fixed errors when undoing resolution changes.
  • Fixed an issue where new projects from around Unity 2017.2 have the Ignore Raycast layer stuck at 2, which Physics.IgnoreRaycastLayer didn't know about, as a result making Mould not work correctly.
  • Fixed an issue in Mould tool that would cause incorrect behaviour around lines of a grid.

1.7.0 - 3rd of November, 2017Unity 5.3 and newer.

Features

  • Sweeping performance improvements delivering up to 5x (on a 4-core Intel Core i7 6700K) faster results than v1.6.0 using multithreading and various other optimizations.
  • While in Flatten mode, keyboard shortcuts "Y" and "U" step backwards and forwards Flatten Modes.
  • While in Paint Texture mode, keyboard shortcuts "Y" and "U" step backwards and forwards textures.

Improvements

  • Renamed the "Shrink Wrap" tool to "Mould".
  • No longer uses TinyJSON to serialize JSON with Unity 5.5 or later and instead uses Unity engine's JsonUtility class.
  • If the Settings.tf file is invalid, Terrain Former will automatically create a new one behind the scenes without prompting the user, because it it's invalid in the first place it's contents are of no use.
  • Refactored code has increased performance of all tools by up to 30% (excluding multithreading). Note that applying the changes is still relatively slow due the way Unity currently works, and that the Mould tool is only partially multithreaded.
  • All tools are now multithreaded, yielding up to a 98% core count scaling, while smoothing has up to a 90% core count scaling rate. With a quad-core Intel Core i7 6700K, Raise/Lower is up to ~3.94x faster, smoothing is now ~3.59x faster.
  • The default falloff for the Smooth and Mould tools have been adjusted to make them work faster.
  • The default brush colour's alpha value is a little more transparent than before (170 down to 155).
  • Change Smooth's "Smooth Radius" UI to indicate it's true size (which is radius * 2 + 1)
  • Added smooth size to the Mould tool.
  • Renamed the Mould tools' "Raycast Offset" parameter to "Height Offset".
  • Brush falloff creation is now 4x quicker.
  • Double clicking on an empty area in the Textures area in Paint Texture mode is now a shortcut for adding a texture.
  • Changed the "Alpha" parameter for brush falloff to be by default, and in place it's now called "Invert" and can be applied to procedural brushes.
  • Lots of internal code cleanup.

Fixes

  • Fixed "Offset Height" in the Heightmap tab not working on a terrain grid correctly.
  • Fixed a bug where Create Terrain Grid wasn't prompting for files that will be overwritten.
  • Fixed an exception when there is only one terrain as a child and there is a Terrain Former component attached the parent object.
  • Fixed a stutter noticable when editing a terrain grid where each and every terrain was told to update their state after using a tool even though they didn't actually change.

1.6.0 - 6th of August, 2017Unity 5.3 and newer.

Features

  • Shrinkwrap tool - moulds the terrain around any 3D Physics collider in the scene - particularly useful for making the terrain around roads and paths the same height.
  • Height Offset in the Heightfield tab, which offsets the entire heightmap(s) by the accompinying value.
  • Export heightmap as an EXR (available in Unity 2017.1 and later).
  • Choose which axis the linear ramp generator runs along.
  • Framing (with the shortcut key "F") now longer is relying on the Terrain inspectors' implementation, and works across terrain grid.
  • Perlin noise brush.

Improvements

  • Centered the Flatten icon's arrow.

Fixes

  • Complete support for having multiple "Inspector" tabs opened at once while Terrain Former is active.
  • Fixed an issue where Initialize was being called twice on changing mode for the first time after OnEnable was called.
  • Pressing the shortcut keys to change the brush angle would result in jitter as they go past the minimum and maximum values and then clamped a frame later.
  • Fixed an issue where the brush projector was flipped around in a strange way.
  • The top projector plane visible in Flatten and Set Height tools wasn't being rotated based on the current brush angle.
  • If Unity will automatically show tooltips on toolbars (in Unity 2017.1 and above), it will no longer double up on tooltips and show Terrain Former's custom tooltip.
  • The tooltips that appear when hovering over the toolbar are no longer cutoff at low widths and behave more responsively.
  • Fixed an issue where Terrain Former would think the left mouse button is still pressed down when it isn't.
  • Fixed multiple bugs related to opening the edit/add texture window (found in the Paint Texture tool), and the window updating to add/edit states.
  • Vast under-the-hood script improvements. Many "TODO"'s' have been removed and/or fixed.

1.5.4 - 12th of July, 2017Unity 5.0 and newer.

Features

  • Create Terrain Grid now has "Alphamap Resolution" and "Terrain Name Prefix" parameters.

Improvements

  • The minimum brush size is now rounded up to the nearest 0.1.
  • Removed Brush Size Increments in favour of adaptive increments (more increments around lower values, less increments at higher values.
  • Brush Speed now adaptive as well.

Fixes

  • Fixed an issue where using the Flatten tool on a terrain that's translated up or down on the Y-Axis would cause the sampled height to be incorrect.
  • Create Terrain Grid wasn't actually setting the "Basemap Distance".
  • Create Terrain Grid's "Control Texture Resolution" has been removed as it didn't work anyway and served no true purpose.

1.5.3 - 24th of February, 2017Unity 5.0 and newer.

Fixes

  • Fixed the artifact visible when using a small brush where the texture would "bleed" in two directions.
  • Fixed the appearance of the mode toolbar's tooltip style for Unity Pro's dark skin.
  • Mode toolbar's tooltip is now hidden when the mouse leaves the area.
  • Shortcuts with the control key used to show as "Ctr", now they show as "Ctrl".
  • Various other minor fixes

1.5.2 - 6th of January, 2017Unity 5.0 and newer.

Fixes

  • Fixed warnings that were present in Unity 5.5 and newer.

1.5.1 - 17th of September, 2016Unity 5.0 and newer.

Improvements

  • Changed the Unity-Wide Preferences button in the Settings tab to Terrain Former Preferences.
  • The Collect Detail Patches terrain setting now has a tooltip.
  • The "Import Heightmap" button in the Heightmap tool is now a sensible width and is now centered.

Fixes

  • The minimum brush size was being calculated incorrectly and is now the length of five heightmap segments.
  • The cursor would not move at a normal rate while Set Height or Flatten modes were being used and the height difference was small enough to make the top brush plane not visible.
  • Changing terrain settings in the built-in Unity terrain tools and switching back to Terrain Former would result in sculpting not working.
  • EditorWindow.titleContent wasn't being used in Unity 5.1 or newer, when it should've been.
  • Fixed a few problems that caused Terrain Former to throw exceptions with a non-square terrain grid (e.g., a grid with 5 terrains horizontally and 2 terrains vertically)

1.5.0 - 3rd of September, 2016Unity 5.0 and newer.

Features

  • Multi-terrain sculpting and painting.
  • Tool for creating a grid of terrains (multi-terrain) via Game Object > 3D Object > Create Terrain Grid….
  • The Terrain Former component can now be added to the parent of a terrain grid.
  • Multiple terrains inside of a common parent are considered to be part of a terrain grid.
  • Ability to invert a custom brush's texture per brush mode.
  • Setting to invert all custom brushes globally.
  • Brush selection is now tab-grouped with the option to switch to how it was before or to show an icon which indicates the type of the brush.
  • Paint texture tool - even across terrain grids as well of course.
  • Add, remove and edit textures for terrains across entire terrain grids.
  • Heightmap tool to import heightmaps from any arbitrary Texture2D.
  • Terrain/TerrainData-specific settings are now present in the Settings tab (and work across an entire grid). Terrain Former-specific settings have been moved into the Unity Preferences window.
  • Neighbours foldout found in Settings which show the terrain grid from a top-down perspective.

Improvements

  • The Settings.tf JSON file is now formatted with "Pretty Print".
  • Minor improvements to the scene view widget panel's appearance and it's now slightly transparent.
  • Lots and lots of miscellaneous UI tweaks.
  • Massive behind-the-scenes changes that improve the way Terrain Former is structured, hopefully make the code a little more understandable and perhaps a little more performant as well.

Fixes

  • Changing the falloff curve will no longer be slow while using bigger brushes.
  • The Settings.tf file is now properly upgraded from previous versions to the current version (however, downgrading isn't supported).
  • When the Settings.tf is malformed, there will now actually be a decent error message explaining what's wrong.
  • Fixed a few issues that caused the scene view panel to have no texture and/or incorrect padding.
  • Removed the "Toolbar Style" setting as it requires such a large area to be usable and is aesthetically challenged.
  • Removed the foldout for the "Behaviour" heading under brush settings since it was not necessary.
  • Removed interactive smoothing since it both never worked as it should've in the first place wasn't necessary either.

1.4.3 - 25th of March, 2016Unity 5.0 and newer.

Features

  • Option to display "Brush Size Increment" in the Scene View Information panel.

Improvements

  • Behaviour foldout now responds to interaction across entire control's width (rather than just the foldout icon).
  • Minor layout improvements to Scene View Information.

Fixes

  • Fixed an issue where the brush projector wasn't always visible and wasn't projecting onto certain parts of terrain (noticable in Unity 5.3.4).
  • All sculpting operations can no longer go lower than 0 or higher than the maximum height of terrain. This is noticeable if for example you try to raise terrain that is actually lower than 0 (not show visually), it will take some time until the terrain finally gets above 0 units.
  • "Always Update Terrain LOD" is now enabled by default.

1.4.2 - 22nd of January, 2016Unity 5.0 and newer.

Features

  • The procedural brush can now have a custom angle and use random rotation.

Improvements

  • Brush Size Increments have been lowered again to facilate small brush size changes.

Fixes

  • Fixed an issue where brushes in sub-directories of the Brushes folder weren't disovered.
  • Fixed an issue where the "Restore Defaults" button located in settings was incorrectly enabled/disabled.
  • Fixed an issue where externally updated terrain assets would cause an error.
  • Fixed an issue where brush speed didn't affect random rotation.

1.4.1 - 13th of January, 2016Unity 5.0 and newer.

Fixes

  • Fixed an issue where pressing certain keys would cause a KeyNotFoundException.

1.4.0 - 9th of January, 2016Unity 5.0 and newer.

Features

  • Source code is now available (no more .dll's).
  • Random brush offset and rotation.
  • Brush spacing (both random and fixed).
  • Duplicate Terrain objects cleanly using the function located in Assets > Duplicate Terrain….
  • Terrain Former settings are now saved as a JSON file "Settings.tf".
  • Brush settings are now saved per mode.
  • Circular ramp generation.
  • Generate options now have a height property.
  • New shortcuts: cycle between brushes ("O" and "P"), reset brush rotation ("0"), and toggle Sculpt Onto modes ("I").
  • Ability to change the preview size of brushes.
  • New option to always show brush selection.
  • In Flatten and Set Height modes, there is now a second cursor that shows the current height.
  • Customizable scene-view information.

Improvements

  • Terrain Former can now be moved to any folder inside of "Assets".
  • Brush size increments are now tuned to be more commonly used values.
  • Increase/decrease Brush speed are now rounded to the nearest 0.1.
  • Internal brush samples are no longer completely recalculated while rotate clockwise/counterclockwise shortcuts are being executed.
  • Generate icon has less thickness.
  • Numerous optimizations for calculating brush samples.
  • Rotate Brush Right/Left shortcuts have been renamed to Rotate Brush Clockwise/Counterclockwise.
  • Heaps of minor UI improvements.
  • Flatten All is now 3x faster.
  • Smooth All is now 2x faster.
  • Heaps of under-the-hood improvements.
  • Improved wording for error messages.

Fixes

  • Fixed OutOfBounds exception when deleting a custom brush.
  • In Flatten and Set Height modes, sculpting will always be projected onto a plane—it doesn't make sense to raycast onto the terrain in these modes.

1.3.2 - 11th of July, 2015Unity 5.0 and newer.

Features

  • Brush rotation.

Improvements

  • Minor fixes to Settings related text.

Fixes

  • No longer checks for shortcuts while a terrain command is being used.
  • No longer updates brush samples repeativley while changing a parameter.

1.3.1 - 17th of February, 2015Unity 5.0 and newer.

Features

  • Unity 5 support.

Improvements

  • User interface controls are now lined up perfectly with surrounding UI.
  • Other minor UI improvements.

Fixes

  • Undo/Redo can no longer reset the current brush to the default.

1.3.0 - 9th of February, 2015

Features

  • Customizable keyboard shortcuts.
  • Custom brushes now support falloff and roundness.
  • Brush size increment amount can be altered. (Default is 2%.)

Improvements

  • Enlarged tool mode labels.
  • Overhauled settings interface.
  • Improved brush roundness algorithm. It now blends seemlessly between a rounded square to a circle.
  • Various minor optimizations to terrain tool performance.
  • Grid tiling is based on camera distance.
  • Minor improvement to the Generate icon's thickness.
  • Various other minor UI improvements.
  • Miscellaneous internal improvements and optimizations.

Fixes

  • Editor-related logic is now placed separately in an "Editor" folder, allowing standalone builds to complete successfully.
  • Grid now stays in place while using interactive tools.

1.2.0 - 10th of December, 2014

Features

  • Brush speed shortcuts decrement/increment: minus (-) and equals (=) keys.
  • Keyboard shortcuts for modes (Z, X, C, V, B, N).
  • Ability to switch tool mode icons to text.
  • Interactive Flattening and Smoothing.

Improvements

  • Tweaked tool icons.
  • Better third built-in brush texture.
  • Various minor optimizations to all terrain tools.

Fixes

  • Saved brush colour now loads correctly.
  • Improved tooltip punctuation/grammar.
  • Keyboard shortcuts can no longer be captured when keyboard focus is on text field.
  • Non-readable custom brush textures would cause a crash. These are now automatically updated to readable textures.
  • Brush colour's alpha channel is now updated.
  • Brush is now hidden while using interactive tools.
  • Externally modified terrain data is now always reloaded.
  • Interactive tools now works when the mouse is not hovering over the terrain.

1.1.0 - 18th of September, 2014

Features

  • Custom Brushes: Use your own brush images by adding them to TerrainFormer\Textures\Brushes.
  • Sample Height: In Set Height mode, hold Alt+LMB to sample the height of the terrain being hovered over. This will update the "height" parameter of Set Heights.
  • Terrain Ramp: Generate terrain based on a curve.

Improvements

  • The mode toolbar now uses icons rather than text.
  • Smooth operation approximately 30% faster.
  • Raise/Lower operation time roughly 10% faster.
  • Current height readout can now be hidden in Settings.

Fixes

  • OutOfMemory exception when loading a terrain with a different size than the last terrain used in Terrain Former.
  • Keyboard shortcuts no longer require Scene View focus.
  • Brush colour is now saved.
  • Fixed potential problems in locating internal dependencies.

1.0.0 - 26th of July, 2014