Quixel suite and cycles

Hello, fellow Blender artists! I hate asking for help with my first post, but I think I’m going to finally throw in the towel and ask for some input.

First a bit about me, and why I’m trying to get the two programs to play nice. I have been using blender extensively for the last year. I was brought into contact with it due to wanting to create 3d assets for the game Second Life. Since then I’ve expanded my horizons onto other engines like UE4 and CryEngine. This is all good and fair, but a issue arises when I try to port my PBR assets that I have textured in the Quixel Suite, into Second Life.

Now a bit about Second Life’s rendering engine. Second Life uses a rather antiquated hodge-podge of technologies that allow it to only support Diffuse, Specular, and Normal maps currently. This facilitates in the need to bake some global illumination information onto the diffuse map. Yes, the lighting is not completely accurate, but it’s needed due to the primitive rendering engine. This is where Blender’s Cycles “combined bake” comes in.

I have been trying to create a workflow from the Quixel Suite into Blender’s Cycles so I can bake down my PBR materials into the Diffuse texture. I have been experimenting quite extensively trying to get my PBR textures, in this case Albedo, Gloss, Specular, and, Normal maps to display properly. Now I realize that Cycles is not a conventional PBR render engine, say like Marmoset, but I was hoping there was a way to get near PBR results using nodes. Would the genius material gurus here be willing to give me a helping hand? There may be some free pizzas involved if someone gets this working, and of course a lot of good karma.

I have attached some a few screenies and attempts with some brief descriptions.

First, the how it should look. This was rendered in realtime in Quixel Suite’s 3Do renderer.


Second, how it looks with Blender’s Cycles.
I think it looks decent, but it is nowhere near as accurate as id like.


Third, my node setup. I used in the above renderer. I based some of this off of a node setup that came from blendertuts, over on the poylcount forums. It has two gloss channels, so I can slide between flat and more reflective like a mirror. Its buggy and definitely has issues.


A big thank you ahead of time, and I hope hear from you guys.

If you have just those 4 map types, they should be assembled something like this:


If you want to do that pipe with all one shader though, you’ll need some texture to shift the fresnel effect between the leather and the metal. Either a shift between a fresnel and non-fresnel glossy shaders, or shift the fresnel strength. I’d recommend the latter, it will perform slightly better. Aside from the leather reflection, IMO the Cycles one looks better already. Do note that roughness in Cycles is 0=shiny and 1=matte, so use a color ramp or invert node to flip your gloss map if it was built expecting the other way around.

Hello, and thank you for the response! The leather here is actually supposed to be a glossy clear coated red stained wood. I have tried your node configuration, but it seems something is not quite right. These are the results.


I have also opted to include my blend file, you’ll have to excuse the “GODKING PBR SHADER” as it was 4am when I made it, and I was rather frustrated with hair pulling when I named it. The issue I see with your node setup is that there is no way of pumping colour into your gloss shader. Since this is the gloss and specular model of PBR we’re talking about, there needs to be a specular colour node flowing into a gloss shader somewhere.

I thought id dump some downscaled maps here on this page to help any others get an idea of what Im talking about.

Albedo


Gloss

Specular

Normal
http://imgur.com/Kke9A6A

Blend File RAR - (40mb) (200mb decompressed) ( I packed all textures into the blend file plus included an external folder in case anything went awry)
https://www.dropbox.com/s/tiqihchsl1macer/The%20Pipe%20v2.rar?dl=0

Ok, I had a brain fart there and wasn’t thinking where metal colors could come from in my shader. Spec map should be attached to the color input on the glossy shader. The problem is, it still doesn’t look right, the reflections are too dim. Normally you don’t want to add diffuse and glossy shaders like that (it allows a ray to be both diffuse and glossy at the same time, which can’t happen in real life). But in this case, the albedo and spec maps seem to pre-account for this. So I guess you want to combine diffuse and glossy with the add shader. Trying that on your model gives a result pretty similar to what you posted in the OP. Unforunately, getting closer is going to be hard without some docs on how the Quixel shader works internally, some of the issues might just be due to Cycles using a different reflection model or something. (Cycles uses GGX without any fresnel built in, you can add the fresnel with another node or two if you need it)

Ok I am not certain what kind of shader model the Quixel Suite uses, but it does export to a bunch of different shader calibrations. Im going to assume this is what you’re talking about. I took the liberty of taking a screenie to show the export names and profiles. I’m hoping with it, we can get a better an idea of what we are dealing with. I’m going to go out on a limb here and say that most game engines use GGX shaders to handle gloss to the best of my knowledge.

From my experience of using UE4 and Cryengine the calibrations determines what kind of maps it outputs. UE4 uses a modified metalness BRDF model of PBR that is similar to the Disney’s, but I’ve been trying the gloss and specular model that is highlighted, for Blender.
[ATTACH=CONFIG]335711[/ATTACH]

It looks like 3DO was using a fresnel effect when rendering my pipe. I reloaded it in this screen shot here. It is important to note when I took my original screenshot of the pipe the lighting position was different, and I was using a small bit of depth of field. I’m going to assume that if the original screenshot has a fresnel effect, I will need to create two Gloss BSDF’s. One will likely need colour and the other roughness. Im new to fresnel blending but I assume I will have to use a mix shader and pipe a fresnel IOR value into the mix factor. If that is not the case, please enlighten me.


Finally, I have taken a screenshot of blendertut’s shader which I have been messing around with more. I noticed that if I lower the gloss strength to something around 0.050, I get similar results to my own shader. Even with those modifications, it is still not accurate.


I’m thinking of adding another gloss BSDF onto his node tree with just a roughness value set to 0 and converting his old gloss BSDF to a roughness value of 1 and using the mix shader and fresnel to control the “Gloss strength”. I will then take the output from the mix shader and pipe it into the add shader. I’d like to hear your input, as I’m taking shots in the dark and mainly trying to bounce ideas here. I will keep you updated if I make any progress.

May i ask if the wood unwrap as it is in file… was it intentional?
http://www.pasteall.org/pic/show.php?id=77821

At the time yes, it was intentional. I’ve had a few people tell me I should spin it around though.

I just wanted to quickly add that the Cycles environment looks a lot brighter than the other. You may want to make it roughly the same color to get a better comparison.

Also, for J_the_Ninja’s node setup, add the glossy shader to the diffuse instead of mixing them. Then, use the spec map as the color input to the glossy shader. I suggest putting the spec map into a Ramp node first, though, so that you can finely adjust the amount of spec.

Those are in way way “fix-alls”, but they should help.

Yeah, I’m trying to get ahold of the environment maps they used in 3DO, and I’m using a greyscale environment that I think is similar to the one in 3DO. I have tried tweaking the lighting to be similar to the best of my ability. The lighting is not a super big deal, as I am going more for an accurate recreation of the materials involved. I’ve looked at the model under different lighting conditions and cycles and just cant seem to get it right at the moment. I’m also going to try to load my model into Marmoset later and use the same environment map that I’m using in Blender to get a better baseline of what the shading should look like. Since Marmoset can handle different PBR models this should help a bit.

I will mess around with the node setup tonight as I am currently a little tired from attacking cycles every night for the last week or so. I will definitely try adding a ramp node for the specular factor.

I’ll keep you guys updated if I make any progress, and I really appreciate the input. I think if we could get a good Quixel Suite pipeline into Blender, a lot of people could benefit from its speed and ability to texture rapidly, both for games and renders.

A quick little update. I booted up marmoset and took a screenie of the pipe using the same environment map as the one I’m using in Blender. I set the environment map lighting to the same brightness of Blender’s. There are of course, likely still subtle differences that will get skew things a bit, but even with those differences, we should have a better baseline.


Judging by the image it looks like there is a fresnel effect going on, so I will try messing with that in Blender later. Suggestions are of course welcome!

A bit of clarification but do I pump the colour spec map into the ramp node? If that is the case, it looks horrible.

Made some progress.


A screenshot from Marmoset Toolbag on the left and cycles on the right. I’m fiddling with the fresnel settings now, but my current node setup looks something like this. Any suggestions or input on the fresnel side of things would be great.


To clarify on the color ramp, you often want to lower the brightness on the “light” side to give a more sane max gloss value. The invert and multiply nodes you have in your current setup do the same thing, just a different way of going about it. Usually when texturing diffuse roughness you want to lock it to your gloss roughness, so I’d feed that multiply node to it too, unless you already tried that and it looks bad.

Go to cgcookie.com/blender and check out their FREE shader forge episode on creating a car paint shader. Fresnel is used really well there, it certainly helped me gain a better understanding of it. I am also using quixel and struggling with the same problem. I am trying to put something together, if it works I will post it on here.

If it’s confusing you, just ignore what I said. Watch Blender Coodie’s tutorial on making a car shader. It has both the techniques I was mentioning. The only deviation from techniques in that tutorial is that I suggested using the spec map as input for the glossy color.

Basically, the wood is not glossy. The coating is. Using the mix shader makes the wood glossy. That’s not what you want. You want to Add the glossiness of the coating on top of the wood. You’ll get the idea when you watch the video.

I’ve been away for a few days, but I tried a few techniques from the video and I feel I’m getting nowhere. The car paint tutorial seems great when creating complex materials in cycles that have interesting light properties, but it completely fails for what I’m trying to accomplish here. The first problem is the fact that I have only a single gloss map. Thus, the fresnel factor here has to influence that single map and my diffuse. This tutorial is kind of useless for that. Now I am likely doing many things wrong here but, this was my attempt to do fresnel like the guy in the video. It looks horrible.

The Result

The node setup.

Time to address the issue. There is a big difference between cycles and PBR based rendering. When dealing with PBR materials one has to remember that the stuff is being rendered in realtime, and it is is only going to have a single channel for your diffuse, glossiness/roughness, specular, and normal. Sure there is masking, but that is a different ball game altogether. This is where the video really fell apart for me. A game-engine or Marmoset has no understanding and no way to tell that the wood under the clear coat is going to have a different roughness value. When creating assets with any kind of PBR software your going to usually, be exporting a single gloss map. Thus, the two glossy channels in the middle of the video were utterly useless. I got extremely confused by his mix RGB nodes and why he was using them for mix factors.

Frustration aside I said “screw it” and tried doing a hybrid approach of what he shows and a mix of what I thought looked good. You can see here I completely disregarded the mixing of the diffuse and glossiness and went for the add shader like my previous setup.

The Result

The node setup.

As usual, any suggestions or improvements are welcome. I also noticed something when messing around with the gloss nodes roughness. If I plug the gloss map directly into the roughness socket, the result is virtually no gloss. I have to use the math node to crank up the gloss map’s value. I have a feeling this means a few things. The first, is that the roughness factor cannot properly interpret the data the map is giving, This could mean that the multiply node is simply doing the same effect as lowering the roughness manually. The second, is that this could mean the gloss map likely needs to be modified in some way for it to act as a proper factor in the lowering of the roughness of the gloss nodes. I have a feeling due to the aforementioned reasons, my gloss map is not being used properly and is significantly off.

Sorry if this isn’t of any help, but i would like to know how you did managed to use the quixel suite with blender, i tried but without any success. Can you please explain the how you exported everything for quixel, or even better, make a videotutorial about that? :slight_smile:

I did a quick switch to my node setup and added back in the bright/contrast node to my specular map I also added a separate noodle leading from the bright contrast node to a hue/saturation node to make a grey scale version of my specular source. I plugged the grey scale version into the other socket of the color mix node. On top of all of that, I found setting the colour ramp’s interpolation to ease somewhat improved results.

I’m actually pretty satisfied with the results. I know I won’t get a 100% recreation of whats in marmoset or 3DO but this is looking pretty good.

The results


The node configuration


The conventional game asset workflow works very good with the Quixel Suite, but it is still beta. I usually, do all my modeling and UV unwrapping in blender and bake out my normals, ao, curvature, and object space normal maps in xnormal. After that, I just follow whats in these videos. They cover the texturing, masking, and exporting extensively.

They also have good documentation, though at times you will still have to search for stuff in the search bar. This includes breakdowns and entire demo objects.

I am by no means an expert with it, and I am still struggling to get it to play nice with cycles. The Quixel Suite is made for a PBR workflow, and I find even their last gen export presets do not play nice with Blender’s cycles renderer. Trying to go from “next gen game textures for game engines” to “cgi renderer” is a real pain in the rear.

As I have only recently really gotten into 3d modeling in the last half a year to year. I still have no idea what I’m doing when it comes to a lot of things.

On a final note if you want to ask the Quixel guys anything, they have a rather active presence over on the polycount forums. You will also find people better equipped than me to explain the ins and outs of the Suite there.

http://www.polycount.com/forum/forumdisplay.php?f=81

I was able to get a result very similar to the one you had using methods similar to the video. It’s the end result that counts, though.

I don’t think I’m understanding where you think the shortcomings in your results are at. Are you sure it’s not just because the material is not being truly displaced? That makes a huge difference in itself.