Mesh Terrain Editor 5 Pro (MTE 5 Pro) has been released as a new package.
Users of MTE 4 Pro will have to upgrade to MTE 5 Pro to get updates of new features and bug fixes.
Serial number of MTE 4 Pro cannot be used to activate MTE 5 Pro.
MTE 5 Pro no longer requires a serial key, instead it requires to login to your account, which owns or has been assigned a valid seat of the product.
MTE 5 Pro can be purchased on https://zwcloud.net#shop. You need to register an account on the website.
Owned product licenses and seat can be managed on the website.
Thanks for choosing Mesh Terrain Editor! I hope you have fun working with it. :)
Mesh Terrain Editor v5.0.0-beta1 (abbreviated to "MTE")
Join Mesh Terrain Editor's Discord Server to get access to latest version, which is updated every two weeks with new features and fixes.
Installation
If an old version of MTE exists in the project, please remove it before importing new version. Overwriting the old version will possibly cause errors because of old files.
After copy and import MTE's file into your project, click menu item Window/Mesh Terrain Editor/Install to install Mesh Terrain Editor into your project properly:
Incompatible URP shader folders will be removed.
For example, if your project uses URP14, only the "URP14" folder will be kept. If this doesn't happen, please do it yourself and report this issue.
It's recommended for first-time users to read docs about specific function before using. Also be sure to read following points:
If you run into problems, please refer to related documentation and FAQ first. If they cannot solve your problem, feel free to contact the author to get support.
MTE will modify your mesh and related files. Your files may be corrupted under rare conditions. Please, be sure to use a version control system like SVN or GIT to manage files in your project. It's really important to back up your files!
Editing operations are undoable before saving the mesh. Please note that once auo-save is enabled, when auto-save happened, you can no longer redo/undo.
Please note that the unit of brush sizes can be adjusted in Settings > Brush unit. (actual brush size) = (bursh size) * (brush unit). So you can adjust the brush unit to a suitable value before starting editing anything. It's recommended to use the same size as one quad of the mesh. (The quad size calculated by MTE may be incorrect for meshes not created by Mesh Terrain Editor.)
Main Menu
Main menu of Mesh Terrain Editor is located at Window/Mesh Terrain Editor. By clicking on an entry of the menu, you can open MTE windows that provides functions to use.
Mesh Terrain Editor
Creator: to create one or multiple tiled mesh-terrain as a plane, from a height map or from a curve.
Convertor: to create a mesh-terrain from an existing Unity terrain or terrain-like mesh.
Special tools created for specific users, don't touch these if you don't know the usage.
Mesh Tilling Baker
Texture Channel Packer
Support
Documentation: open the documentation of Mesh Terrain Editor, which you are reading now.
Welcome Window: open the welcome window, which shows up on starting Unity editor
Forum: the Unity forum post to communicate with the author and other users
Instant Messaging Group: communicate with the author of Mesh Terrain Editor at realtime. It will lead you to the official Discord Channel of Mesh Terrain Editor.
Feature Request & Bug Report: to request new features, suggest modifications or report a bug.
Debug
Reset Mesh Terrain Editor: reset states of MTE, note this will trigger code compilation.
Open Editor Log: Open the editor log folder of Unity.
MTE-editable mesh-based terrain will be called mesh-terrain for short.
Mesh Terrain Editor(MTE) has three main functions:
The MTE Creator that can create mesh-terrain.
The MTE Converter that can convert Unity3D terrain component into mesh-terrain(s).
The MTE Editor that can edit a mesh-terrain, including three height tools, a texture painter, a vertex color painter, an object painter, a grass painter, a flow-map painter and a mesh toolbox.
A mesh-terrain is just a mesh with a special terrain shader. MTE provides shaders with 2/3/4/5 layer textures and 2-12 layer textures based on texture-array. One mesh-terrain only uses one drawcall.
There are two kinds of mesh-terrains that can be created:
Legacy: mesh-terrain with 2/3/4/5 blended layer textures.
TextureArray: mesh-terrain with 2 to 12 blended layer textures. OpenGLES 3.0+ required since it uses texture array.
Create a texture-array based mesh-terrain
Features of texture-array based mesh-terrain:
Support 2 to 12 layers.
Splat textures are provided as texture array(s).
Every slice of the texture array is tightly packed by texture types.
Texture sample instruction number is stable. The performance differs just a little whether a mesh-terrain uses 4 or 12 layers.
Create a texture-array mesh-terrain directly
Doesn't support create mutiple tiled mesh-terrains or create from a height map.
You can create a texture-array mesh-terrain directly by using the MTE Creator. The MTE Creator can be opened at menu Window/Mesh Terrain Editor/Creator. Then click the TextureArray tab button.
Name
Name of the created mesh-terrain
File Format
File format of created mesh: *.obj, *.asset or *.fbx. It's recommended to use *.asset or *.fbx if the mesh has more than 120*120 vertices.
Output dir
The directory path that the mesh-terrain directory will be created in. All generated contents of the mesh-terrain will be put in OutputDir/Name/. The directory should be a child directory of /Assets
Create prefab
If checked, a prefab of the mesh-terrain will be created and instantiated in the scene. Otherwise the mesh-terrain will be created directly in the scene. It's recommended to create a prefab for the mesh-terrain.
Choose a shader type for the mesh-terrain. Note using wrong type that is not supported by current project will make the created mesh-terrain pink or invisible. For example, don't use URP shader type if you are working in a project using builtin pipeline.
Layer Count
the number of texture layers of mesh-terrain. Only 4 different layer textures can be used in MTF Free.
TextureArray
According to selected Texture Array Mode, 1st and 2nd Texture arrays can be:
Albedo at 1st: Specify Albedo(RGB) texture array
AlbedoMetallic at 1st: Specify Albedo(RGB) Metallic(A) texture array
RoughnessNormalAO at 2nd: Specify Roughness(R) Normal(GB) AO(A) texture array.
Specify the size of the weight map(s). This determines the quality of the painted texture: bigger size means better quality but more memory will be consumed. This can be adjusted later with the Texture Adjuster.
Layer Texture Tilling
Specify how many times a layer texture will be tiled along a direction. This value can be adjusted later in the material editor of the mesh-terrain.
Vertex Count
Specify the number of vertices along an axis (x/z) direction.
Mesh Size
Specify the size of the mesh-terrain. It is exactly the bounding(AABB) size in x-z plane.
Base Height
The lowest height of the vertices in the mesh-terrain.
When finished, the mesh-terrain will be placed in the output dir. And the mesh-terrain will be instantiated in the scene.
Create a 2-12 layers texture-array mesh-terrain by converting Unity3D terrain
You can convert a Unity3D terrain into a mesh-terrain with MTE converter. The MTE Converter can be opened at menu Window -> Mesh Terrain Editor -> Converter. Or just right click on the terrain component header, choose Convert to mesh-terrain.
Name
Name of created mesh-terrain
Output dir
The directory that the mesh-terrain directory will be created in. All generated contents of the mesh-terrain will be put in {OutputDir}/{Name}/. The directory should be a child directory of /Assets.
Use Texture Array
Check this to create texture array based mesh-terrain(s).
Vertex Count
Specify the number of vertices along an axis direction.
Split
(Not supported to be used together with Use TextureArray) Check this to split a Unity terrain into multiple mesh-terrains.
Convert the Unity terrain to a mesh object with default material. No MTE shader applied.
Keep Lightmapping Data
Whether keep light-map on the terrain if they have been baked.
Export Trees
Export trees on original Unity3D terrain.
Use Custom Shader
Display/Choose a customized shader.
Usage Steps
Open the MTE Converter and click Terrain.
Specify the settings. Check Use Texture Array.
Click Begin Converting and wait a moment. It should finish in about 5-15 seconds.
When finished, the mesh-terrain will be saved in the output directory. And the prefab of converted mesh-terrain is instantiated in the scene.
In MTF Free, the Unity terrain can only have 4 different layer textures if you want to convert it to mesh-terrain(s).
Create legacy mesh-terrains (2-5 layers)
features of legacy mesh-terrains:
Layer textures are separated and not packed into texture array(s).
Only support 2/3/4/5 layers.
4 and 5 layers shader samples many textures and may have performance issue on low-end devices.
You can create legacy mesh-terrain in three ways:
Create with MTE Creator.
Create by converting Unity3D terrain with MTE Convertor.
Create by converting an existing mesh with MTE Convertor.
Create mesh-terrains from scratch
You can create mesh-terrains directly by using the MTE Creator. The MTE Creator can be opened at menu Window/Mesh Terrain Editor/Creator, then click the TextureArray tab button. Or just right click in the hierarchy window and select GameObject -> 3D Object -> Mesh Terrain in the context menu.
Name
Name of the created mesh-terrain
File Format
File format of created mesh: *.obj, *.asset or *.fbx. It's recommended to use *.asset or *.fbx if the mesh has more than 120*120 vertices.
Output dir
The directory path that the mesh-terrain directory will be created in. All generated contents of the mesh-terrain will be put in OutputDir/Name/. The directory should be a child directory of /Assets
Create prefab
If checked, a prefab of the mesh-terrain will be created and instantiated in the scene. Otherwise the mesh-terrain will be created directly in the scene. It's recommended to create a prefab for the mesh-terrain.
Shader Type
Choose a shader type for the mesh-terrain. Note using wrong type that is not supported by current project will make the created mesh-terrain pink or invisible. For example, don't use URP shader type if you are working in a project using builtin pipeline.
Layer Count
Specify the number of texture layers of a mesh-terrain. You can only use 4 layers in free version.
Splat textures
Specify splat textures used in the created mesh-terrain.
Normal Maps
Specify corresponding normal maps.
Weight map size
Specify the size of the weight texture(s) formerly known as Control texture. This determines the quality of the painted texture: bigger size means better quality but more memory will be consumed. The size can be adjusted later with the Texture Adjuster
Splat texture tilling
Specify how many times a splat texture will be tiled along a direction. This value can be adjusted per splat texture later in the material editor of the mesh-terrain.
Vertex Count
Specify the number of vertices along an axis (x/z) direction.
Mesh size
Specify the size of the mesh-terrain. It is exactly the AABB size in x-z plane.
Create
Specify how to create the mesh-terrain:
as a plane: all vertices of the mesh-terrain will share the same height.
Base Height
The y position of all the vertices in the mesh-terrain.
from a height-map: sample heights from a height-map (in Alpha8 or R8 format)
Height-Map
The height map texture. Heightmap must be imported as Alpha8 or R8 format.
For a single pixel, 0.0 corresponds to base-height and that 1.0 corresponds to base-height plus total-height.
Note MTE will map the height map to all meshes as a whole when creating multiple copies with the same number of horizontal and vertical meshes.
Base Height
The lowest height of the vertices in the mesh-terrain.
Total Height
The total height of the mesh-terrain. This is used to calculate the actual height because the height-map is always normalized.
from a curve: sample heights from a curve.
Curve
The Curve.
Base Height
The lowest height of the vertices in the mesh-terrain.
Total Height
The total height of the mesh-terrain. This is used to calculate the actual height because the curve is always normalized.
Horizontal
Will the curve along the horizontal(x) direction?
Repeat Count
How many times will the curve repeat on the created mesh-terrain? Note this won't work if the curve is set to be clamped.
Statistics
Vertex Count
number of vertices in created mesh-terrain.
Triangle Count
number of triangles/faces in created mesh-terrain.
Index Count
number of indices in created mesh-terrain. It's three times of the triangle count.
Cell/Tile Size
cell/tile size of the created mesh-terrain.
It is influenced by the mesh size and vertex count.
It has an influence on how much height detail can be represented by the mesh-terrain.
Texel Density
Texel density of created mesh-terrain. Texel density means how many texels are displayed in 1 unit in model space when using specified Control texture size, Splat texture tilling and Mesh size. (Texel density) = (control texture size) / (mesh size) * (splat texture tilling).
Create Multiple Copies
If checked, a specified number of mesh-terrains will be created and tiled automatically. Otherwise only one will be created.
Usage steps
Specify the settings
Click Create. It may takes more than 1 minute to finish if more than 3*3 mesh-terrains are being created.
When finished, the mesh-terrain will be placed in the output dir. And the prefab of created mesh-terrain will be instantiated in the scene.
Create 2-5 layer mesh-terrains by converting Unity3D terrain
You can convert a Unity3D terrain into a mesh-terrain with MTE converter. The MTE Converter can be opened at menu Window -> Mesh Terrain Editor -> Converter. Or just right click on the terrain component header, choose Convert to mesh-terrain.
Name
Name of created mesh-terrain
Output dir
The directory that the mesh-terrain directory will be created in. All generated contents of the mesh-terrain will be put in {OutputDir}/{Name}/. The directory should be a child directory of /Assets.
Vertex Count
Specify the number of vertices along an axis direction.
Split
Check this to split a Unity terrain into 2x2 to 8x8 mesh-terrains.
Convert the Unity terrain to a mesh object with default material. No MTE shader applied.
Keep Lightmapping Data
Whether keep light-map on the terrain if they have been baked.
Export Trees
Export trees on original Unity3D terrain.
Use Custom Shader
Display/Choose a customized shader.
Usage Steps
Open the MTE Converter and click Terrain.
Specify the settings.
Click Begin Converting and wait a moment. It should finish in about 5-15 seconds.
When finished, the mesh-terrain will be saved in the output directory. And the prefab of converted mesh-terrain is instantiated in the scene.
The converted Unity terrain can only use 4 and different layer textures if you want to convert it to mesh-terrain(s).
Create 2-5 layers mesh-terrains by converting an existing mesh
If you got a terrain-like mesh that made with 3DSMax or other modeling software, you can convert it into a mesh-terrain using the MTE converter. The MTE Converter can be opened at menu Window -> Mesh Terrain Editor -> Converter.
Name
Name of created mesh-terrain
File Format
File format of created mesh: *.obj, *.asset or *.fbx. It's recommended to use *.asset if the mesh has more than 120*120 vertices.
Output dir
The directory path that the mesh-terrain directory will be created in. All generated contents of the mesh-terrain will be put in {OutputDir}/{Name}/. The directory should be a child directory of /Assets
Use Existing Mesh
If checked, instead of creating a new mesh by scanning, the original mesh will be adjusted per "Reuse an existing mesh". If the result is incorrect, please convert the mesh manually as described in that section.
Create prefab
If checked, a prefab of the mesh-terrain will be created and instantiated in the scene. Otherwise the mesh-terrain will be created directly in the scene. It's recommended to create a prefab for the mesh-terrain.
Shader Type
Specify shader type that will be used on converted mesh-terrain.
Layer Count
Specify the number of texture layers of a mesh-terrain. Only 4 different layer textures can be used in MTF Free.
Weight map size
Specify the size of the weight map(s), formerly known as control texture.
Vertex Count
Specify the number of vertices along an axis direction.
Import your terrain mesh file into a project. Drag it into the hierarchy.
Open the MTE Converter and click Mesh.
Select the mesh GameObject(the one with a MeshRenderer component)
Specify the settings.
Click Begin Converting and wait a moment. It should finish in about 10-30 seconds.
When it is done, files of the mesh-terrain(including a mesh obj file, a mat file, several control texture file, a prefab file - if you have chosen Create prefab) is placed in the output dir. If Create prefab was checked, the prefab will be instantiated in the scene. Otherwise, a mesh-terrain will be created instead.
In the material editor of the mesh-terrain, assign splat textures and adjust the tilling of them.
Note: The actual number of control textures is determined by layer texture number. 2/3/4 layers result in 1 control texture; 5 layers result in 2 control textures.
Reuse an existing mesh
First, please try using the converter and enable "Use Existing Mesh": it should work most of the time.
You can create a mesh-terrain that can be edited by Mesh Terrain Editor by hand. Here are the requirements:
Requirements for height tools:
The mesh is an obj or asset file.
The mesh uses +Y as it's height growing direction, namely y-up.
The mesh GameObject in the scene has a valid MeshFilter and MeshCollider attached.
Requirements for texture painter and vertex color painter:
The mesh file should contain a layer of uniformly spread uv.
The min/max point of the bounding box in x and z should have the min/max uv. min uv: (0,0), max uv: (1,1).
The mesh object in scene uses a similar shader with those provided by MTE. It is highly recommended that use a material created by MTE creator instead. See also FAQ: Can I change the shader?
Requirements for mesh toolbox:
The mesh is an obj, asset or fbx file.
To convert your mesh to one that can be edited with MTE, just use the tools provided by MTE as described in the next section.
Tools
Many tools are provided to adjust an existing mesh's format, orientation, uv and pivot(origin), as well as tools to create or adjust weight maps.
Q: What if I'm using .max, .blender or other formats that MTE doesn't support?
A: Use the Mesh Saver to save your mesh as a supported format by MTE.
Mesh Saver is a tool that can save a single mesh as *.obj, *.asset or *.fbx file. It is located at menu item Window -> Mesh Terrain Editor -> Tools -> Mesh Saver.
Drag your mesh object in scene to "Mesh".
Choose a file format you want to use: *.obj, *.asset or *.fbx. It's recommended to use *.asset if the mesh has more than 120*120 vertices.
Click SaveAs to save the mesh to another file.
Q: What if my mesh is z-up? A: Use Mesh Z-up to Y-up Converter.
Mesh Z-up to Y-up Converter is a tool that can convert a z-up mesh to a y-up one. It is located at menu item Window -> Mesh Terrain Editor -> Tools -> Mesh Z-up to Y-up Converter
Drag your mesh file, or exactly the mesh inside it, in the project window to the converter window.
Click Begin Converting to convert the mesh to y-up.
Click apply to save the mesh to file. Or, if you find something wrong, Click revert to cancel the modification. Again, please always remember to use a version control system to back up your file!
It just rotates the mesh -90 degrees around z axis. And this operation doesn't work for all kinds of z-up meshes. You can try to rotate the mesh in scene view by assign rotation to (-90, 0, 0) to see if it is y-up after that. If it is, then this converter will work for your mesh.
Q: What if my mesh's uv is not uniformly spread from (0,0) to (1,1)? A: Use Mesh UV Adjuster.
Mesh UV Adjuster is a tool that can normalize uv of a mesh and invert u or v of a mesh. (uv means the texcoord of a mesh.) It is located at menu item Window -> Mesh Terrain Editor -> Tools -> Mesh UV Adjuster
Drag your mesh file, or exactly the mesh inside it, in the project window to the adjuster window.
Click Normalize to normalize uv: spread uv uniformly from (0,0) to (1,1) on the mesh.
Drag your mesh to the scene. Create a temp mesh-terrain and use its material for your mesh. Then try using the texture painter to paint on your mesh object. If the painting position is different from the mouse position. Try Inverting u or v of it:
Click Invert U to invert u of mesh texcoord: u becomes 1 - u.
Click Invert V to invert v of mesh texcoord: v becomes 1 - v.
Click apply to save the mesh to file. Or, if you find something wrong, Click revert to cancel the modification. Again, please always remember to use a version control system to back up your file!
Q: What if I want to adjust the pivot point of a converted mesh? A: Use Mesh Pivot Adjuster.
Mesh Pivot Adjuster is a tool that can offset the pivot point, the (0,0,0) point in mesh space, of a mesh. It is located at menu item Window -> Mesh Terrain Editor -> Tools -> Mesh Pivot Adjuster
Drag the mesh into the scene first, so you can preview the changes.
Drag the mesh in the project window to the adjuster window.
Click one of the offset buttons to move mesh towards specific directions by its AABB box size in that axis.
Click apply to save the mesh to file. Or, if you find something wrong, Click revert to cancel the modification. Again, please always remember to use a version control system to back up your file!
Q: Where is Control (RGBA) and Control Extra (R) texture? A: Use Control Texture Creator.
Control Texture Creator is a tool that can create control textures (SplatAlpha 0/1.png) used by MTE shaders. It is located at menu item Window -> Mesh Terrain Editor -> Tools -> Control Texture Creator
Select size of the control texture(s). Select the number of splat-textures.
Click Create. Created control textures will be saved to Assets/.
Q: How to resize/flip an existing control map? A: Use Texture Adjuster or click on the Adjust button beside the control map property.
Texture Adjuster is a tool that can resize or flip a texture. It is located at menu item Window -> Mesh Terrain Editor -> Tools -> Texture Adjuster
Select size of the control texture. Use original size if you don't want to resize.
Select a filter mode when resizing.
Drag the weight map to Texture field.
Check "Control Texture", since we are adjust a control/weight map.
Select a flip mode. If you don't want to flip the texture, select None.
Click Begin Converting. Adjusted control texture will be saved to Assets/. You can then replace the old control map with the new one.
Q: How to create or modify the albedo/roughness/normal/AO texture arrays? A: Create a TextureArraySettings asset and create two kinds of texture arrays with it.
TextureArraySettings is an asset that stores layer texture list and other required information when creating texture arrays. It can be created via menu item Asset > Create > Mesh Terrain Editor > TextureArraySettings
Texture Array Mode
4 modes: Color, Color and Normal, PBR and PBR(Metallic). One or two texture array(s) will be created per mode.
Under Color mode, only one Color texture array will be created.
Under Color and Normal mode, one Color texture array and one Normal texture array will be created.
Under PBR mode, two texture array will be created: Albedo and RoughnessNormalAO.
Under PBR(Metallic) mode, two texture array will be created: AlbedoHeight and RoughnessNormalAO.
Per-array settings
You can set detailed properties for each texture array:
Compress Whether compress the texture array
Format The texture format of the texture array.Make sure a format that supports four RGBA channels is chosen for AlbedoMetallic and RoughnessNormalAO texture array.
In program, this is TextureFormat,
but only types that are supported by current active build target are listed.
See Default texture formats by platform for details.
Quality The compression quality of the texture array. Only makes sense when Compress is enabled.
In program, this is TextureCompressionQuality.
Wrap Mode The texture wrap mode of the texture array.
In program, this is TextureWrapMode.
Filter Mode The texture filter mode of the texture array.
In program, this is FilterMode.
Aniso Level The anisotropic filtering level of the texture array.
In program, this is Texture.anisoLevel.
Name
Name of the created texture arrays
Texture Size
Specify the texture size of the texture arrays. Every texture assigned must have the same size as specified here.
Layer Number
the number of texture layers inside the texture array. 2 to 12 layers texture array can be created here, but only 4-layer texture arrays can be used in MTE Free.
Layer Textures List
albedo, roughness, normal and AO textures. One row represents one layer. Requirements:
Color/Albedo textures must be sRGB.
Normal, roughness and AO textures must be linear(not sRGB).
Normal maps's texture type in its importer setting must be Normal map.
Usage Steps
Specify the settings and assign all textures. All texture slots should be assigned and cannot be empty.
Click Create.
When finished, two texture arrays will be placed aside the settings asset.
Existing texture arrays can be updated, by changing its settings and create again.
For example, if you want to change one texture in the texture arrays. Just select the settings asset of the texture array, and assign a new texture. Then click Create to update the texture arrays.
The meaning of each channel of two texture arrays:
They differs according to selected Texture Array Mode:
Albedo texture array: RGB is albedo/base color/diffuse
AlbedoMetallic texture array: RGB is albedo/base color/diffuse, Alpha is metallic
RoughnessNormalAO texture array:
R is Roughness
GB is Normal, tangent space normal's XY, scaled from [-0.5, 0.5] to [0, 1] to be saved in textures
A is ambient occlusion
Normal texture-array: RGB is normal
Note You can select the settings asset and press Ctrl + D to create a copy of this asset to reuse existing texture settings.
Note Please keep the settings asset file next to the texture array created, its used by MTE editor to find layer textures. Also don't change the Name parameter of texture array settings when you finished creating a texture array, which is also required to find layer textures. Otherwise the texture array painter won't be able to load textures from a mesh-terrain that uses a texture array created from this settings asset.
Edit mesh-terrains
The height, layer-textures and vertex colors of a mesh-terrain are editable. MTE also provided a mesh toolbox to move multiple vertices freely or remove vertices of the mesh.
Switch button: click to switch on/off MTE editor functions without closing the editor window.
Key button : open the account window.
Settings button: open the settings window of Mesh Terrain Editor. The settings window can also be open via menu Window -> Mesh Terrain Editor -> Settings
Help button: open this documentation and move to corresponding topic where the icon is placed.
The Filter
The mesh-terrain filter is used to determine which GameObject should be considered to be a mesh-terrain that will be edited by MTE. Only mesh-terrains that match the filter, namely have the same layer and tag, will be edited. If no mesh-terrain matches, a warning message will be shown.
Usage
Set the layer and/or tag of the mesh-terrains you want to edit and click the Refresh Button. And after adding a new mesh into the scene or opening another scene, you need to click the refresh button to re-filter GameObjects in the scene manually.
Click the down triangle button, to open a list of GameObjects that passed through the filter. You can check if your mesh-terrain passed the filter here.
Note It is highly recommended to create a separated tag or layer for mesh-terrains to to avoid cases that regular meshes mixes with mesh-terrains, which may cause many problems. Such as,
A regular mesh is unexpectedly modified and saved by MTE but its format is not supported;
A MTE Free user cannot edit any mesh-terrain with MTE editor since 2 regular mesh have already passed the filter and became editing targets, but MTE Free users can not edit 2 mesh-terrains at once.
Note Textures used by filtered mesh-terrains will be collected into the texture list displayed in the texture painter.
MTE Free users can only edit 2 mesh-terrains at once, but which 2 are not determined. Please use a definite tag and layer to make sure your GameObject(s) can pass through the filter.
Height Tools
Use first three height-tools to modify the height of vertices of the mesh-terrain.
Raise and lower
Up/Down
This determines whether we are raise or lower the height. Press Space to toggle between up and down.
Size
The brush size determines the range in which vertices will be modified. hotkeys: -+
Strength
The brush strength determines how much height will be added to the vertices. hotkeys: []
Falloff
A curve that determines how much fall-off when apply the height changes to the vertices. Click to modify it. Curve value at 0(left-most) means the center of the brush, curve value at 1 (right-most) means the border of the brush. This will be used to calculate the actual height offset that will be added to the vertex position Y. (Height Offset) = Strength * Falloff * Direction
Auto Save Mesh
See Auto Save. Note if Auto Save is not enabled, you need to click the Save button below to save the mesh, otherwise it won't be saved even you have pressed Ctrl+S!
Usage Steps
Set settings.
Click and drag mouse to raise and lower height on mesh-terrains in the scene view.
Paint height
Height
The height that will be applied to editing vertices.
Size
The brush size determines the range in which vertices will be modified. hotkeys: -+
Speed
The brush speed determines how quick the height of editing vertices will be changed to current height. Value 1 means immediately. hotkeys: []
Auto Save Mesh
See Auto Save. Note if Auto Save is not enabled, you need to click the Save button below to save the mesh, otherwise it won't be saved even you have pressed Ctrl+S!
Usage Steps
Set settings.
Hold Ctrl and move mouse to sample height that will be painted.
Click and drag mouse to paint sampled height on mesh-terrains in the scene view.
Smooth height
Size
The brush size determines the range in which vertices will be modified. hotkeys: -+
Speed
The brush speed determines how quick the height of editing vertices will be smoothed. Value 1 means immediately. hotkeys: []
Auto Save Mesh
See Auto Save. Note if Auto Save is not enabled, you need to click the Save button below to save the mesh, otherwise it won't be saved even you have pressed Ctrl+S!
Usage Steps
Set settings.
Click and drag mouse to smooth height on mesh-terrains in the scene view.
Paint textures
Mode
Filtered: paint on all mesh-terrains that match the tag and layer of the filter.
Selected: paint on a selected mesh-terrain with custom UV, ignore the filter.
Note: after you have started painting on the same mesh, don't switch mode. The behavior hasn't been well tested and may cause error.
Brushes
Choose a brush from this brush list. When painting a texture, a brush act as a mask when apply the texture to the mesh-terrain.
Textures
Choose a texture from this texture list. When the filter is refreshed, all splat-textures used by mesh-terrains will be collected into the texture list. Only mesh-terrains using the selected texture can be painted. You can change the splat-textures in the material editor of a mesh-terran.
Hotkey is available: press NumPad Number 0/1/.../8 to choose a layer texture quickly.
Settings
Size
The brush size determines the range of the brush. hotkeys: -+
Flow
The brush flow determines how quick the texture will be paint to the mesh-terrain. Value 1 means immediately. hotkeys: []. Right click the label "Flow" to toggle slider mode between regular and logarithmic. Under logarithmic mode, you can adjust the flow more accurately when using a very small flow value.
Direction
The brush direction determines the orientation of brush mask. It won't impact the direction of painting texture. Hold Ctrl and scroll to adjust direction.
Usage Steps
Set settings.
Choose a brush and texture.
Click and drag mouse to paint chosen texture with the brush on mesh-terrains in the scene view.
Capture a screenshot of a mesh-terrain from a top-down perspective into a png picture.
A common usage is to create a base-map. It's a lower resolution composite image of the weight-blended layer textures. See this post for more information.
Customize Brush
You can add or remove the brushes by adding/removing images in EditorResources\Brushes. Importer settings for brushes should be like this:
Then click to refresh the brushes.
Importer settings of a control texture
Importer settings of a control texture (SplatAlpha 0/1.png) should be
Otherwise some error will occur when you trying to paint textures:
When sRGB(Color Texture) is incorrectly checked:
Dark area is rendered when two texture meet. Please refer to FAQ 13.
When Read/Write Enabled is not checked:
Get error UnityException: Texture 'SplatAlpha 0/1' is not readable, the texture memory can not be accessed from scripts.
When Format is not set to RGBA:
Rendering result is abnormal: the mesh becomes very dark or light or some layer has no effect.
After generating control maps when creating a mesh-terrain, MTE has set the import settings correctly. But some 3rd-party plugins or editor scripts may change the settings.
Note If you want to use a custom control texture not created by MTE, that's really impractical, See FAQ 14.
Wrapper
Usage Steps
Set a shape collider;
Move, scale and roate the shape object;
Click Wrap button, the mesh-terrain will be deformed accroding to the shape object.
Paint vertex colors
Brushes
First one is the painter. Second one is the eraser: erase the vertex color to white(R:1.0 G:1.0 B:1.0 A:1.0), the erased color is fixed to white.
Settings
Color presets
You can save four color in the presets. They will be preserved permanently. Click ▲ to save the current color to that slot. Click the colored square will in turn set the current color to the saved color.
Color
The current color you are painting.
Single Channel
If checked, only the selected channel will be painted. The number on the right is the current value of the selected color.
Size
Specify the size of the brush. hotkey: -+
Speed
Specify how fast will the vertex color be painted to the vertex color. hotkey: []
Intensity
Use this to paint a darker/lighter color than the current color. If value lower/bigger than 1.0 is specified, a darker/lighter color will be used.
Tools
Fill Use this to fill all mesh-terrain with the selected color.
Randomize Use this to fill all mesh-terrain with randomized colors.
Attach VertexColor Use this to attach vertex color to a mesh-terrain. This tool can also be used to rebuild(clear) the vertex color of a mesh-terrain.
Usage Steps
At the beginning, you need to add a VertexColorInitializer component to the gameObject with mesh:
Just select the gameObject and click Attach VertexColor.
Specify the settings.
Click and drag to draw on the vertex-colored mesh-terrains.
Changes to vertex colors will be saved instantly.
Warning MTE editor will not paint if the vertex color count in the asset file doesn't match the vertex count of the mesh. See also this post.
Note If you want to save the addition of vertex color component to the prefab, do remember to click Apply and Ctrl+S in the inspector of the mesh-terrain. By clicking Attach VertexColor, the addition only applies to the instance of the mesh-terrain in the scene.
Warning Do not check "Optimize Mesh" in the mesh importer settings, even if you have finished editing the vertex colors. The optimization by the mesh importer will possibly change the vertex count and makes the vertex colors not the same number as the vertex. This causes problems when editing and saving the vertex colors in the vertex color asset file. Also this will make the vertex colors not loaded at runtime.
Grass Painter
Grass painter is not provided in MTE Free.
Grasses
Grass detail list
select a prototype of a grass that will be painted
Grass prototypes defined in GrassLoader's Grass Detail List will be shown in this list.
Settings
Size
Specify the size of the brush. hotkey: -+
Density
Specify the density of the brush. (When it is small enough, a single grass will be paint.) hotkey: []
Number
Display the number of grasses that will be painted.
Reduction
Specify how many grasses will be removed when erasing grasses by clicking: 100 means all of the grasses inside the brush, 50 means 50% of the grasses.
Direction
Specify the direction of grasses being painting. (default: Random)
When "Random" is not checked, hold Ctrl and roll the scroll wheel to specify the rotation of subsequent grasses that will be painted.
When "Random" is not checked, hold Ctrl and roll the scroll wheel to change the rotation of existing grasses inside the brush.
Allow Overlap
When checked, allow a grass to overlap another.
Tools
Create GrassLoader Create a GrassLoader GameObject. This tool will create a Assets/Grass.asset file used to save grass instance data.
You can move it around after it is created.
See also FAQ: What is done when attaching GrassLoader? This tool is only avaliable when there is no GrassLoader in opened scene.
Attach GrassLoader Attach a GrassLoader component to selected GameObject, or try to fix the GrassLoader component on it. Note you cannot attach a GrassLoader to a GameObject with a MeshFilter. This tool is only available when there is no GrassLoader in opened scene.
Bake Point Cloud Convert the painted grass point cloud to actual meshes. You will not be able to modify the point cloud after baking.
Usage Steps
(preparation for each scene)
Create an empty GameObject as the root of your grasses。
ClickAttach GrassLoader, choose a proper place (recommended aside the mesh-terrain file) for Grasses.assetGrassLoader, an GrassLoader will be attached to the GameObject.
Create GrassDetailList asset via menu Assets\Create\Mesh Terrain Editor\Grass Detail List
Select GrassDetailList asset and add grass prototypes in inspector.
Click the button to add new grass prototype.
Set the name, material, random min/max width/height and type(one, three quads or custom mesh) of grass prototypes.
Right click the blank space of a grass prototype to open context menu to delete it.
Assign GrassDetailList asset to GrassLoader's Detail List.
Click the refresh button on editor, added prototypes will be displayed in the list.
Select a grass prototype.
Click and drag to paint grasses. Hold Shift to erase grasses.
Press PageUp to undo and PageDown to redo.
IMPORTANT To save the scene containing any grass, do not press Ctrl + S. Instead, select the gameObject with GrassLoader, click 4. Clear Preview Grassses & Save Scene in the inspector. Otherwise the preview-only grasses will be saved into the scene.
To baking lightmap for grasses, use the buttons on the inspector of GrassLoader:
Just press 1. 2. 3. 4. and all done.
Grass Detail List
list of grass prototypes, storing editor settings of each grass prototype
Grass Instance List
list of grass instance, storing point cloud data used to generate actual grass meshes at runtime
Load GrassLoader's grass list from grasses.asset and re-generate preview grasses.
2. Bake Lightmap
The same as the Generate Lighting in the Light Window.
3. Save lightmap data
Save lightmap data to grasses.asset.
4. Clear Preview Grassses & Save Scene
Remove preview grasses from the scene and save the scene.
Note Only one GrassLoader GameObject is allowed for each scene.
Note The height of grasses will be updated when you change the height of mesh-terrains.
Note If you find generated grass floating above ground, check if any transparent mesh collider is above the ground. If such colliders passed through the filter, they will block the brush.
Object Painter
MTE Free users can only use two prefabs.
Prefab
Prototype List
Select a prefab to paint.
Prototypes defined in ObjectLoader's Detail List will be shown here.
Settings
Size
Specify the size of the brush. hotkey: -+
Number
Specify the number of object that will be painted when mouse is clicked. hotkey: []
Reduction
Specify how many object will be removed when erasing objects by clicking: 100 means all of the objects inside the brush, 50 means 50% of the objects.
Direction
Specify the orientation of object inside the brush. (default: Random)
When "Random" is not checked, hold Ctrl and roll the scroll wheel to specify the rotation of subsequent objects that will be painted.
When "Random" is not checked, hold Ctrl and roll the scroll wheel to change the rotation of existing objects inside the brush.
Allow Overlap
When checked, allow an object to overlap another.
Usage Steps
(preparation for each scene)
Create an empty GameObject as the container of objects and drag it into the Container field in the editor.
Create ObjectDetailList asset via menu Assets\Create\Mesh Terrain Editor\ObjectDetailList
Select ObjectDetailList asset and add object prototypes in inspector.
Click the button to add new object prototype.
Set the name, prefab, random min/max scale of object prototypes.
Right click the blank space of a prototype to open context menu to delete it.
Assign ObjectDetailList asset to ObjectLoader's Detail List.
Click the refresh button on editor, added prototypes will be displayed in the list.
Select a object prototype from the list.
In the scene, Click and drag to paint objects. Hold Shift to erase. Objects will be added as children of the container.
Press PageUp to undo and PageDown to redo.
Note Prefab without collider cannot be paint. Please add a collider to the prefab when painting, which can be removed later when finished painting.
Note The height of object will not be updated when you change the height of mesh-terrains, this is to be implemented in a future release.
Flow Painter
Flow painter is not provided in MTE Free.
Flow-map used by MTE follows the same convention of Valve Flowmap
Mode
Directional: Flow direction and strength is fixed.
Movement: Normalized flow speed and direction is determined by mouse movement.
Pinching/Inflating: Pinching or inflating flow.
Vortex: Vortex flow.
Direction (for Direction mode)
Click/Drag to adjust strength direction.
Strength: normalized flow strength
Angle: direction angle in degrees
short-cut direction buttons
Settings
Size
Specify the size of the brush. hotkey: -+
Speed
Specify how fast will brush change old direction on the flow-map to current one. (This is not the flow speed.) hotkey: []
Tools
Create Flowmap Create a flow map using current strength and direction. Created flow-map is output to FlowMap.png. Created flow-map is now fixed to 512x512. More options will be added in a future release.
Usage Steps
Make sure the material of the water surface contains a property named _FlowMap. And it is Read/Write Enabled in its import settings. MTE will edit this flow-map.
Also make sure that your direction is designed like this: +z is the north direction(90°). +x is the east direction(0°). If you found the flow direction is the opposite in Z, try adjusting the shader. Please refer to shader MTE/Surface/WaterFlow provided by MTE.
Directional: Select/Input a strength and direction. You can also hold Ctrl and scroll to adjust the direction.
Movement: Select/Input a strength.
Pinching/Inflating: Select/Input a strength. PressSpace to toggle between pinching and inflating.
Vortex: Select/Input a strength. PressSpace to toggle the direction of rotation.
Click and drag to paint flow.
Note Remember to move created FlowMap.png to a proper place, otherwise it will be overwritten when after pressing Create Flowmap.
Note Flow strength is shared among all modes.
Mesh Toolbox
Warning If auto-save is enabled, your changes to the mesh will be saved instantly and can never be undone. It is recommended to turn off auto-save when using mesh-toolbox.
Settings
Size
Specify the size of the brush. hotkey: -+
Tools
Vertex
Click and drag to select vertices. Hold shift to remove vertices from selection.
Press Enter⏎ to confirm and begin moving the selected vertices with the position handle.
Press Esc to re-select vertices.
When any vertex is selected, click Delete to delete selected vertices.
Note Isolated vertexes in the mesh will not be removed, only triangles are removed.
Note You cannot cut holes on a vertex-colored mesh-terrain.
Note After saving the mesh, MTE is unable to fill the hole. You can only undo the deletion before saving.
Quad
Press S to toggle split direction of hovered quad.
Paint textures(array)
You can only use 4 different layer textures in MTE Free.
Usage is the same as Texture Painter, except that this editor requires the mesh-terrain's material uses a texture array based shader: MTE/*/TextureArray.
A common issue is that no texture is displayed, which is very likely caused by:
The texture array settings asset file is not placed next to the texture array file. This makes MTE editor lost track of source textures being used to create the texture array.
The Name parameter of texture array settings asset has been changed after creating the texture array. This also make MTE editor lost track of source textures being used to create the texture array.
Shaders
Categories
MTE shaders are categorized by the rendering pipeline: Built-in and URP.
Builtin (shaders for built-in render pipeline)
├── Standard (standard shaders using partial PBR shading model)
│ ├── 2/3/4/5Textures (2-5 layer shaders: support per-layer diffuse map, normal map and smoothness map/value. The 5th layer shares tilling/offset with 4th layer.)
│ ├── 6/7/8Textures (6-8 layer shader: don't use as the performance is very bad)
│ ├── Packed (experimental height-blending shader support 4 or 8 layers, "Packed" means pack height and albedo into one single texture)
├── Surface (surface shaders using Lambert or Blinn-Phong shading model)
│ ├── 2/3/4/5Textures (2-5 layer shaders: support per-layer diffuse map, normal map and specular color. The 5th layer shares tilling/offset with 4th layer.)
│ ├── 6/7/8Textures (6-8 layer shader: don't use as the performance is very bad)
│ ├── Grass (demo-only grass shaders)
│ ├── Vertex-colored (demo-only shaders using vertex-color)
│ └── WaterFlow.shader (demo-only water shader using flow-map)
├── Specialized (special shaders for certain old GPU)
├── Unlit (unlit shaders, support basic realtime shadow and baked light-map)
├── TextureArray (Texture-array-based shaders: support 2~12 layers)
├── MTECommon.hlsl (shared code for builtin-RP shaders)
└── MTECommonBuiltinRP.hlsl (shared code for builtin-RP shaders)
URP (URP shaders, support PBR shading model of metallic workflow)
├── URP7 URP 7.x shaders, remove if not compatibile with your project
├── URP10 URP 10.x shaders, remove if not compatibile with your project
├── URP12 URP 12.x shaders, remove if not compatibile with your project
├── URP14 URP 14.x shaders, remove if not compatibile with your project
│ ├── 2/3/4/5Textures.shader (2-5 layer shaders: support per-layer diffuse map, normal map and smoothness map/value.)
│ ├── 5Textures_DisplayNormal.shader (utility shader used to display blended normal output)
│ ├── Grass.shader (demo-only grass shader)
│ ├── VertexColor.shader (demo-only shaders using vertex-color)
│ └── TextureArray_xxx.shader (texture-array-based shaders: support 2~12 layers)
└── MTECommonURP.hlsl (shared code for all URP shaders)
If using URP, please delete URP folders of different version,otherwise errors caused by shader name may occur. Shader's name Shader.name)doesn't differ for diffent URP version folder.
Don't use a shader that doesn't apply to the active render pipeline of your project, otherwise the result will be pink.
UI
Texture Array based shader UI - MTETextureArrayShaderGUI
All shaders using texture array use this UI.
Open In ASE
Open the shader in ASE canvas to view and edit it.
The number of layers will be used. Modify this will add weight-maps as needed. Existing weight-maps will not be deleted.
Weight Maps
The weight maps here are for preview only. Don't modify them manually.
Click to adjust the control texture's size and orientation. If the shader uses multiple weight maps, make sure to use the same size for all of them before painting textures.
Toggle to enable/disable Normal Intensity feature.
Toggle to enable/disable Metallic feature. When enabled, shader will enable keyword ENABLE_METALLIC and use metallic, which is stored in 1st texture array's alpha channel, to render metallic luster.
Toggle to enable/disable per-layer UV scales feature. When enabled shader will enable keyword ENABLE_LAYER_UV_SCALE and use a float array set by LayerUVScalesHolder component. You have to add a LayerUVScalesHolder component to use and adjust per-layer UV scales.
Legacy shader UI - MTEShaderGUI
All shaders using 2/3/4/5 separated textures use this UI.
You can open them in ASE canvas via clicking Open In ASE at the top of shader UI, to customize the shader in ASE.
The refresh button is used to generate an albedo&smoothness texture for each layer used by materials enabled Smoothness Texture.
Albedo texture's RGB channel and Smoothness texture's Alpha channel will be merged into one single albedo&smoothness texture, which will be sampled in the shader.
For each layer, you can
Assign its albedo(color/diffuse), smoothness and normal texture; The Albedo&Smoothness texture is for preview only. Use the refresh button above to generate it.
Set its tilling and offset.
Set its constant smoothness, this value will be multiplied with sampled value from smoothness texture in shaders support Smoothness Texture.
Set its normal intensity, only available for shaders with normal maps and enabled Normal Intensity.
You can add one extra layer by clicking +.
Click Adjust next to the Control texture to open the Texture Adjuster, to adjust the control texture's size and orientation. If the shader uses multiple control textures, make sure to use the same size on all control textures.
(Only available for URP and Standard.) Toggle on/off Enable Smoothness Texture to enable/disable Smoothness Texture feature.
Toggle on/off Enable Normal Intensity to enable/disable Normal Intensity feature.
(Only available in Debug Mode.) You can toggle on default shader UI with (debug)Show Default Shader GUI at the bottom. Note the default shader UI might conflict with MTE's one.
Note For tiled mesh-terrains, please use the Tile Container UI, located at the inspector UI of the root GameObject, to toggle on Smoothness Texture feature and refresh albedo&smoothness textures.
Note For tiled mesh-terrains,
Use the Tile Container UI, located at the inspector UI of the root GameObject, to toggle on Smoothness Texture feature and refresh albedo&smoothness textures.
albedo&smoothness textures are determined by first tile, whose name ends with "_00_00", and all mesh-terrain tiles will shared the same layer textures.
If the shader has been modified or is a custom one, extra properties will be displayed at the bottom of UI.
History, Undo and Redo
All editing operations on the mesh or textures are undoable. Use PageUp to undo and PageDown to redo. Changes to the parameters on Editor GUI are not undoable.
You can use the history viewer(at menu Window/Mesh Terrain Editor/Tools/History Viewer) to inspect editing history.
Note On Mac, use Fn+↑ to undo, Fn+↓ to redo
Note Undo/redo data will be cleared after you saving the mesh.
Settings
General Settings
Open Settings window via menu Window -> Mesh Terrain Editor -> Settings. Or click the settings button on the top of MTE Editor to open it.
Tools
Toggle those buttons to show or hide main tool buttons.
Use Compact GUI
Check this if you want the GUI elements to be compact like:
Point size
Set the size of (blinking) dots. The actual size can be previewed in the scene.
Show affected vertexes
Check this if you want to display the dots representing the vertexes being modifying.
Flash affected vertexes
Check this if you want to make the dots flash
Use circular brush
Toggle this to switch between circular and rectangular brush.
Show brush range
Check this if you want to see the border of the brush. (from +y to -y direction)
Show point normal
(for debug) Check this if you want to see the normal of editing vertexes.
Brush unit size
Set the size of one unit of the brush. By default, 1 unit = 1 tile size. The actual size can be previewed in the scene.
Use tile size
Check this if you want to use the tile size (calculated, maybe incorrect or inaccurate) as the brush unit size.
Mesh Smooth Angle
the smooth angle when calculating normals of mesh when MTE creating or saving mesh-terrains.
Language
Select the language of UI.
Auto Save Mesh
Check this if you want the changes to mesh be saved automatically. But there are some essential points should be aware of:
Modified mesh-terrain(s) will be automatically saved when mouse is released. If the editor becomes noticeably laggy, please disable *Auto Save Mesh*. Note undo/redo is disabled when auto-save is enabled.
Once a auto-save happens while you are editing mesh-terrains, you can no longer undo your changes.
Undo/redo will be unreliable when auto-save every X minutes is enabled.
Debug Mode
Check this if you want to see MTE logs in the Console window about what is happening. It also enables some debug-only functions. It may harms performance though.
Note A dot will be drawn at the center of the scene, showing the size of the dot.
Note A rectangle will be drawn at the center of the scene (please click the +y cone to see that from +y to -y), showing the size of one brush unit.
Hotkeys
All built-in hotkeys are displayed in settings page Hotkey.
Account Settings
Once you have logged in to an eligible account, you can use all functions of MTE Pro. You will be logged in automatically in the future.
Customize UI Language
The default language is English. But you can adjust the language and text content of the GUI.
Change the Language:
Open Settings window and change the language. Changing language will close all MTE windows and recompile your scripts. After that, the language will be changed to the one you just selected.
Change UI Contents:
Locate string table files in EditorResources\Languages\. There are two string table files: en-US.xml and zh-Hans.xml. Choose one you want to modify.
Modify string file: For example, modify
<Warning_Confirm>Are you sure?</Warning_Confirm>
to
<Warning_Confirm>You need to confirm this operation! Are you sure?</Warning_Confirm>
Use a new language:
Copy en-US.xml and rename it to, for example, ja-JP.xml or es-ES.xml.
Translate the text in the copied string table, like what has been described in Change UI Contents.
Reimport MTE.dll.
After the import is finished. Open Settings window and change the language to the one you just added.
API
You can use the API in namespace MTE in your plugin editor scripts.
Write a plugin for MTE-Editor [MTE Pro only]
Just implement interface MTE.IEditor in a class. MTE Editor will load your implementation automatically. Please refer to existing IEditor implementations in MeshTerrainEditor\Plugins\Editor.
I didn't see the Window/Mesh Terrain Editor in the menu!
Please open the importer setting of Editor/MTE.dll. Then check if the Platform Settings->CPU is AnyCPU or corresponds to the using Unity3D. If you're not sure, just try changing that.
Why pressing Ctrl+Z will not redo?
Use PageUp to undo and PageDown to redo. These keys are used instead of the famous Ctrl+Z because the undo system provided by Unity3D is just TOO SLOW for big data such as a big array. We will try to make Ctrl+Z/Y work in a future version. If you think this is annoying, please feedback.
Please open Settings/Hotkey to confirm hotkeys.
I cannot edit. Not seeing flashing points or the brush texture/circle/rectangle.
Try disabling and enabling the MeshCollider component. This problem seems to be caused by some interal bug of Unity physic system. It may happen when you reimport/save the mesh-terrain obj file.
Can I change the shader?
Sure. But if you want to continue editing the mesh-terrain in MTE, you must follow conventions below.
To use the height tools(raise/lower, paint height, smooth height), make sure that the object has a valid mesh and MeshCollider attached.
To use the paint textures tool, make sure that the shader contains a Texture2D property named _Control and it is all red in the beginning. If you use a second control texture, the property name of it must be _ControlExtra and it is all black in the beginning. But I suggest you use the shaders provided by MTE as templates. The splat textures' property name should be _Splat0/1/2/3/4. If you are using a bumped shader, the property name of the normal textures should be _Normal0/1/2/3/4. We suggest you use the shaders provided by MTE and modify them as you see fit.
To use the vertex painter tool, make sure that the gameObject have a VertexColorInitializer component attached. (This script component is automatically attached to the gameObject using the button on the editor window. See the description of this tool.)
To use the flow painter tool, make sure that the shader uses a Texture2D property named _FlowMap as the flow-map.
To delete vertices with the mesh toolbox, make sure that the gameObject selected does NOT have a VertexColorInitializer component attached: you cannot cut holes on a vertex-colored mesh-terrain.
Hotkey not working!
Does the scene view or the MTE editor has the focus? If not, the hotkey will not work.
Have you closed the IME? It's the IME that is disturbing the hotkey handling routine and makes it not work. Close it.
I cannot unselect the mesh-terrain. / I cannot select other gameObjects.
Please select other gameObject in the hierarchy window. MTE locked the selection in the scene view window to forbid mis-operation when editing the mesh-terrain.
What is done when adding vertex color component?
This operation will create a asset file of the vertex colors aside the mesh file. And a VertexColorInitializer component will be attached to the gameObject.
The component is used to apply vertex colors in the asset file to Mesh.colors when the gameObject is created.
The source codes of the component and the asset are provided here: Plugins\Scripts\.
Why MTE Editor is closed when in play mode?
Editing in play mode is not tested yet. So MTE editor is just closed before entering play mode to restrict possible misoperations.
Why there is a Material folder in the output dir when conversion finished?
It's generated by Unity for previewing the mesh file in the inspector. You can safely remove it yourself.
The MTE Editor/Converter window disappeared when it loses focus on MacOS.
This is by design of Unity3D and Apple. See also this post.
Can MTE paint more than 5 layer textures?
Yes. Use the texture-array-based mesh-terrain, which support 2-12 layers.
What is done when attaching GrassLoader?
This operation will create an asset file of painted grass data. A GrassLoader component will be attached to the selected object.
GrassLoader component is used to create actual grass mesh objects when the object is created (in GrassLoader.Start).
The source codes of the component and the asset are provided here: Plugins\Scripts\
There are dark borders between different splat-textures; where the different textures meet, it produces very dark areas.
Please modified the importer settings of the Control texture: Don't check "sRGB (Color Texture)", then apply.
How to use custom control map?
If you have a weight map exported from terrain creators like world creator, world machine and so on, you can replace the weight map used in mesh-terrain's material. Just make sure the replaced one is the same size and format as the old one: you can use the texture adjuster to do that.
However, many users demands to use a hand-crafted weight map. But it's impossible to create a working control/weight map manually in an image editing software. Because a weight-map requires normalized channels, and almost all existing image editing software doesn't provide such a function. A hand-crafted non-normalized weight-map might look normal at the beginning, but later when you paint textures, black/dark/light/blockish areas will show up immediately. But if you insist, here are the steps for a 4-layer weight-map:
Open SplatAlpha 0.png in your image editor.
Modify,Make sure the sum of RGBA channel value is 255, i.e. normalized channels.
Export a TGA format picture: SplatAlpha 0.tga
Put SplatAlpha 0.tga into the Unity project.
Save the texture as a copy in PNG format with Texture Adjuster at menu Window/Mesh Terrain Editor/Tools/Texture Adjuster.
Assign saved SplatAlpha 0.png back to original mesh-terrain's material's Control property.
Where is the Editor Log?
The folder containing editor log can be opened by click the menu item Window/Mesh Terrain Editor/Debug/Open Editor Log
Editor.log and Editor-prev.log are editor log files.
I cannot paint textures.
troubleshooting steps:
See if the Console window has errors. If the errors happen when trying to paint textures, please report the issue: send us reproduce steps, error screenshot and error text content.
If the Textures list lis empty, open the filter object list to ensure your MTE mesh object passed through the filter. If it doesn't, make sure following conditions are met and refresh the filter.
Mesh-terrain GameObject is active.
Mesh-terrain GameObject's tag and layer is the same as MTE Editor.
Mesh-terrain GameObject has a MeshFilter component.
Mesh-terrain GameObject's MeshFilter component has a Mesh.
Mesh-terrain GameObject has a MeshCollider component.
Mesh-terrain GameObject's MeshCollider component has a Mesh.
If you are using MTE Free, then only first two GameObjects that passed through the filter will be preserved. Please read the docs of The Filter.
If you are painting on a texture-array-based mesh-terrain:
Ensure the TextureArraySettings.asset file is put aside the Texture2DArrays. If not, MTE editors cannot find the source textures and add them to the texture list. Put them together and refresh the filter. Then try again.
Ensure the Name parameter is not modified after creating the Texture2DArrays. If not, reset the texture settings' Name parameter to the name (except the postfix _Albeo _RoughnessNormalAO) of texture arrays. Refresh the filter and try again.
If no brush is displayed when put the mouse on a mesh-terrain:
Make sure the mesh-terrain is not scaled. (Scaled mesh-terrains haven't been tested with MTE editors and the functions of texture painter is not guranteed to work normally.) If it's scaled, modify to 1,1,1 scale and try again.
Disable and enable mesh-terrain's MeshCollider, then refresh the filter and try again.
Make sure mesh-terrain's MeshCollider *Convex* is not checked, if it is, uncheck and try again.
If there is still no brush displayed, please report the issue.
If brush is displayed, but it doesn't paint textures when clicking and dragging:
Make sure the importer settings of the weight-maps (namely control-map or SplatAlpha0/1.png), Read/Write Enabled is checked. If not, check it, apply and try again.
Make sure no other (transparent) GameObject passed through the filter and covered the painting zone.
MTE editor's brush will be blocked by such GameObjects, which makes MTE unable to modify the weight-map(s). Please remove them or make them not pass through the filter. Then refresh the filter and try again.
If you are using "Filtered" mode, make sure your mesh meet following requirements (mesh-terrains created by MTE always follows)
The mesh is shaped exactly as a complete square. No corner is missing.
The texture coordinate (uv) is continuous. UV must cover all first quadrant, namely (u=0,v=0) to (v=1,u=1). Now see the following image.
The blue point at left-bottom corner must be an existing smallest vertex on the mesh and smallest uv(u=0, v=0);
The red point at right-top corner must be an existing largest vertex on the mesh and largest uv(u=1, v=1).
If you are using "Selected" mode,
Make sure the mesh uv is continuous on where your are painting.
Check if the weight-maps (namely control-map or SplatAlpha0/1.png) are being modified when painting:
Select a weight-map, show its preview in the inspector of it. Then paint textures with MTE texture painter.
Observe if the weight-map is changed.
If it is, but no effect on mesh-terrain surface, then the uv is not continuous on where your are painting.
Make sure no other (transparent) GameObject uses the same tag and layer of the mesh-terrain and covered the painting zone.
MTE editor's brush will be blocked by such GameObjects, which make MTE unable to modify the weight-map(s).
Please remove them or make them not use the same tag and layer, or just disable it, then try again.
How to reset MTE?
Click menu item at Window -> Mesh Terrain Editor -> Debug -> Reset Mesh Terrain Editor, note this will trigger code compilation
System.ExecutionEngineError: String conversion error: illegal byte sequence encountered in the input.
Make sure your project path doesn't contain non-ASCII character, like Chinese, Japanese and Korean character, and re-open the project.
Version History
2024-05-22 v4.4.0
* General: Fix error when creating TextureArraySettings asset: "ArgumentException: (MTE.TextureArraySettings) is not an asset"
* General: Fix cannot access server issue when trying to activate under certain case
* General: Improve texture array settings editor: check mipmap number before creating
* General: Fix popup window when failed to check for update when starting up
* General: Ensure compatibility on Unity 2022, 2023 and Unity 6
* General: Ensure URP14 shaders are compatible with URP15/16/17
* General: Remove buggy tool MeshToTerrainConverter
* General: Don't reset position and size of MTEEditorWindow when Ctrl+T is pressed
* General: Add documentation of Wrapper tool
* Shader: Fixed shader error about sampler numbers exceeds 16 under certain case
* Shader: Update URP Texture array color only shaders to output zero on Metallic and Smoothness
* Converter: Improve UX
* Texture (Array) Painter: Improve editing performance
* Texture (Array) Painter: Improve stablity of single selected mode
* Programming: Move LitJson into MTE.LitJson namespace to avoid conflict
* Programming: Ensure grass is valid before creating grass instances in GrassLoader
* API: Fix mesh terrain inspector not displaying layer weights
2023-12-14 v4.3.0
* Shader: Improve stability: fixed various issues when choosing or finding shaders
* Shader: Add URP7/10/12/14 shaders, confirmed no compile error in compatibile shader
* Shader: Show warning when shader name or path contains "Experimental"
* Shader: Remove height blend packed shaders to reduce misuse
* Converter: Add support to convert regular mesh to 5-layer mesh-terrain
* General: Improve UX & UI
2023-11-16 v4.2.7
* TextureArray Painter:On Unity 2019.4, texture array painter cannot find textures, which is caused by a Unity bug.
* Shader: Provide TextureArray shader for URP 7.7.1, created by ASE 1.8.9.35.
* Creator - TextureArray: Fix cannot use issues caused by error `NotSupportedException: Unexpected error: TextureArrayShaderSelector: LightModel PBR is not supported.`
* Creator - TextureArray: Fix UI error caused by not supported TextureArray mode Legacy Standard.
2023-09-21 v4.2.5
* Shader: Support customize min/max value of _UVScale property on texture array shader GUI
* Tool/Weight Map Normalizer: new tool to normalize weight maps with ease
* Shader: Fix incorrect mip level calculation, which lead to one-pixel seam artifacts, when enabled per layer uv scale in URP texture-array shader
2023-09-12 v4.2.4
* Shader: Fix issue: Warning about _ST and the builtin-RP shader doesn't render correctly
2023-09-11 v4.2.3
* Shader: Fix issue: When enabled per layer uv scale, texture at a far distance will display aliasing effects, which is caused by incorrect mip level calculation.
* Shader:Rewrite builtin-RP texture array shaders in code without ASE.
* Update and improve docs.
2023-09-04 v4.2.2
* TextureArraySettings: Fix UI error caused by not-yet-supported LegacyUnityStandard texture array mode
* Texture(Array)Painter: Fix Texture(Array) painter single selected mode don't normalize control texture pixels correctly, which might cause irregular dark spots
* Improve UI and UX
2023-07-25 v4.2.1
* ObjectPainter/GrassPainter: Update docs
* ObjectPainter/GrassPainter: Improve UX and stability
* FlowPainter: Fix cannot switch BrushMappingType (used to support custom uv)
* Misc: Improve project structure: add assembly definition for MTE editor plugin code
* TextureArraySettings: Fix loaded tga texture is flipped
* TextureArraySettings: Fix tga support not applied for linear texture
* Shader: Fix LayerUVScalesHolder modification not saved in scene
2023-05-22 v4.2.0
* TerrainConverter: Simplified GUI and usage, now it only support fbx format and automatically choose a shader that should be used
* TextureArray Inspector: support reordering texture layers by dragging.
* TextureArray Inspector: Support use source textures of TGA format
* ObjectPainter: Support prefab variant
* ObjectPainter: Support Prefab detail list saved in ObjectLoader component
* GrassPainter: Improve preview looking: support displaying mesh or custom name
* GrassPainter: Support Grass detail list saved in GrassLoader
2023-03-28 v4.1.2
* Shader: Refactor texture array shaders for readability
* Shader: Improve shader category
* Shader: Fixed single-pixel seam artifact issue in TextureArray shaders when enabled per-layer UV Scales
* Shader: Fix unpacked not define issue
* Shader: Update shaders to be compatible with ASE 1.9.1.5, Unity2021.3 and URP12.1.7; use target 3.0
* Creator: Fix UVScale is not applied when creating
* TexturePainter/TextureArrayPainter: Improve editor performance under selected mode
* ObjectPainter: Improved UI layout of prefab list
2023-03-06 v4.1.1
* Editor: Fix possible NRE caused by failed to load any IEditor implementation.
* Editor/GrassPainter: Improve editor performance.
* Editor/GrassPainter: Improve distance parameter effect to allow closer distance to create more compact grasses.
* Editor/SplatPainter: brushDirection not applied properly after changed edit tool.
* Editor/SplatPainter: Fix unexpected error when painting textures on mesh-terrain using 2/3/4/5 Textures shaders: MTEEditException: [MTE]Failed to load texture in to preview: selected texture isn't used in any targets' material.
* Editor/SplatPainter/TextureArrayPainter/VertexColorPainter: Fix brush selector's select/hover effect disappears after opening a scene.
* Shader: Fix issue: After Ctrl+S, material shader feature is reset.
* Shader: Fix some shader cannot toggle smoothness texture feature.
* Shader: Fix LayerUVScalesHolder incorrect error about TextureArray0/1 property is not assigned.
* Shader: Improve error message when failed to fetch uv scales on disabled GameObject/Component.
* Misc/Compatibility: Fix shader target from 4.5 to 3.0 for low-end devices and WebGL.
* Misc/Compatibility: Fix API upgrade dialog about `Texture2D.Resize` depreciation Unity 2021.2+.
2023-02-25 v4.1.0
* Creator, Converter and Editor: Add new texture array mode PBR(Metallic) that supports metallic texture which is packed in Albedo alpha channel
* Creator: Allow 2-12 layers mesh-terrain creation instead of only allow 4/8/12 layers.
* Converter: Textures used by terrain don't need to be read/write enabled any more; but now it requires those textures' size to be the same as their source png/jpeg file image.
* Converter: Support setting texture size when convert terrain.
* Converter: Now it always breaks mask-maps which assigned to terrain material under URP.
* Converter: Fix RoughnessNormalAO texture-array not generate mips
* Converter: Keep smoothness texture when converting terrain under builtin-RP. Source smoothness is stored in alpha channel of diffuseTexture.
* Converter: Keep per-layer uv scale converting terrain.
* Converter: Remember most parameters of terrain converter.
* Converter: Allow 2-12 layers terrain conversion instead of only allow 4/8/12 layers.
* Converter: Improve converter ui layout.
* Shader: Use `UnityStandardDataApplyWeightToGbuffer` in `MTE_SplatmapFinalGBuffer` to keep sync with Unity's builtin-RP terrain shaders.
* Shader: Support per-layer UV scales by utilizing a `LayerUVScalesHolder` component.
* Shader: Support optional metallic texture in TextureArray shaders that supports PBR light model.
* Shader: Unchecking *Enable Normal Intensity* will not reset `NormalIntensity`'s value to 1 for easier comparison.
* Shader: Show warning about missing but required shader property.
* Shader: Extract texture-array related calculation as reusable ASE ShaderFunction asset `MTE_TextureArrayCore`
* Shader: Added Color/ColorAndNormal URP/builtinRP-Standard shaders
* Editor/ObjectPainter: Fix MissingReferenceException/NRE after deleting prefab asset
* Editor/GrassPainter: Improve stability of grass painter when using custom mesh
* Editor/TextureArrayPainter: Improved stability of the brush preview.
* Tool/TextureChannelPacker rewritten to be a albedo-smoothness and mask-map creator.
* Misc/Compatibility: Support WebGL and tvOS texture compression formats
* Misc/Compatibility: Fix compatibility issue Unity FbxExporter 5.0.0 which leads to an AmbiguousMatchException
* Misc/Stability: Improve stability of fbx saving function
2023-01-28 v4.0.7
* Flow Painter: Support paint on mesh with custom UV
* Mesh Toolbox: Add Snap tool to fix gap caused by different heights of vertex at the same place
* Converter: Support convert Unity terrain with color or color&normal terrain layers, to MTE's mesh-terrain using texture array.
* Converter: Fix issue: When MeshOnly is selected, the vertex number cannot be changed.
2022-12-26 v4.0.5
* Converter: Fix: one 1 weight-map is generated caused by using same name for two splat-texture.
* Misc: Improve UX: make all window movable by dragging.
* Creator: New Feature: support compression of Texture2DArray.
* Converter: New Feature: support compression of Texture2DArray.
* Misc: Imrprove UX/UI: display errors in TextureArraySettings inspector.
* Misc: Fix: preview brush and point are still displayed after the settings window is closed.
* Misc: Fix: incorrect URP detection that QualitySettings.renderPipeline is not considered.
2022-10-20 v4.0.2
* Wrapper: a new plugin to wrap the mesh-terrain on another collider
* GrassPainter: Improve density control
* GrassPainter: Added: support to toggle grass display in hierarchy window
* GrassPainter: Added: support to set generated grass isStatic
* SplatPainter: Fixed material checking logic to reduce unhandled errors
* Shaders: Use shared sampler state in URP/5Textures.shader to walk around Unity bug "maximum ps_5_0 sampler register index (16) exceeded" while total texture number is 16, which doesn't exceed 16. See https://forum.unity.com/threads/maximum-ps_5_0-sampler-register-index.562867/
2022-09-06 v4.0.1
* Add allow overlap option to GrassPainter
* Add brush rotation to Texture/TextureArray Painter
* Fix RuntimeTextureArrayLoader NRE for ColorOnly mode
* Expose AlphaCutoff property in URP demo grass shader
4.0.0b4
* Fix issue: error when using snapshooter on a TextureArray mesh-terrain
* Fix issue: check-for-updates didn't work
* Fix issue: MTE editor window being reset after restoring a maximized window
* Fix issue: When using 2 Textures_realtime_shadow.shader, the shadow outside shadow distance is not shown
* Add feature: grass painter support custom mesh
* Add feature:SampleHeight API to sample all layers' weight
4.0.0b3
* Fixed issue: cannot activate/deactivate MTE 4 Pro
* Fixed issue: lag when quitting play mode
* Fixed compatibility on Unity 2018.4
4.0.0b2
* Add a demo URP Grass shader
* Fix activation issues on MTE 4.x
* Fix UnityException: GetBool is not allowed to be called during serialization, which makes the converter window cannot be opened
* Improve TextureArray creation check procedure: more detailed message will be printed on the console window to help solve texture layer issues
* Improve TextureArray creation procedure: no need to set textures to readable anymore, it will be done automatically and be restore after created
* **Converter**
* Support up to 2048 vertices along an axis when converting
* Add function: convert terrain with more than 5 layer textures to mesh-terrain with texture array
* Add function: break the mask-map of a terrain layer when converting; a user may want to use the smoothness and other textures inside the mask-map later in mesh-terrain's material
* **Editor**
* Use `[` and `]` to adjust brush size
* Texture Painter: fix non-normalized weight when painting textures under multi-filter mode, which caused [the water stain issue](https://github.com/zwcloud/MeshTerrainEditor-issues/issues/226)
* Object Painter: display prefab name in object list; the object list can be scrolled if too many prefabs are added
* Vertex Color Painter: fix "Attach Vertex Color" not use proper shader under URP and make the mesh-terrain pink
* Mesh Toolbox:add function to change the split direction of a quad
* **Shader**
* Improve docs: list and describe usage of all shaders
* Add hint: it is incorrect code that causes MTE cannot load, not MTE's fault.
* All shaders now uses target 3.0
* Fix BlinnPhong shader incorrect rendering result
* Fix cannot move MTE root folder: include MTECommonPBR.hlsl with relative path
* Add demo shader to display vertex color under URP
* Add demo shader to render billboard grass
* Fix specular output of URP shaders
* **Misc**
* Add RuntimeTextureArray solution
* Fix and Improve UI
> *New Feature* Texture array based PBR (albedo, roughness, normal and AO map) solution
> - create 2-12 layer mesh-terrain with MTE creator
> - convert existing Unity terrain to mesh-terrain with MTE converter
> - paint textures with MTE editor
* **Creator**
* Support assign customized shader when creating mesh-terrain(s).
* Support create texture-array based mesh-terrain using builtin render pipeline and lambert/blinn-phong shader.
* **Converter**
* Check if the control texture size is eligible when splitting a Unity terrain
* Support assign customized shader when converting a mesh to mesh-terrain.
* Support converting Unity terrain to texture-array mesh-terrain; mask map is partially supported: every layer should have albedo, normal and mask map or the conversion will fail;
* Support using texture array and custom shaders in conversion API
* **Editor**
* Texture Painter: Support 12 textures painting (based on texture array), added normalmap compared to 3.8.2f1.
* Texture Painter: improved texture brush so it won't be so dark or invisible.
* Texture Painter: fixed a UI issue that the brush selected or hovered not highlighted.
* Object Painter: fixed prefab without Renderer component cannot be painted when not allowed overlap.
* Object Painter: fix cannot paint and overlap issue.
* Paint Height Editor: Fix OverflowException
* **Shader**
* Update docs on shader UI.
* Fixed support of older version of ASE.
* Fixed Shadowmask not work for baked light.
* **Misc**
* Remove support of Unity 2017.4; Add support of Unity 2020.3, 2021.1 and 2021.2.
* Display error if failed to load any MTE IEditor.
* Add a popup window to display a list of GameObjects passed the filter.
* Upgrade Basemap-baker to snapshooter, which can take a snapshot of a mesh-terrain with any material.
* Provide builtin support to export binary fbx file and no longer depends on Unity's Fbx Exporter. You can turn it on/off in the settings.
* Arrange the main menu items, now the main menu entry will always be displayed at a fixed place.
* Improve notification about MTE free
* Fix lightmap disappeared after playing
* Provide messages when the creator/converter cannot create/convert.
* Add button on Welcome window to create help link on windows.
* Improve stability of mesh saving function.
* Fix and Improve UI.
[Object Painter] Add Support to set unified scale for prefabs.
[Object Painter] Add Support to disallow overlap when painting.
[Basemap Baker] Add Support to disable lighting.
[Basemap Baker] Add Support to consider lightmap when baking.
[Basemap Baker] Add Support to set the size of output image.
Shader
Support normal intensity as a `shader_feature` for all shaders using normal maps.
Support smoothness texture for standard and URP shaders: provide tool to merge albedo(RGB) and smoothness(A) texture into one single RGBA32 texture for each layer.
Add height-blending standard and URP shader, only support 4 layers.
General
Improve compatibility with latest URP.
Improve compatibility with latest Amplify Shader Editor.
Improve UX: the creator and converter will center output mesh-terrain(s) in the scene view.
Improve UX: disable MTE editor when a camera is selected.
Support Alpha8 and R8 format for creating a mesh-terrain from a height-map.
Fixed issue when creating tiled mesh-terrains: A meta data file (.meta) exists but its asset 'xxx/prototype' can't be found
Fixed issues: No control map in created tiled mesh-terrains.
Converter
Fixed issue: When converting a mesh to a mesh-terrain, no control map is assigned to the material.
Fixed issue: NullReferenceException error occurs when trying to convert a Unity terrain with invalid splat-layers.
Editor
Added support to change the color of brush points and rectangle.
Added support: auto-save mesh when mouse released for height tools and mesh-misc tool.
Added support: auto-save mesh every specified minutes.
Added notification when mesh is saved.
Improved UX: infrequently update MeshCollider for big meshes to reduce lag.
Fixed issue: Hand Tool and painters conflict with each other.
Fixed issue: GrassLoader became missing script and grasses.asset is invalid after upgrade to a new version.
Fixed issue: Error ArgumentException: relativePath Resources/unity_builtin_extra doesn't starts with "Assets/" occurred when opening MTE editor after creating a plane.
Fix issue: the importer settings of the mesh created by the creator and converter was not properly set: for example, the Read/Write Enabled option should be switch on.
Fix issue: Unity 2019.2+LWRP, when converting a Unity terrain, KeyNotFoundException will happen
Fixed: In certain cases, MTE doesn't initialize itself correctly, which leads to error: after opening MTE editor window, empty tool buttons are shown and MTE became inoperable.
Fixed: the welcome window is displayed before initialization is finished.
Added LWRP shaders written with Amplify Shader Editor.
Fixed: If GrassLoader is attached to a Prefab GameObject, clicking "Reload From File" button invokes error.
Added: Support removing some of the grasses (via the "Reduction" parameter).
General
Improved compatibility with Unity 2018.3.
Improved documentation.
Added support to create a mesh-terrain containing more than 65535 vertices on Unity 2017.3+, for both MTE Creator and Converter.
Improved UX: added hint if no valid editing target exists.
Improved UI: split activation and about window; added check-for-updates window.
Fixed: sometimes changing the tag and layer doesn't have any effect.
Auto detect language.
Fixed: Environment.FailFact NotImplementedException was thrown when Unity starts up.
Fixed: mesh-terrain is clipped if the lowest plane is out of sight.
Fixed: When converting a mesh-terrain to a Unity terrain with Tools/Mesh to Terrain Converter, an error occurred: Exception: Float array size wrong (layers should be 2).
Fixed issue: Creator creates an extra SplatAlpha 1 picture when there are only 2/3/4 splat-textures.
2017-7-15 v3.0b
Editor
(New) Grass Painter
(New) Flow Painter
Mesh Toolbox
Fix: point size is too small.
Settings:
Add an option to toggle main tool buttons: you can hide tools that won't be used.
Remove auto refresh filter because it hurts performance badly when the hierarchy changes quickly.
General
Add hotkey for MTE Editor: Ctrl+T
Merge MTE Pro and Free package.
Optimize UI.
2017-6-1 v2.9
General
Support Unity 5.6.
Add Standard terrain shaders.
2017-4-26 v2.8.2
Creator
Support *.asset mesh file.
Splat-textures can be assigned in the creator window now.
Converter
Support *.asset mesh file.
Add tree-export feature to TerrainConverter.
Editor
Support *.asset mesh file.
Texture Painter:
Fix texture painter: paint black pixels when using a very small BrushSize.
Fix issue: when the mesh has rotation, the paint location is wrong.
Settings:
Add an option *Show Point Normal*: show normals of modifying vertexes?
Add an option *Mesh Smoothing Angle*: the smooth angle when calculating normals of mesh vertices when creating or saving mesh-terrains.
Add an option *Language* to change language directly.
Open debug mode to users.
Tools
Move history viewer, mesh statistics viewer, base-map baker and mesh-to-terrain converter to Menu/Windows/MTE/Tools/
Add a mesh saver.
Add a mesh pivot adjuster.
Add a mesh uv adjuster.
Add a z-up to y-up mesh converter.
General
Improved editor resources loading methods: the problem that icons are missing won't happen now.
Improved string table usage.
Improved GUI for Unity3D Pro skin (black).
2017-1-20 v2.8.1
Creator
Create a mesh-terrain from a height-map.
Create a mesh-terrain from a curve.
Display statistics of the created mesh-terrain.
Converter
Add a default tilling setting to mesh converter.
Display statistics of the converted mesh-terrain.
Editor
Smooth:
Fix issue: Smoothing heights results in different heights at the edges of two neighbouring mesh-terrains.
Texture Painter:
Add a button to refresh brushes: no need to reimport MTE.dll any longer.
Settings:
Add an option to use compact GUI.
General
Optimize the performance of editing.
Support Unity3D 5.5.
Improve brush size solution: Default unit of brush sizes is now changed to a calculated cell(tile) size.
Fix issue: NameToLayer is not allowed to be called from a ScriptableObject constructor (or instance field initializer), call it in OnEnable instead.
2016-12-20 v2.8
Creator
Added a creator to create mesh-terrains directly without converting.
The creator can create multiple tiled mesh-terrains at once.
Converter
Fix mesh-to-mesh-terrain converter: max uv is not (1,1).
Editor
Multiple editing feature is added to all editors.
Texture Painter:
Fix the converting to terrain tool.
Vertex color painter:
Fix the typo of VertexColorInitializer.
Add a randomize tool to fill mesh-terrains with randomly generated colors.
Mesh Toolbox
Multiple vertices can be moved/deleted together.
Face deleting function is temporarily removed.
Settings
Add an option to adjust brush unit size.
Visualize the point size and the flashing.
Visualize the brush unit size as a rectangle.
General
Optimize the performance when painting.
Added a filter to filter mesh-terrains by the layer and/or the tag.
Added a history viewer for viewing undo/redo information.
Remove Toggling SelectionWireframe function. Because MTE doesn't require the mesh-terrains to be selected when being edited any longer.
The point (e.g. the flashing points) is fixed-size now.
By default, brush sizes are in the same unit as Unity3D. The range is adjusted to [0.1, 10]. The unit can be adjusted in Setting/BrushUnitSize.
The min-size of the editor window is smaller.
2016-11-16 v2.7
General
Make MTE compatible with Unity3D 5.0/5.1/5.2/5.3/5.4.
Port MTE to MacOS, tested in Unity5.2.3 on OSX 10.11.3 EI Capitan.
2016-9-25 v2.6
Converter
The terrain convertor will retain normalmaps now.
Fix issue: in convertor, warning message for a terrain with no texture is not correct.
Fix issue: the tilling is not correctly calculated when converting a terrain.
Editor
Texture painter: apply the normalmap to the preview.
General
Reorganize shaders: shaders are renamed and useless shader codes are removed.
Add bumped diffuse shaders.
Optimize GUI of the shaders: the UI is compacted; useless tilling and offset properties are removed; normal maps are added for bumped shaders.
Fix issue: fog not work in shaders.
2016-9-1 v2.5.1
General
Fix issue: When open about window (click the 'i' button) an error occurs: IndexOutOfRangeException: Array index is out of range.
Fix some GUI styles.
Fix internal issue when opening MTE on Unity3D 5.4 according to this post.
2016-8-19 v2.5
Converter
Fix issue: The generated uv is inverted in Mesh Converter.
Editor
Hight tool(raise/lower): add a falloff curve paramter.
Texture painter: add 50 brushes loaded from png files
Vertex color painter:
Add color presets
Add a single channel painting function
Add a clearing to current color function
General
Add a setting that allow users to change the size of affacted vertexes.
All parameters are persisted after restarting Unity3D.
Add hotkey F1-F7 for tool tabs.
Add hotkey '~' to toggle selection wireframe displaying - not auto hidding any longer.
Add shaders that combine vertex colors and textures.
Improve brush size calculation on nonuniform meshes.
Fix issue: When editing multiple mesh-terrains, the undo/redo operation are incorrectly executed on current editing object only, which leads to many abnormal changes on the current object.
2016-7-21 v2.4
Add a baking basemap function.
Add a converting to Unity3D terrain function.
Free version is ready.
Fix issue: When adding or replacing splat-textures, the MTE editor shows up and get the focus.
2016-7-6 v2.3
Add a vertex color editing function.
The layered mode is removed because it is useless on mobile platforms.
All editing functions are decupled from the shaders provided by the MTE.
Asset directories restructured.
2016-6-10 v2.2
Several single-pass shaders are added to optimizing the rendering performance and compatibility on mobile platforms.
Corresponding converting and editing functions are updated.
2016-5-28 v2.1
Add a temporary support for converting and editing mesh-terrain with 5 textures, which is rendered with raw CG shader(target 2.0) to improve compatibility on mobile platforms.
2016-5-14 v2.0
Editing performance is greatly improved by utilizing a quad-tree method.
Add mesh toolbox containing two functions: moving vertex sideways and cutting holes on the mesh.
Add support for up to 12 splat textures with 3 control textures. (removed at v2.3)
The default looking improved by using surface shader instead of the raw CG shader.
GUI is improved for Unity personal version.
Fix issue: When using hotkey to modify brush size or other parameters, the number in MTE editor window does not change.
2016-3-16 v1.0
First release. A mesh/Unity3D's terrain converter and mesh terrain (height and texture) editor.
User Support
(Recommended) Join MTE Discord Server to chat with the author and MTE users.