Disintegration Effect and Material Pipeline

On Project Imp we were going to have these puzzles that had environmental objects that needed to be destroyed. The player would acquire the fire mages powers and then be able to disintegrate stuff magically with the orb they throw. Initially the only object that needed to disintegrate was a vine. However, there were 4 different vines each with different materials.

Starting out I didn't know how to deal with the multiple materials. I prepared for the worst case scenario, copy and pasting to each material, by creating a material function for the effect. The easy part was done and then serendipity struck! I started this task a week after GDC when the 2018 videos were released. That GDC Bill Kladis went over the material pipeline used on Fortnite for effects.

VineDisintegrationA.gif

I learned a few things from this task. First I gained a greater familiarity with materials and how they interact with blueprints in Unreal. Second I got the chance to actually implement a pipeline which is especially surprising considering I came onto Project Imp late. Third and final I gained experience explaining the importance of and what is involved with this type of approach to producers and programmers.

For the remainder of this post I will try my best to explain the pipeline in context of Project Imp. If you want to see it from the source the GDC talk was GDC 2018 Visual Effects Bootcamp: Autonomy in Real-Time Effects: Artist Driven Tools and Techniques for Large Scale Production (Link but it is premium content on the GDC vault at the time of this post).

Let's say you have three characters. They look completely different and could even have different rigs but chances are their materials are made up of the same contents. It could include a base color, diffuse, roughness, etc. Chances are it was imported into Unreal as one material per character. Let's say all three of those characters have a disintegration effect and only one of those characters have a spawn effect that takes place in the material. Instead of making an obscene amount of materials for each character you could do all this with only two materials. This is accomplished by an approach to setting up materials in the project and how to use them with the systems in the game.

Figure A

Figure A

You have a single Parent Material that knows how to handle the texture sheets and effects for the three characters. It would be set up like the above (figure A) with the base stuff being the texture sheets that then blends into every other node. In Unreal these nodes would be material functions that input and output material attributes. The Parent Material is the material attributes of the Parent Material but compressed as a single pin in Unreal.

At this point all you need is a material instance of the Parent Material for each character. If some of the characters have extra effects it's easy to add. You would duplicate the Parent Material and splice in the extra effect between the base stuff and the disintegration effect nodes. After that you use the Copy Material Instance Parameters node in blueprints. This node will copy the parameters so you don't have to make another material instance for each of those two characters.

Figure B

Figure B

The above (figure B) is an abstract overview of whats happening in consideration to an arbitrary number of enemies. The Data for Enemy is the material instance which is being processed by the Parent Material. In the case of extra effects that aren't present in the Parent Material the Data for Enemy is copied and then processed by the Modified Parent Material.

 

 

Unreal Eye Animation Tool (Eye Tool)

On Project Imp we had these awesome looking wizards that we affectionately call tall boys. They are goofy weirdos that fling spells. You can get a sense of this from their animations but it's the eyes that really sell them. Not to mention when looking at the concept art it's one of the first things people notice along with their tall hats.

EyeAnimationA.gif

I like the eye tool not for what it does but for how it was made. Going into it I wanted to get my hands dirty making some procedural eyes in UE4 that we could plaster everywhere and anywhere! However, I didn't have a clear understanding of what the team wanted and decided on earlier. I came on to Project Imp late after my first capstone team cut itself. The task itself was a good exercise in communication and I hope it's an experience I can take with me to other projects.

Eyes.PNG

It took some leg work but I eventually found out what the eye tool needed to do (the problem I needed to solve). Animation wanted something they could modify in engine using anim notifies. The art lead wanted to bring the same magic from the concept art into the game. Finally the character artist really wanted to see his little tall boys with eyes after so much time had passed. Considering all the factors I'm glad I took the time to talk to everyone!

The solution was simpler than I originally expected and worked for the animator and the art lead so I think it was a job well done! What I did was have a black box the animator interacts with that drives a material attached to two planes on the tall boys. The animator selects the right enum for what they want. The material for the eye is taking a sprite sheet of every eye the lead artist drew and displays the one the animator wants. This is all kicked off with a custom anim notify so the eyes can be modified for each animation.