# Normal map unity

Since Tutorial 8 : Basic shadingyou know how to get decent shading using triangle normals. One caveat is that until now, we only had one normal per vertex : inside each triangle, they vary smoothly, on the opposite to the colour, which samples a texture. The basic idea of normal mapping is to give normals similar variations. In each RGB texel is encoded a XYZ vector : each colour component is between 0 and 1, and each vector component is between -1 and 1, so this simple mapping goes from the texel to the normal :.

This texture is mapped just like the diffuse one; the big problem is how to convert our normal, which is expressed in the space each individual triangle tangent space, also called image spacein model space since this is what is used in our shading equation.

You are now so familiar with matrices that you know that in order to define a space in our case, the tangent spacewe need 3 vectors. Which one should we choose? In theory, any, but we have to be consistent with the neighbors to avoid introducing ugly edges.

The standard method is to orient the tangent in the same direction that our texture coordinates :. Since we need 3 vectors to define a basis, we must also compute the bitangent B which is any other tangent vector, but if everything is perpendicular, math is simpler :.

Here is the algorithm : if we note deltaPos1 and deltaPos2 two edges of our triangle, and deltaUV1 and deltaUV2 the corresponding differences in UVs, we can express our problem with the following equation :. With this TBN matrix, we can transform normals extracted from the texture into model space. Do have this inverse transformation, we simply have to take the matrix inverse, which in this case an orthogonal matrix, i. Since we need our tangents and bitangents on top of our normals, we have to compute them for the whole mesh.

Remember, these buffers are not indexed yet, so each vertex has its own copy. This is actually handy, because this way, small triangles, which have smaller tangent and bitangent vectors, will have a weaker effect on the final vectors than big triangles which contribute more to the final shape.

And one for the 3x3 ModelView matrix. We just need the 3x3 upper-left part because we will multiply directions, so we can drop the translation part. We can use it to compute the light direction and the eye direction, in tangent space :. Specular lighting uses clamp dot E,R0,1again with E and R expressed in tangent space.

But it only works if the space that the matrix represents is orthogonal, which is not yet the case.Textures are often applied to the surface of a mesh to give it visual detail. Because Terrain Layers are Assets, you can easily reuse them on multiple Terrain tiles. You can add Textures to the surface of a Terrain to create coloration and fine detail. Terrain GameObjects The fundamental object in Unity scenes, which can represent characters, props, scenery, cameras, waypoints, and more.

More info See in Glossary are usually large, so it is best to use a base Terrain Layer with Textures that tile over the surface and repeat seamlessly. You can use multiple Terrain Layers, each with different Textures, to build up interesting, varied Terrain surfaces. The first Terrain Layer you apply to a Terrain automatically becomes the base layer, and spreads over the whole landscape. In addition, you can paint areas with other Terrain Layers to simulate different ground surfaces, such as grass, desert, or snow.

To create a gradual transition between grassy countryside and a sandy beach, you might choose to apply Textures with variable opacity. To create a Terrain Layer directly in the Terrain Inspector A Unity window that displays information about the currently selected GameObject, Asset or Project Settings, alowing you to inspect and edit the values. More info See in Glossaryclick the paintbrush icon in the toolbar A row of buttons and basic controls at the top of the Unity Editor that allows you to interact with the Editor in various ways e.

Here, choose the image to use as the Diffuse channel of the Terrain Layer. To assign a Normal Map A type of Bump Map texture that allows you to add surface detail such as bumps, grooves, and scratches to a model which catch the light as if they are represented by real geometry. Then, configure the various properties in the Inspector window for your new Terrain Layer. For information about how the number of Terrain Layers affects rendering The process of drawing graphics to the screen or to a render texture.

By default, the main camera in Unity renders its view to the screen. More info See in Glossary performance, see Rendering performance. Even assigned Terrain Layers that you do not actually paint onto the Terrain tile might impact the rendering performance. Initially, a Terrain has no Terrain Layers assigned to it.

By default, it uses a checkerboard Texture until you add a Terrain Layer. Double-click on a Terrain Layer in this window to add it to your Terrain.

Depending on the Material that is set in the Terrain Settingsas well as the Render Pipeline that is currently in use, you might see different options and properties in the Inspector. Unity applies the first Terrain Layer you add to the entire landscape.

If you add a new Terrain tile without any Terrain Layers, and paint on it, the system automatically adds the selected Terrain Layer to that new Terrain tile. Because this is the first Terrain Layer, that Texture becomes the base layer, and fills the entire Terrain tile.

In the Terrain Inspector, under Brushesthere is a box that displays the available Brushes, along with the Brush Size and Opacity options underneath. See Creating and Editing Terrains for more information about these tools.

The number of Terrain Layers you assign to a Terrain tile might impact the performance of the renderer. The maximum recommended number of Terrain Layers depends on which render pipeline your Project uses. This means that although you are allowed to use as many Terrain Layers as you want, each pass increases the time spent rendering the Terrain.

For maximum performance, limit each of your Terrain tiles to four Terrain Layers.

No additional passes are possible. If you add more than eight Terrain Layers, they appear in the Unity Editor, but are ignored at run time. Updated screenshot to match new UI and improved description of properties.

Version: Language : English.However, if I want to completely avoid Unity messing with my normal map, do I have to do manually things like saving the red channel into the alpha and painting the blue channel white, in order to use compression?

### Normal map (Bump mapping)

If so, please name all the things I will have to do. If not, what is the best way to import a normal map what format it needs to be in, etc? Unity uses the standard mapping method I'm not quite sure why you are asking the question, you tried with textures found on the net? It should work pretty easily Attachments: Up to 2 attachments including images can be used with a maximum of To help users navigate the site we have posted a site navigation guide.

Welcome to Unity Answers The best place to ask and answer questions about development with Unity. If you are a moderator, see our Moderator Guidelines page.

We are making improvements to UA, see the list of changes. Follow this Question. Answers Answers and Comments 20 People are following this question. Related Questions.The first step is to get your Assets into a format suitable for what you want to do. When exporting assets from 3D modeling applications for import into Unityyou need to consider:.

Your project scale, and your preferred unit of measurement, play a very important role in a believable Scene A Scene contains the environments and menus of your game. Think of each unique Scene file as a unique level. In each Scene, you place your environments, obstacles, and decorations, essentially designing and building your game in pieces. More info See in Glossary. By default, 1 Unity unit is 1 meter.

For more advice, see the Art Asset best practice guide. To maintain consistency between your 3D modeling application and Unity, always validate the imported GameObject scale and size.

Generally, the best way to match the scale when importing to Unity is to set these tools to work in centimeters, and export FBX at automatic scale. However, you should always check that the unit and scale settings match when starting a new project. To quickly validate your export settings, In your 3D modeling application, create a simple 1x1x1m cube and import it into Unity. In Unity, create a default Cube GameObject The fundamental object in Unity scenes, which can represent characters, props, scenery, cameras, waypoints, and more.

This is 1x1x1m. Use this as a scale reference to compare with your imported model. These cubes should look identical when the Transform component A Transform component determines the Position, Rotation, and Scale of each object in the scene. Every GameObject has a Transform. More info See in Glossary :. When blocking out a Scene with placeholders or sketching geometry, having a point of reference scale model can be helpful. In the Spotlight Tunnel Sample Scene case, we use a park bench:.

Using a point of reference scale model simply allows consistencies of scale to be relative between GameObjects, even if the Scene is intended to have exaggerated proportions. The information inside a texture needs to contain the correct information to give a proper result when added to a Material.By using our site, you acknowledge that you have read and understand our Cookie PolicyPrivacy Policyand our Terms of Service.

Game Development Stack Exchange is a question and answer site for professional and independent game developers. It only takes a minute to sign up. In unity I can create a normal map out of a black and white image By changing the type to normal map and select create from grayscale Im wondering if there is a way to export the normal map like it should look so I don't need to create it from grayscale when I use it in another project?

There is a script available to get this job done. You can follow the instructions specified in the link given below :. Sign up to join this community. The best answers are voted up and rise to the top.

Export normal map from unity? Ask Question. Asked 4 years, 10 months ago. Active 4 years, 8 months ago.

## Unity normal maps orientation format: OpenGL or Directx?

### NormalMap-Online

Email Required, but never shown. The Overflow Blog. Podcast is Scrum making you a worse engineer? The Overflow Goodwill hunting.

Featured on Meta. Feedback post: New moderator reinstatement and appeal process revisions. The new moderator agreement is now live for moderators to accept across the…. Hot Network Questions. Question feed.Teams of all sizes and experience levels frequently source art, yet it can be challenging to find quality collections of assets that are visually consistent and compatible with your specifications. Snaps asset packs solve that problem by providing themed collections of assets that will help you streamline your workflow from prototype to production.

Start blocking out your project. Themed collections of ProBuilder-made modular prefabs, built to real-world scale, help you quickly design 3D levels. You can add fidelity later either through textures or geometry. Save time moving from prototype to production. Snaps Art packs are modular game-ready assets, including environments, props and more.

If you used Snaps Prototype assets, you can save more time by replacing them with Snaps Art assets. Bring your project to life with high-fidelity detail.

If you used Snaps Prototype assets, you can replace the assets easily. It also includes several Tencent custom tools. And we all think the Asset Store, with its thousands of game-ready resources, comes in very handy. Built to real-world scale, Snaps assets make level building easy and efficient. They are made with ProBuilder, snap together easily with ProGrids, and are customizable with ProBuilderize and various digital content creation tools.

All Snaps assets are modular so creators can use them with other Snaps packs and in their own projects. Snaps assets include physically based rendering PBR materials, so you can use them to enrich your prototype assets. With high-fidelity textures and materials, they are customizable to be able to target any platform.

Snaps Art packs are for anyone who wants to speed up game production.

Creators can gain valuable insight into how high-quality assets are made and learn to customize assets to take their project to the next level. Design, prototype and play-test levels inside the Unity Editor with ProBuilder. Snap your assets into a 3D visual and functional grid.

Snaps Prototype assets follow ProGrids placement and rotation guides, so users can quickly and precisely design levels.

Unity The Unity Asset Store is the largest marketplace of off-the-shelf assets and productivity tools to jump-start your project, cut down on development time and get you across the finish line faster. Learn how Unity enables game developers — from indie to enterprise — to create, operate and monetize for all platforms. Explore how different teams used Unity to create popular and successful games.

Unlock knowledge when you need it most with on-demand resources for specializations across industries, straight from Unity experts. Snaps Asset Swap Tool provides a quick, easy method for switching all prefabs in a scene instantly. Snaps are 3D models inside prefab objects. Snaps assets are designed to respect a real-world scale grid.

The grid measurements starts at 1 m equal to a Unity grid unit and are halved i. The rotation for the objects is optimal in increments of You can find all the available packs on the Asset Store. Follow Unity on social media and subscribe to the Asset Store to be notified about new Snaps asset packs. For example, Snaps Art HD Buried Memories: Serekh includes a high-fidelity character model with easy-to-customize body parts, armor and a weapon, and more than animations. Snaps packs are ideal for anyone interested in creating prototypes in less time.Normal maps are a type of Bump Map.

They are a special kind of texture that allow you to add surface detail such as bumps, grooves, and scratches to a model which catch the light as if they are represented by real geometry. For example, you might want to show a surface which has grooves and screws or rivets across the surface, like an aircraft hull. One way to do this would be to model these details as geometry, as shown below.

On the right you can see the polygons required to make up the detail of a single screwhead. Over a large model with lots of fine surface detail this would require a very high number of polygons to be drawn.

To avoid this, we should use a normal map to represent the fine surface detail, and a lower resolution polygonal surface for the larger shape of the model. If we instead represent this detail with a bump map, the surface geometry can become much simpler, and the detail is represented as a texture which modulates how light reflects off the surface.

This is something modern graphics hardware can do extremely fast. Your metal surface can now be a low-poly flat plane, and the screws, rivets, grooves and scratches will catch the light and appear to have depth because of the texture. In modern game development art pipelines, artists will use their 3D modelling applications to generate normal maps based on very high resolution source models. The normal maps are then mapped onto a lower-resolution game-ready version of the model, so that the original high-resolution detail is rendered using the normalmap.

Bump mapping is a relatively old graphics technique, but is still one of the core methods required to create detailed realistic realtime graphics. Bump Maps are also commonly referred to as Normal Maps or Height Mapshowever these terms have slightly different meanings which will be explained below. Perhaps the most basic example would be a model where each surface polygon is lit simply according to the surface angles relative to the light.

In the image above, the left cylinder has basic flat shading, and each polygon is shaded according to its relative angle to the light source. Here are the same two cylinders, with their wireframe mesh visible:. The model on the right has the same number of polygons as the model on the left, however the shading appears smooth - the lighting across the polygons gives the appearance of a curved surface.

Why is this? The reason is that the surface normal at each point used for reflecting light gradually varies across the width of the polygon, so that for any given point on the surface, the light bounces as if that surface was curved and not the flat constant polygon that it really is. Viewed as a 2D diagram, three of the surface polygons around the outside of the flat-shaded cylinder would look like this:. The surface normals are represented by the orange arrows. These are the values used to calculate how light reflects off the surface, so you can see that light will respond the same across the length of each polygon, because the surface normals point in the same direction.

Using Normal Maps In Unity

For the smooth shaded cylinder however, the surface normals vary across the flat polygons, as represented here:. The normal directions gradually change across the flat polygon surface, so that the shading across the surface gives the impression of a smooth curve as represented by the greeen line. This does not affect the actual polygonal nature of the mesh, only how the lighting is calculated on the flat surfaces.

This apparent curved surface is not really present, and viewing the faces at glancing angles will reveal the true nature of the flat polygons, however from most viewing angles the cylinder appears to have a smooth curved surface.

Using this basic smooth shading, the data determining the normal direction is actually only stored per vertexso the changing values across the surface are interpolated from one vertex to the next. In the diagram above, the red arrows indicate the stored normal direction at each vertex, and the orange arrows indicate examples of the interpolated normal directions across the area of the polygon. Normal mapping takes this modification of surface normals one step further, by using a texture to store information about how to modify the surface normals across the model.

In this diagram, which is again a 2D representation of three polygons on the surface of a 3D model, each orange arrow corresponds to a pixel in the normalmap texture. Below, is a single-pixel slice of a normalmap texture. In the centre, you can see the normals have been modified, giving the appearance of a couple of bumps on the surface of the polygon. These bumps would only be apparent due to the way lighting appears on the surface, because these modified normals are used in the lighting calculations.