Transparent but shiny materials?

Hi everyone,

I’m a total noob on UE4 but I’m starting to get a feel for the engine and how it all works. But I’m still struggling with the materials in UE4. I have a background in 3D modelling and rendering, and I’m used to the traditional shader types (C4D, Poser, Carrara, DAZ Studio etc) where you typically set specular lighting and a shininess amount to control how shiny a surface will appear. It’s just recently (kind of) when Iray shaders became sort of established as an option in rendering software programs. I’m not sure if UE4’s shading system is in fact Iray but never the less it has indeed the same idea and characteristics. For example a Metallic and Roughness setting rather than specular and shininess.

And that’s fine with me. But I can’t wrap my head around how Opacity relates to the material settings in UE4. In C4D, Poser etc you can easily set any amount of opacity on any material and it will be transparent. UE4 however, will not let me do that. The default material in UE4 is set to Opaque blend mode, and then the Opacity node is grayed out. I can change the blend mode to Translucent and Opacity will become available. In which case the Metallic and Roughness settings starts to behave completely different compared to the default Opaque blend mode. It’s like the system assume I’m working with a clay or wax material. It’s seemingly impossible to create a shiny and metallic looking material.

Thing is, I want to make materials for a fish character. And fish skin has a shiny almost metallic look, but I would like to make the fins half transparent. Is that even possible in UE4?

So to approach the first component of your question.

The difference between C4D/Poser/Darshan IRay/UE4 is that the former uses older non-physically based rendering engines. While still perfectly suitable, the industry is slowing transitioning to PBR standards. (PBR standing for Physically-Based Rendering.) Which is designed to approximate real-world information in many different lighting situations as opposed to using pre-baked images that are usually only suitable to a very limited range of lighting situations before it becomes noticeably incorrect. (See Diffuse map vs. Albedo and AO/Cavity maps.)

However, the second part of your issue concerning the shading models and transparency are actually entirely unrelated to UE4 using a PBR engine. It’s actually due to the limitations of UE4 using deferred shading/rendering instead of forward shading.

You need to remember that UE4 is first and foremost a real-time game engine. It certainly can be used for other purposes, but that is it’s primary design. Unlike the other software you mentioned, which don’t have to worry about milking out all of the possible performance while still presenting a pretty picture. So naturally, concessions need to be made in such situations.

That’s where the deferred shading becomes UE4’s greatest asset. It allows a lot of features that just aren’t possible in forward shading. Features like Subsurface Scattering for realistic skin shading is one example. However, no real-time shading is without caveats. And one of deferred shading’s is that only one shading model can be assigned to a material.

The way I usually skirt around this limitation is to assign a different material to a piece of my mesh that I want to have a different shading model. For a human character, there are times in which I’ll have four or five different shading models on each model with each shading model using a different material ID.

So I’d say bring your fish back your modeling software, separate the fins into a separate polygroup/mesh than the rest of the fish assign a material ID to the fish and a second, different material ID to the fins. Then rig your fish back up and export it, reimport into UE4. It should have been imported with two materials this time. Configure the one for the fins to use the translucent model and the rest of the fish to use the opaque. (Although if you’re going for realistic, you might want to use the Subsurface Profile shading model instead.)

Hope this helps clear things up for you a bit.

Epic has slowly been improving translucent materials, enabled SSR and switched to Per-Pixel Translucency. For skin (even fish skin) you’ll probably want to use the Subsurface Shading Model, which will let light bleed through areas like fins. But if you want actual transparency and not just light scattering I would assign a translucent material just to the fins and try those 2 options I mentioned earlier.