How to import PBR assets and tileable materials from ScansUp in Unity
“In this article we will teach you how import into Unity any article purchased in ScansUp, explained step by step so you don’t get lost.”
Content inside ScansUp packages
Within the package you have purchased you will find several types of files, which we explain in detail below. Each vendor may have a different folder structure but they include the same essential files for PBR assets:
- Renders: You will find various renders that show how the product you just purchased should look like in an engine, with the aim of serving as a reference to verify that you are using it correctly.
- Unity files: Some ScansUp vendors includes Unity ready textures. For example an Albedo map with the Gloss map inside the alpha channel of the texture.
- Readme file: This is a small text file and/or link, where we add useful information for you about the product, such as:
- Content: Exposes the exact content of the pack.
- Notes: Gives specific explanations of the product for its correct application.
- Links: Some Links to our website, articles, licenses and legal texts related to your product.
- Licenses policy file: The major part of our vendors adheres to our license policy. This file/link is an explanation of the licenses to which the products are subject to. We recommend you to read it in order to know what use you have the right to exercise with the acquisition of our product.
- Textures: A set of textures (normally 16-bit PBR) that can be used in Unreal, Unity or any other rendering engine.
- Mesh: A .fbx (.obj…) with the mesh (or meshes, LODs…) of the object. If it is a tileable material, we normally provide a base plane in this place for an easier setup in-engine.
Implementation in Unity
Once we made clear the content of the pack you just purchased, we are going to explain in the fastest and easiest way possible, how to implement our products in Unity to get the most out of it.
There are some implementation differences between assets and tileable materials that we’ll explain below.
For this, we recommend creating a new folder within the “Content” of your project where the desired assets will be stored. Once this is done you can import the different items into it.
Selection of elements to import into the engine:
- Mesh: Import the .fbx inside the project folder.
- Textures (Normally 16 bits ones): Import the rest of the textures from the root of the pack to the project (Albedo, Metallic Normal, AO and Height are the main ones). In the case of the Normal map, it is very important to remember to change the “Texture Type” to “Normal map” once imported in the texture inspector. If you need to downgrade any of the maps to 8bits, you can do it in any image editor (Photoshop, GIMP, Kitra…) easily. You can also do some tweaking directly in Unity by just clicking in the texture and go to “Default > Format” and change some properties and bit depth of the textures. See:
Material Creation in Unity
Once everything has been imported, we are going to explain how to set your material and apply it to your mesh.
The first thing we need to do it’s to create a new material (with a standard shader), rename it and open the material editor for a quick setup.
- Albedo: Connect it to the Base Color.
- Roughness/Smoothness/Glossiness: As we know, Smoothness and Glossiness maps are the same thing (white = pollished surface, black = Rough surface) and both textures, when inverted, you get the Roughness map (white = Rough surface, black = polished surface). If you need a Glossiness map, flip the Rough map provided in the pack (Control + I) in any image editor (Photoshop, GIMP, Kitra…). By having the Smoothness map in the alpha channel, the engine will automatically link it and we will be able to control it with the Smoothness slider. It also works in the alpha channel of the metallic. You can do this in any image editor (Photoshop, GIMP, Kitra…) by pasting the Gloss map into the alpha channel of the Albedo (or Metallic if you prefer) and export the texture (with alpha) for Unity to read it correctly. By storing the Gloss map in the alpha channel of a texture, we save draw calls.
- Metalness: Connect it to the Metallic slot. In case you have set the Gloss in it’s alpha channel instead of in the Albedo, you will be able to tweak the Smoothness slider.
- Rest of maps: Connect them to their corresponding slots.
- Secondary maps: This section works as a system of texture LODs. This means that when the camera is really close to the object, these two maps (Detail Albedo and Normal Map) will replace their corresponding ones in the material, with the aim of achieving an high quality look. In this way we can use the maps at a higher resolution, if we want, to get the maximum possible detail when approaching our assets.
We leave this sample image so you can see how it should be set:
Using displacement maps in Tileable textures
Inside the engine, simply by applying the height map and moving the slider we can get a pretty good bump result. But this will only work as an enhanced normal map, it doesn’t add real geometry to our mesh to act as a displacement map and it will still be flat if we move the camera to the edges of our mesh.
To get a displacement by geometry we will need to download a free shader called DX11 Tessellation Displacement. This shader once imported into our project will allow us to change the material from Standard to Tess_Standard, which will add a series of options with which we can play to achieve the desired effect of our tessellation.
Import of LODs with our Assets
Normally the assets have LODs inside the .fbx mesh files. If you want to import them into the engine, all you have to do is follow these steps.
Once the model is imported, Unity will add a “LOD Group” component automatically to the model. This will make it appear with our LODs already loaded and set, so you only need to tweak the jump distances to your liking.