This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision Last revision Both sides next revision | ||
pidi_advanced_skin_shader_2 [2020/04/30 17:23] irrsoft [Standard vs Lite Edition] |
pidi_advanced_skin_shader_2 [2020/08/25 02:07] irrsoft [Texture Overlay FX] |
||
---|---|---|---|
Line 2: | Line 2: | ||
====== PIDI : Advanced Skin Shader 2 ====== | ====== PIDI : Advanced Skin Shader 2 ====== | ||
- | ### | + | <WRAP justify> |
PIDI : Advanced Skin Shader 2 is a collection of shaders, tools and scripts that allow you to add realistic AAA skin materials with full PBR support and dynamic wrinkles to your characters on multiple platforms and on the Standard, Lightweight and Universal Pipelines. | PIDI : Advanced Skin Shader 2 is a collection of shaders, tools and scripts that allow you to add realistic AAA skin materials with full PBR support and dynamic wrinkles to your characters on multiple platforms and on the Standard, Lightweight and Universal Pipelines. | ||
- | ### | + | </ |
- | ### | + | <WRAP justify> |
With unparalleled realism and advanced features such as real-time translucency, | With unparalleled realism and advanced features such as real-time translucency, | ||
- | ### | + | </ |
\\ | \\ | ||
Line 16: | Line 16: | ||
===== Standard vs Lite Edition ===== | ===== Standard vs Lite Edition ===== | ||
- | ### | + | <WRAP justify> |
PIDI : Advanced Skin Shader 2 is available in two different editions which may adapt to all kinds of teams and budgets. A Lite edition with only the essential features is offered at a much lower price while the fully featured Standard edition is targeted to projects and developers that may need more advanced features out of this skin rendering system. | PIDI : Advanced Skin Shader 2 is available in two different editions which may adapt to all kinds of teams and budgets. A Lite edition with only the essential features is offered at a much lower price while the fully featured Standard edition is targeted to projects and developers that may need more advanced features out of this skin rendering system. | ||
- | ### | + | </ |
- | ### | + | <WRAP justify> |
Below you can see a comparison table showing the full feature set of each edition. The Lite edition has an additional module that adds LWRP / Universal RP support in Unity 2019.2+ (this module is included in the Standard edition). To learn more about the specific limits and differences between the standard Unity rendering pipeline (also known as Built-in) and the new LWRP / Universal RP pipeline, please go to the corresponding section of the documentation. | Below you can see a comparison table showing the full feature set of each edition. The Lite edition has an additional module that adds LWRP / Universal RP support in Unity 2019.2+ (this module is included in the Standard edition). To learn more about the specific limits and differences between the standard Unity rendering pipeline (also known as Built-in) and the new LWRP / Universal RP pipeline, please go to the corresponding section of the documentation. | ||
- | ### | + | </ |
Line 34: | Line 34: | ||
| Simple Tessellation support | X | ✓ | | | Simple Tessellation support | X | ✓ | | ||
| " | | " | ||
- | | " | + | | " |
| LWRP / Universal RP support | Sold separately | | LWRP / Universal RP support | Sold separately | ||
| HDRP Support | X | ✓ | | | HDRP Support | X | ✓ | | ||
Line 44: | Line 44: | ||
===== LWRP / Universal RP vs Built in Forward vs Built in Deferred ===== | ===== LWRP / Universal RP vs Built in Forward vs Built in Deferred ===== | ||
- | ### | + | <WRAP justify> |
The SRP feature (LWRP/URP) is a new rendering pipeline introduced in Unity 2018.1 and currently in development. It has been marked as stable in Unity 2019 but it still receives frequent updates, feature changes, bug fixes etc. | The SRP feature (LWRP/URP) is a new rendering pipeline introduced in Unity 2018.1 and currently in development. It has been marked as stable in Unity 2019 but it still receives frequent updates, feature changes, bug fixes etc. | ||
- | ### | + | </ |
- | ### | + | <WRAP justify> |
Because of its “in-development” nature, compatibility-breaking bugs and serious performance issues can be expected while using this tool alongside LWRP, which will be solved as the rendering pipeline itself becomes more stable and usable. | Because of its “in-development” nature, compatibility-breaking bugs and serious performance issues can be expected while using this tool alongside LWRP, which will be solved as the rendering pipeline itself becomes more stable and usable. | ||
- | ### | + | </ |
- | ### | + | <WRAP justify> |
Furthermore, | Furthermore, | ||
- | ### | + | </ |
{{tablelayout? | {{tablelayout? | ||
Line 69: | Line 69: | ||
===== Quick Start Guide ===== | ===== Quick Start Guide ===== | ||
---- | ---- | ||
- | ### | + | <WRAP justify> |
While this guide and the documentation itself have been written with the full version of the asset in mind, most of the concepts and workflows described can be used directly on the Lite version as well. Features exclusive to the Standard version are marked as such. | While this guide and the documentation itself have been written with the full version of the asset in mind, most of the concepts and workflows described can be used directly on the Lite version as well. Features exclusive to the Standard version are marked as such. | ||
- | ### | + | </ |
==== Installation and upgrade ==== | ==== Installation and upgrade ==== | ||
- | ### | + | <WRAP justify> |
In this quick guide we will go through the whole process of using PIDI : Advanced Skin Shader 2, from installing the software into your project to adding it to a scene. | In this quick guide we will go through the whole process of using PIDI : Advanced Skin Shader 2, from installing the software into your project to adding it to a scene. | ||
- | ### | + | </ |
- | ### | + | <WRAP justify> |
As a first step, please ensure that your project fully meets the requirements below : | As a first step, please ensure that your project fully meets the requirements below : | ||
- | ### | + | </ |
* It is being developed with Unity 2017.1+ | * It is being developed with Unity 2017.1+ | ||
Line 88: | Line 88: | ||
- | ### | + | <WRAP justify> |
While PIDI : Advanced Skin Shader 2 has been designed to be integrated to any project at any stage of development with little to no setup required, there are additional steps to follow if you are using SRP (Lightweight or Universal). | While PIDI : Advanced Skin Shader 2 has been designed to be integrated to any project at any stage of development with little to no setup required, there are additional steps to follow if you are using SRP (Lightweight or Universal). | ||
- | ### | + | </ |
---- | ---- | ||
Line 97: | Line 97: | ||
=== Standard Pipeline Projects === | === Standard Pipeline Projects === | ||
- | ### | + | <WRAP justify> |
For projects working with the Standard Pipeline there is little to no setup required. If this is a first time installation you just need to head to the Asset Store and find this asset either under the section "My Assets" | For projects working with the Standard Pipeline there is little to no setup required. If this is a first time installation you just need to head to the Asset Store and find this asset either under the section "My Assets" | ||
- | ### | + | </ |
\\ | \\ | ||
{{ : | {{ : | ||
\\ | \\ | ||
- | ### | + | <WRAP justify> |
If you have bought the asset, a Download / Import / Update button will show, depending on if you have never downloaded the asset before, you have downloaded it and it is in cache already or there is a new version available for download, respectively. | If you have bought the asset, a Download / Import / Update button will show, depending on if you have never downloaded the asset before, you have downloaded it and it is in cache already or there is a new version available for download, respectively. | ||
- | ### | + | </ |
\\ | \\ | ||
{{ : | {{ : | ||
\\ | \\ | ||
- | ### | + | <WRAP justify> |
Once the import dialog appears, just import all the contents of the asset as usual. To verify that the asset was imported without any errors try to open one of the demo scenes. If they work without issues, the package has been imported correctly. If you see any graphical errors you must re-import the asset. If the issues persist even with a brand new and empty project, please contact us at our [[support@irreverent-software.com|support email]] | Once the import dialog appears, just import all the contents of the asset as usual. To verify that the asset was imported without any errors try to open one of the demo scenes. If they work without issues, the package has been imported correctly. If you see any graphical errors you must re-import the asset. If the issues persist even with a brand new and empty project, please contact us at our [[support@irreverent-software.com|support email]] | ||
- | ### | + | </ |
---- | ---- | ||
=== LWRP Projects === | === LWRP Projects === | ||
- | ### | + | <WRAP justify> |
If you are using the Standard Edition or have purchased the SRP Add-on for the Lite version you must follow additional steps before using this asset in a LWRP / URP compatible project. | If you are using the Standard Edition or have purchased the SRP Add-on for the Lite version you must follow additional steps before using this asset in a LWRP / URP compatible project. | ||
- | ### | + | </ |
- | ### | + | <WRAP justify> |
In the last step described above, once you see the import dialog while adding this asset to your project,** DO NOT** import the Standard Pipeline folder nor the Mobile Add on folder to your project. Importing this folder would cause errors due to the shaders and materials included in it being incompatible with LWRP / URP. | In the last step described above, once you see the import dialog while adding this asset to your project,** DO NOT** import the Standard Pipeline folder nor the Mobile Add on folder to your project. Importing this folder would cause errors due to the shaders and materials included in it being incompatible with LWRP / URP. | ||
- | ### | + | </ |
\\ | \\ | ||
{{ : | {{ : | ||
\\ | \\ | ||
- | ### | + | <WRAP justify> |
- | Instead, once the tool has been fully imported, unpack the package that matches the Unity version you are using. Please remember to update your SRP version to the latest release before using our shaders, and to open them with ShaderGraph and press the Save Asset button in the Graph Editor to ensure they upgrade automatically to the SRP version you are using. | + | Instead, once the tool has been fully imported, unpack the package that matches the Unity version you are using. Please remember to update your SRP version to the latest release before using our shaders, and to open them with ShaderGraph and press the Save Asset button in the Graph Editor to ensure they upgrade automatically to the SRP version you are using.</ |
- | ### | + | |
\\ | \\ | ||
Line 133: | Line 132: | ||
\\ | \\ | ||
- | ### | + | <WRAP justify> |
While we do our best to keep up to date with LWRP releases there may be times when Unity updates their pipelines and adds or removes functionality from them (and in most cases breaking the compatibility of LWRP shaders) before we can issue the corresponding update. If your version of LWRP does not load the shaders appropriately or the demo scenes inside the LWRP Add on folder show pink materials please be patient, as we will issue the corresponding patch usually within 1-2 days of a new LWRP release or contact us to let us know the details of the error to our [[support@irreverent-software.com|support email]]. | While we do our best to keep up to date with LWRP releases there may be times when Unity updates their pipelines and adds or removes functionality from them (and in most cases breaking the compatibility of LWRP shaders) before we can issue the corresponding update. If your version of LWRP does not load the shaders appropriately or the demo scenes inside the LWRP Add on folder show pink materials please be patient, as we will issue the corresponding patch usually within 1-2 days of a new LWRP release or contact us to let us know the details of the error to our [[support@irreverent-software.com|support email]]. | ||
- | ### | + | </ |
\\ | \\ | ||
---- | ---- | ||
Line 143: | Line 142: | ||
---- | ---- | ||
- | ### | + | <WRAP justify> |
Adding the skin shader to a character model requires several steps. The Advanced Skin Shader is not a simple material nor can be simply dragged and dropped into an existing character due to the many additional features it has that do not exist on normal Unity materials. | Adding the skin shader to a character model requires several steps. The Advanced Skin Shader is not a simple material nor can be simply dragged and dropped into an existing character due to the many additional features it has that do not exist on normal Unity materials. | ||
- | ### | + | </ |
- | ### | + | <WRAP justify> |
In this short tutorial we will guide you through the whole process of adding the skin shader to a model and set up its basic properties. More advanced topics and features will be covered in the next sections. | In this short tutorial we will guide you through the whole process of adding the skin shader to a model and set up its basic properties. More advanced topics and features will be covered in the next sections. | ||
- | ### | + | </ |
- | ### | + | <WRAP justify> |
In an empty scene, add the Old Man model included with the asset and place it in the center of the scene in position 0,0,0 and rotation 0,0,0. This setup is important to ensure that the mesh is set up correctly for the initial workflow. Make sure that your scene is running in Forward Mode. We will cover the set up for deferred in a later section. | In an empty scene, add the Old Man model included with the asset and place it in the center of the scene in position 0,0,0 and rotation 0,0,0. This setup is important to ensure that the mesh is set up correctly for the initial workflow. Make sure that your scene is running in Forward Mode. We will cover the set up for deferred in a later section. | ||
- | ### | + | </ |
\\ | \\ | ||
Line 159: | Line 158: | ||
\\ | \\ | ||
- | ### | + | <WRAP justify> |
Create a new material and assign the Advanced Skin Shader/ | Create a new material and assign the Advanced Skin Shader/ | ||
- | ### | + | </ |
\\ | \\ | ||
Line 167: | Line 166: | ||
\\ | \\ | ||
- | ### | + | <WRAP justify> |
Open the **SKIN SURFACE SETTINGS** tab on the Advanced Skin Shader 2 UI. There, you can find settings for all the available properties of the material. They match standard PBR based properties, including a Main Texture, a normal map, specular / gloss map, an occlusion map and two additional textures, a translucency map and a micro skin details map (which is provided with the asset) | Open the **SKIN SURFACE SETTINGS** tab on the Advanced Skin Shader 2 UI. There, you can find settings for all the available properties of the material. They match standard PBR based properties, including a Main Texture, a normal map, specular / gloss map, an occlusion map and two additional textures, a translucency map and a micro skin details map (which is provided with the asset) | ||
- | ### | + | </ |
\\ | \\ | ||
Line 176: | Line 175: | ||
- | ### | + | <WRAP justify> |
Assign each one of the corresponding textures to the different slots of the SKIN SURFACE SETTINGS Tab. Take into account that the glossiness factor is multiplied by the MicroSkin texture' | Assign each one of the corresponding textures to the different slots of the SKIN SURFACE SETTINGS Tab. Take into account that the glossiness factor is multiplied by the MicroSkin texture' | ||
- | ### | + | </ |
\\ | \\ | ||
Line 184: | Line 183: | ||
\\ | \\ | ||
- | ### | + | <WRAP justify> |
There is no additional setup required for the translucency and scattering to begin working in Forward, | There is no additional setup required for the translucency and scattering to begin working in Forward, | ||
- | ### | + | </ |
\\ | \\ | ||
Line 192: | Line 191: | ||
\\ | \\ | ||
- | ### | + | <WRAP justify> |
In the next sections of this manual we will cover the different settings that must be configured in order to work with deferred shading and the Advanced Skin Shader, how to add dynamic wrinkles support to the characters as well as the advantages and disadvantages of each one of the two different methods provided for dynamic wrinkles. We will also cover the decals / overlays system, its limitations and capabilities, | In the next sections of this manual we will cover the different settings that must be configured in order to work with deferred shading and the Advanced Skin Shader, how to add dynamic wrinkles support to the characters as well as the advantages and disadvantages of each one of the two different methods provided for dynamic wrinkles. We will also cover the decals / overlays system, its limitations and capabilities, | ||
- | ### | + | </ |
\\ | \\ | ||
Line 205: | Line 204: | ||
- | ### | + | <WRAP justify> |
Getting high quality results with PIDI : Advanced Skin Shader 2 is very easy and requires little set up, as we have seen. It can be done with any model, in a matter of minutes, and without needing any additional artistic knowledge. However, that is only the most basic setup that the asset offers and for users with a proper 3D art pipeline and more experience. | Getting high quality results with PIDI : Advanced Skin Shader 2 is very easy and requires little set up, as we have seen. It can be done with any model, in a matter of minutes, and without needing any additional artistic knowledge. However, that is only the most basic setup that the asset offers and for users with a proper 3D art pipeline and more experience. | ||
- | ### | + | </ |
- | ### | + | <WRAP justify> |
This section of the manual assumes that you have a more advanced knowledge about Unity and how it works, about 3D modelling and texture creation among other abilities. While it will not cover how to actually create 3D models or a step by step on how to generate the necessary maps for this asset it will give you instead the list of requirements that your 3D art and texture maps must meet in order to use the more advanced features. | This section of the manual assumes that you have a more advanced knowledge about Unity and how it works, about 3D modelling and texture creation among other abilities. While it will not cover how to actually create 3D models or a step by step on how to generate the necessary maps for this asset it will give you instead the list of requirements that your 3D art and texture maps must meet in order to use the more advanced features. | ||
- | ### | + | </ |
\\ | \\ | ||
Line 218: | Line 217: | ||
==== Deferred Setup ==== | ==== Deferred Setup ==== | ||
- | ### | + | <WRAP justify> |
Deferred shading in Unity is extremely useful since it allows you to render a huge amount of lights without additional passes on each object. However, to do this, all control over the lighting portion of a shader is removed and handled instead by the Deferred Shading shader. This makes it impossible to add new features such as scattering or translucency to any deferred shader without modifying or replacing entirely the internal Deferred Shading code used by Unity. | Deferred shading in Unity is extremely useful since it allows you to render a huge amount of lights without additional passes on each object. However, to do this, all control over the lighting portion of a shader is removed and handled instead by the Deferred Shading shader. This makes it impossible to add new features such as scattering or translucency to any deferred shader without modifying or replacing entirely the internal Deferred Shading code used by Unity. | ||
- | ### | + | </ |
- | ### | + | <WRAP justify> |
In order to avoid this and to make our Advanced Skin Shader work with any deferred shading system we decided to provide the missing lighting information manually. This allows the shader to work seamlessly with Deferred Shading while keeping the features mostly intact, but with the drawback of the scattering and translucency being limited to just four specific lights and the translucency itself not being affected by shadows. | In order to avoid this and to make our Advanced Skin Shader work with any deferred shading system we decided to provide the missing lighting information manually. This allows the shader to work seamlessly with Deferred Shading while keeping the features mostly intact, but with the drawback of the scattering and translucency being limited to just four specific lights and the translucency itself not being affected by shadows. | ||
- | ### | + | </ |
- | ### | + | <WRAP justify> |
These limitations, | These limitations, | ||
- | ### | + | </ |
\\ | \\ | ||
Line 234: | Line 233: | ||
\\ | \\ | ||
- | ### | + | <WRAP justify> |
To start, set the **DEFERRED COMPATIBILITY** mode to Enabled. This will create an additional tab called **DEFERRED LIGHTS**, in which you can assign the four lights that will have effect over the scattering and translucency. Assign the lights that you want to affect the skin shader to that list. In our case, we will add the Directional light used in the previous scene to display translucency. | To start, set the **DEFERRED COMPATIBILITY** mode to Enabled. This will create an additional tab called **DEFERRED LIGHTS**, in which you can assign the four lights that will have effect over the scattering and translucency. Assign the lights that you want to affect the skin shader to that list. In our case, we will add the Directional light used in the previous scene to display translucency. | ||
- | ### | + | </ |
\\ | \\ | ||
Line 242: | Line 241: | ||
\\ | \\ | ||
- | ### | + | <WRAP justify> |
And as you can see, there is little to no difference between the quality of the end results once the deferred shading settings have been properly set up. Be aware that materials cannot be just switched between both renderings without any changes, since the final color and gloss may vary slightly between both rendering modes. | And as you can see, there is little to no difference between the quality of the end results once the deferred shading settings have been properly set up. Be aware that materials cannot be just switched between both renderings without any changes, since the final color and gloss may vary slightly between both rendering modes. | ||
- | ### | + | </ |
\\ | \\ | ||
Line 250: | Line 249: | ||
\\ | \\ | ||
- | ### | + | <WRAP justify> |
The gif below shows the shader working properly in deferred mode (as seen by setting the scene view to display the deferred normals of the scene) and with all features performing as expected, including the dynamic wrinkles through tension maps | The gif below shows the shader working properly in deferred mode (as seen by setting the scene view to display the deferred normals of the scene) and with all features performing as expected, including the dynamic wrinkles through tension maps | ||
- | ### | + | </ |
\\ | \\ | ||
Line 297: | Line 296: | ||
* They are Forward compatible only | * They are Forward compatible only | ||
* They do not support any wrinkle maps nor (at the moment) our integrated decal/ | * They do not support any wrinkle maps nor (at the moment) our integrated decal/ | ||
+ | * The UMA compatibility has only been tested in the Standard pipeline | ||
Line 308: | Line 308: | ||
- | ### | + | <WRAP justify> |
The first method to add dynamic wrinkles to your models is the Tension map approach. Tension maps are run-time generated data sets that define which areas of a mesh are suffering deformation, | The first method to add dynamic wrinkles to your models is the Tension map approach. Tension maps are run-time generated data sets that define which areas of a mesh are suffering deformation, | ||
- | ### | + | </ |
- | ### | + | <WRAP justify> |
Our approach takes a " | Our approach takes a " | ||
- | ### | + | </ |
- | ### | + | <WRAP justify> |
However, if the amount of normal maps you have is limited or you need high performance over multiple instances and a faster set up without perfect accuracy on every single pose being a huge concern, or if you need to deploy your project on lower end devices then the Tension Maps approach is the best method to use. | However, if the amount of normal maps you have is limited or you need high performance over multiple instances and a faster set up without perfect accuracy on every single pose being a huge concern, or if you need to deploy your project on lower end devices then the Tension Maps approach is the best method to use. | ||
- | ### | + | </ |
- | ### | + | <WRAP justify> |
The three poses used as reference by the asset are the "Rest Pose", a " | The three poses used as reference by the asset are the "Rest Pose", a " | ||
- | ### | + | </ |
- | ### | + | <WRAP justify> |
Using a high quality sculpt or 3D model of your character performing said expressions and displaying the correct wrinkles should be used to generate the normal map that will be assigned as the " | Using a high quality sculpt or 3D model of your character performing said expressions and displaying the correct wrinkles should be used to generate the normal map that will be assigned as the " | ||
- | ### | + | </ |
\\ | \\ | ||
Line 332: | Line 332: | ||
\\ | \\ | ||
- | ### | + | <WRAP justify> |
Once you have generated the normal map for the wrinkles, we can start working on generating the tension maps in Unity. First, make sure that you are using a " | Once you have generated the normal map for the wrinkles, we can start working on generating the tension maps in Unity. First, make sure that you are using a " | ||
- | ### | + | </ |
\\ | \\ | ||
Line 340: | Line 340: | ||
\\ | \\ | ||
- | ### | + | <WRAP justify> |
Assign the Wrinkles normal map in the corresponding slot as well as the Head Bone of your character rig, and set the vertex threshold value to a higher value. This threshold defines how much the vertices have to move before they start being tracked for the Tension Map to be generated. If the value is too small then wrinkles may appear while the face is at rest and if it is too high they may not appear at all. Make sure that your mesh has a 1,1,1 scale and a 0,0,0 position and rotation before proceeding to the next steps. | Assign the Wrinkles normal map in the corresponding slot as well as the Head Bone of your character rig, and set the vertex threshold value to a higher value. This threshold defines how much the vertices have to move before they start being tracked for the Tension Map to be generated. If the value is too small then wrinkles may appear while the face is at rest and if it is too high they may not appear at all. Make sure that your mesh has a 1,1,1 scale and a 0,0,0 position and rotation before proceeding to the next steps. | ||
- | ### | + | </ |
\\ | \\ | ||
Line 348: | Line 348: | ||
\\ | \\ | ||
- | ### | + | <WRAP justify> |
Place the character in the rest facial pose, and then press the "SAVE REST POSE" button. This will create a snapshot of the rest pose and make the wrinkles from the wrinkle map disappear. Now, set the character in the first reference pose and press the "SAVE POSE ONE" button. Place the character on the second reference pose and press "SAVE POSE TWO". Now your character is ready and set up to start using the Tension maps. You can see the dynamic Tension map working and changing by enabling the debug mode inside the Dynamic Wrinkles tab. | Place the character in the rest facial pose, and then press the "SAVE REST POSE" button. This will create a snapshot of the rest pose and make the wrinkles from the wrinkle map disappear. Now, set the character in the first reference pose and press the "SAVE POSE ONE" button. Place the character on the second reference pose and press "SAVE POSE TWO". Now your character is ready and set up to start using the Tension maps. You can see the dynamic Tension map working and changing by enabling the debug mode inside the Dynamic Wrinkles tab. | ||
- | ### | + | </ |
\\ | \\ | ||
Line 359: | Line 359: | ||
=== Notices about Prefabs === | === Notices about Prefabs === | ||
- | ### | + | <WRAP justify> |
When using Dynamic Wrinkles with the Tension Maps method the original mesh of your character will be patched with additional information that will allow it to work in low end devices while keeping your original mesh intact. However, since this is a runtime procedural mesh it cannot be saved as part of a prefab, it has to be exported to the disk before being stored within a prefab object. | When using Dynamic Wrinkles with the Tension Maps method the original mesh of your character will be patched with additional information that will allow it to work in low end devices while keeping your original mesh intact. However, since this is a runtime procedural mesh it cannot be saved as part of a prefab, it has to be exported to the disk before being stored within a prefab object. | ||
- | ### | + | </ |
- | ### | + | <WRAP justify> |
In order to do this, simply press the "SAVE PATCHED MESH" button and select a location within your project to store this mesh. Once this is done, this new mesh will be automatically assigned to your character model and the dynamic wrinkles will keep working as intended and, since the generated and patched mesh has been saved to the disk, you can now create your prefabs as usual. | In order to do this, simply press the "SAVE PATCHED MESH" button and select a location within your project to store this mesh. Once this is done, this new mesh will be automatically assigned to your character model and the dynamic wrinkles will keep working as intended and, since the generated and patched mesh has been saved to the disk, you can now create your prefabs as usual. | ||
- | ### | + | </ |
\\ | \\ | ||
Line 373: | Line 373: | ||
- | ### | + | <WRAP justify> |
The second method included with this tool to add dynamic wrinkles to your characters is called Region Maps approach. With this setup, instead of having a "Rest Pose" normal map and a " | The second method included with this tool to add dynamic wrinkles to your characters is called Region Maps approach. With this setup, instead of having a "Rest Pose" normal map and a " | ||
- | ### | + | </ |
- | ### | + | <WRAP justify> |
**However, when dynamic wrinkles are disabled these shaders are far more efficient than their tension map counterparts so it is always recommended that if you are not going to use Dynamic Wrinkles at all you assign a Regions Map shader to your characters, even in Mobile.** | **However, when dynamic wrinkles are disabled these shaders are far more efficient than their tension map counterparts so it is always recommended that if you are not going to use Dynamic Wrinkles at all you assign a Regions Map shader to your characters, even in Mobile.** | ||
- | ### | + | </ |
- | \\ | + | <WRAP justify> |
{{ : | {{ : | ||
- | \\ | + | </ |
- | ### | + | <WRAP justify> |
Let's add regions map wrinkles to our model, but first we will need to create a Wrinkles Data Asset which will act as a list containing all of the Wrinkle Normal maps available for this character. | Let's add regions map wrinkles to our model, but first we will need to create a Wrinkles Data Asset which will act as a list containing all of the Wrinkle Normal maps available for this character. | ||
- | ### | + | </ |
Line 394: | Line 394: | ||
\\ | \\ | ||
- | ### | + | <WRAP justify> |
And on this asset, let's add all the normal maps we have generated for this model to the corresponding list. The Wrinkle Data Asset is designed to help you organize your maps, especially in projects where there are dozens of normal maps per character. On top of this, as more updates are released for this tool the Wrinkle Data Asset will gain additional features and settings that will allow you to have further control over the wrinkles on your character in an easy, reusable " | And on this asset, let's add all the normal maps we have generated for this model to the corresponding list. The Wrinkle Data Asset is designed to help you organize your maps, especially in projects where there are dozens of normal maps per character. On top of this, as more updates are released for this tool the Wrinkle Data Asset will gain additional features and settings that will allow you to have further control over the wrinkles on your character in an easy, reusable " | ||
- | ### | + | </ |
\\ | \\ | ||
Line 402: | Line 402: | ||
\\ | \\ | ||
- | ### | + | <WRAP justify> |
Next, we need to create a regions map. A regions map defines how the different normal maps, the one from the rest pose and those from the different wrinkle maps will be blended in up to four different zones (channels R, G, B and A). Each channel represents an area of the face and each one of them will be multiplied by unique per-pose blending values. You can have one general regions map to be shared across all expression poses or override it with a unique regions map on any of the individual poses. | Next, we need to create a regions map. A regions map defines how the different normal maps, the one from the rest pose and those from the different wrinkle maps will be blended in up to four different zones (channels R, G, B and A). Each channel represents an area of the face and each one of them will be multiplied by unique per-pose blending values. You can have one general regions map to be shared across all expression poses or override it with a unique regions map on any of the individual poses. | ||
- | ### | + | </ |
Line 411: | Line 411: | ||
\\ | \\ | ||
- | ### | + | <WRAP justify> |
Once this is ready, assign the Wrinkle Data Asset, Head Bone and Regions Map to their corresponding slots. Then, press on the "ADD NEW WRINKLES SNAPSHOT" | Once this is ready, assign the Wrinkle Data Asset, Head Bone and Regions Map to their corresponding slots. Then, press on the "ADD NEW WRINKLES SNAPSHOT" | ||
- | ### | + | </ |
\\ | \\ | ||
Line 419: | Line 419: | ||
\\ | \\ | ||
- | ### | + | <WRAP justify> |
This will add a new sub-group called **WRINKLE DATA SET** followed by a number. This data set represents a pose or expression that your character can make and contains the information of which bones or blendshapes are used for said expression and thus should be tracked, which normal map corresponds to said expression, which region map to use to control its influence in case we want to override the default one, the influence of each one of the four regions in the region map (RED, GREEN, BLUE and an inverse ALPHA channel) and finally the blendshapes and bones that have to be tracked to detect whether the character is performing the expression described in the snapshot or not | This will add a new sub-group called **WRINKLE DATA SET** followed by a number. This data set represents a pose or expression that your character can make and contains the information of which bones or blendshapes are used for said expression and thus should be tracked, which normal map corresponds to said expression, which region map to use to control its influence in case we want to override the default one, the influence of each one of the four regions in the region map (RED, GREEN, BLUE and an inverse ALPHA channel) and finally the blendshapes and bones that have to be tracked to detect whether the character is performing the expression described in the snapshot or not | ||
- | ### | + | </ |
- | ### | + | <WRAP justify> |
You **DO NOT** need to define a snapshot for the rest pose, this is generated automatically and stored internally. Once you have added all the blendshapes and bones that you want to track to the lists you just need to place your character in the pose you want to save and click on the **SAVE POSE SNAPSHOT** button. | You **DO NOT** need to define a snapshot for the rest pose, this is generated automatically and stored internally. Once you have added all the blendshapes and bones that you want to track to the lists you just need to place your character in the pose you want to save and click on the **SAVE POSE SNAPSHOT** button. | ||
- | ### | + | </ |
\\ | \\ | ||
Line 432: | Line 432: | ||
- | ### | + | <WRAP justify> |
In the Tension Map vs Region Map demo scene included with the asset you can see a fully set up example of the Regions Map usage with the Old Man Demo. One wrinkle snapshot has been created for each one of the five different blendshapes that the model has. In all of them the same normal map has been used but some of the expressions make use of a different region map that instead of defining regions for the sides of the mouth and both sides of the brow cover instead the brow and the forehead. | In the Tension Map vs Region Map demo scene included with the asset you can see a fully set up example of the Regions Map usage with the Old Man Demo. One wrinkle snapshot has been created for each one of the five different blendshapes that the model has. In all of them the same normal map has been used but some of the expressions make use of a different region map that instead of defining regions for the sides of the mouth and both sides of the brow cover instead the brow and the forehead. | ||
- | ### | + | </ |
- | ### | + | <WRAP justify> |
In the CGI Stylized demo you can see another usage of this technique, this time in a character whose animation is fully driven by bone animation and which uses two different wrinkle maps and two region maps for the small expressions set | In the CGI Stylized demo you can see another usage of this technique, this time in a character whose animation is fully driven by bone animation and which uses two different wrinkle maps and two region maps for the small expressions set | ||
- | ### | + | </ |
- | ### | + | <WRAP justify> |
While the regions map approach works on mobile devices as well as in most devices that support RenderTextures (which are used internally to generate additional wrinkle data) they are CPU bound and thus may not be the most performant in low end devices. For a full breakdown of the pros and cons of each method please check the table below. | While the regions map approach works on mobile devices as well as in most devices that support RenderTextures (which are used internally to generate additional wrinkle data) they are CPU bound and thus may not be the most performant in low end devices. For a full breakdown of the pros and cons of each method please check the table below. | ||
- | ### | + | </ |
\\ | \\ | ||
Line 473: | Line 473: | ||
\\ | \\ | ||
- | ### | + | <WRAP justify> |
Adding overlay or simple decal textures to the skin shaders is very easy. Simply go to the GENERAL SETTINGS tab and set the Decal / Overlay Effects setting to true. This will add a new tab called SKIN FX SETTINGS. | Adding overlay or simple decal textures to the skin shaders is very easy. Simply go to the GENERAL SETTINGS tab and set the Decal / Overlay Effects setting to true. This will add a new tab called SKIN FX SETTINGS. | ||
- | ### | + | </ |
\\ | \\ | ||
Line 481: | Line 481: | ||
\\ | \\ | ||
- | ### | + | <WRAP justify> |
In this tab, you can assign up to two different color maps to be used as overlays each one to be mixed in their own unique way with three blending modes : Masked, Additive and Multiplied. Each one of these two decals can have their own color, specularity / gloss maps and be displayed either on the UV0 or UV1 coordinates channel. | In this tab, you can assign up to two different color maps to be used as overlays each one to be mixed in their own unique way with three blending modes : Masked, Additive and Multiplied. Each one of these two decals can have their own color, specularity / gloss maps and be displayed either on the UV0 or UV1 coordinates channel. | ||
- | ### | + | </ |
\\ | \\ | ||
Line 489: | Line 489: | ||
\\ | \\ | ||
- | ### | + | <WRAP justify> |
These decals allow you to easily and efficiently add effects such as sweat, wounds, tattoos, war paint etc to your characters while having full control over how it mixes with the skin under them and all their PBR properties. They are influenced by scattering, translucency and wrinkles as the rest of the skin and are available in all platforms. | These decals allow you to easily and efficiently add effects such as sweat, wounds, tattoos, war paint etc to your characters while having full control over how it mixes with the skin under them and all their PBR properties. They are influenced by scattering, translucency and wrinkles as the rest of the skin and are available in all platforms. | ||
- | ### | + | </ |
\\ | \\ | ||