(WARNING) Please read the [[ https://work.anticto.com/w/mutable/unreal-engine-4/user-documentation/create-projected-tattos-stickers/ | Create projected tattoos or stickers ]] section before reading this one. This section describes some issues that may arise implementing complex image projection with nodes and the solutions Mutable provides to streamline the process.
(WARNING) The multilayer functionality only works with parts that are implemented in child objects and use their own material node (not extend material nodes).
Some games may need a lot of stickers, so creating nodes for each an every one of them can be cumbersome and create huge graphs. In fact, it may even be unknown during development how many will be needed because it could be up to the player to decide how many are wanted.
On top of that, the surface onto they have to be projected may even be unknown, or even not exist yet! That is the case with switchable parts. You may want to project an image onto the jacket the player is wearing, but that jacket is switchable at run-time. Duplicating the nodes required for projection for each and every jacket is just too much work.
Multilayer sticker projection is Mutable's solution for both of these problems. With just one node, this system will let you set up multiple layers of stickers, on any item of a group. For example, instead of having to add projection nodes to every single jacket in the project, you just have to connect one node to the jacket group node in the Character base mutable asset, and you will get multiple layers of stickers on any jacket.
1) Open the base Mutable asset of the character, for example Bandit_forFPS. Then add a "Group Projector Parameter" node to the graph, and connect it to the Group node you want to put the stickers on, for instance, the shirts. If the group node doesn't have an orange pin input to connect to, right-click on it and refresh it to make it appear.
2) Then select the "Group Projector Parameter" node, and fill in its properties. Give it a unique parameter name:
3) Also specify which textures will be available as options to be projected as stickers. For each sticker, select one texture and give it a name:
4) (Optional) To share textures between different projector nodes, the Option Images Data Table can also be used. Select a data table that has a column with Texture2D references, and fill the name of that column in the "Data Table Texture Column Name" property, just above the "Option Images Data Table" property. The names of the rows will identify the stickers and will be used as option names. Textures in the Option Images Data Table have priority over textures in the Option Images property if they share the same option name.
5) It's absolutely necessary to specify which channel of the UE4 base cloth material used by the shirts/items will be used to overlay the stickers. That means that the UE4 materials used by the shirts/items needs a possibly new channel that overlays the stickers onto the base material texture. First specify the name of the new channel as "StickerLayer":
6) Then open the UE4 material or materials used by the shirts/items (M_Bandit in this case) and add a "StickerLayer" texture parameter with a completely black and transparent texture by default, and blend it inside the material, for instance with the base color:
7) Important! If you change a base material to add a StickerLayer channel, the Mutable Material nodes in each shirt/item will not get the change automatically. They should have to be manually refreshed in each Mutable shirt/item child asset, but Mutable offers an automated solution, right-click on the shit/item group node and click on "Refresh all material nodes in children", then save all modified assets:
8) After all these steps, recompile the Mutable base character and when it finishes you should get the new Multilayer Sticker projector on the preview viewport: