Home Technical Talk

Anyone ever try rendering their assets in a non-realtime renderer like C4D?

polycounter lvl 12
Offline / Send Message
Count Vader polycounter lvl 12
So I have an asset (spaceship) which i textured using substance painter, and thus has a color, roughness, and metalness texture. I need to render it in cinema 4d as part of animation

I am pretty damn happy with the way that I have it looking within the SP realtime viewport, but everything totally falls to pieces as soon as I try to render it in cinema 4d, and I have no idea wtf to do with the roughness and metallic texture.

All I want out of life right now is to just get the model to look as good in cinema 4d as it does in realtime SP viewport. It's just 3 textures, shouldn't be that hard, right? I posted this at c4dcafe or whatever but no one there seemed to know anything about this.


Annnyways I know someone's probably gonna tell me to study up on the reflectance channel in c4d until I know all of its intricacies (and I have a feeling that's what I'm going to have to end up doing) but just on the off chance there's someone lurking here who
a) Made a transition from game art to (whatever the hell not real time rendering is called, i have no idea... awful slow-ass rendering?) and
b) did it recently enough that PBR workflows were already thing..
you can be my savior in this situation!

Replies

  • huffer
    Options
    Offline / Send Message
    huffer interpolator
    Yes, possible, almost all offline renders use physically based shading. Vray, Corona, Maxwell Render, Cycles, etc. Probably the cinema4D one too. You do have to study how it works in c4d, but in Vray for example it's pretty basic - Reflect slot for Specular/Reflectivity, Refl. Glossines for Roughness/Microsurface, Diffuse slot for Albedo.

    It gets a little complicated if you have a Metalness map instead of Specular, in which case you should make a Mix/Blend node, between your Albedo and a constant 50-60 sRGB gray value (or 0.04 in linear rgb). You then mix them with the metalness mask, so whatever is white in the metalness shows the albedo through the blend node, whatever is black shows the constant gray value. Then just plug this in the Reflect slot.

    Oh, and you may or may not have to invert the Roughness map too.
  • Neox
    Options
    Offline / Send Message
    Neox godlike master sticky
    i just assume c4d uses a specular/glossiness workflow, so you will have to convert your maps from metalness/roughness to that

    here is some info on that topic

    http://www.marmoset.co/toolbag/learn/pbr-conversion
  • CharacterCarl
    Options
    Offline / Send Message
    CharacterCarl greentooth
    Are you using R16? Because, as far as I know R16 actually has a 'reflectance channel' which should incorporate the functions you're looking for (roughness and specular strength, etc.):
    [ame]www.youtube.com/watch?v=Nj1wLfKLj9Y[/ame]
  • Count Vader
    Options
    Offline / Send Message
    Count Vader polycounter lvl 12
    huffer Yeah, c4d has a renderer that is straight up called 'physical' so i assume it has something to do with that. I'm basically trying to figure out how to work all that stuff in c4d, it however that the reflectivity model real-time renders utilize (where there's no specular contribution and everything is variying levels of reflectivity) isn't really used by c4d yet.

    Neox I'll take a more in-depth look at the document you posted, it seems like it has some pretty useful info, although I guess the problem is that i'm unsure even if i SHOULD be using a spec workflow in c4d or not.


    DerRazputin I am using r16, and am trying to wrap my head around the reflectance channel.
    It seems like c4d still relies on a specular contribution to define roughness. It is possible to input a roughness map into the reflection roughness, but I guess when blurred reflections have to get calculated 'for real' it becomes extremely costly and render times totally drop.
  • Count Vader
    Options
    Offline / Send Message
    Count Vader polycounter lvl 12
    K so i've been messing around trying to get the 'roughness' input in c4d to behave in a similar way as roughness would in a game engine. I am using the roughness map generated from SP, and lighting the scene with an hdri. I have killed the specular contribution completely, since I am trying to do it the 'physically accurate' way that doesnt include spec.

    It seems to be generally ignoring any variation in the roughness map, and generally looking like crap. This is what the image looks like in c4d.

    DBAFWTT.jpg

    And here is a screencap from SP, which is what i'm trying to get it look like. It's kind of amazing to me that this takes forever to render in cinema 4d and looks generally awful.

    g6dTHPL.jpg
  • Neox
    Options
    Offline / Send Message
    Neox godlike master sticky
    well in general it doesn't matter much if you use the metalness or the specular based workflow, metalness is kinda the same bud dumbed down version, so ideally you can make less mistakes.

    what kind of slots do you have in your shader in cinema?

    also keep in mind that the environment it is reflecting has a great deal of an impact on the look of your maps on your model.
  • Count Vader
    Options
    Offline / Send Message
    Count Vader polycounter lvl 12
    Yup, the HDRI definetely has a role. I think the default ones that come with SP/marmo are selected to have a hotspot that supplies a nice highlight.

    Besides the obvious stuff like color and normals, I am making use of the 'roughness' map slot for reflections in c4d, and shutting off the spec contribution all together. However my roughness map seems really washed out by c4d standards, i have to choke the shit out of the contrast to get any real roughness variation visible, which is kind of annoying since I assumed the map should function the same way across any application - but I guess that only applies to other realtime software and not stuff like c4d.
  • SonicBlue
    Options
    Offline / Send Message
    SonicBlue polycounter lvl 10
    I don't know if this is the correct way, but it seems to work:

    3ICEq0z.png


    You need to load the Roughness map into the Roughness channel (Who would have thought that?) and the Metalness in the Layer Mask, and play with the values to get the right result.

    You may also want to add a second specular channel, with the Metalness inverted, to get better results in the areas that are isolate, play with the various parameter sliders if you think that what you're getting is not right.
  • Count Vader
    Options
    Offline / Send Message
    Count Vader polycounter lvl 12
    Ok, so with a bunch of experimation I was able to get a render like this:
    6A2K54G.jpg

    I think the biggest determing factor in how a material's reflectivity will behave, is the "layer fresnel" setting in c4d, which lets you select whether the material is a conductor or not, as well as letting you choose presets for different kind of metals and non-metals. This is kind of confusing, since to me 'fresnel' has always just meant how the reflections appears at grazing angles - however, in c4d it seems to control the overall reflectivity, at all angles of incidence.

    For instance, i rendered out two spheres, with the same roughness and global strenght values for reflectivity. The only differnece is that the one on the left has the 'fresnel' set to dielectric, and the one on the right is conductor. However, changing this setting seems to have altered the global reflection intensity as well, not just at grazing angels. Again, it's kind of confusing, since to me fresnel has always just meant = brighter reflections at edges. If anyone reading this who has a better grasp of what fresnel 'really means' (*cough* someone from marmo or allegorithmic team*cough*) would like to fill me in, that'd be awesome ;)





    yiMGT3U.jpg


    P.S. I have completely killed the specular value in all these renders, when enabled it's just the 'traditional' specular highlights that aren't actually physically accurate, which is not what i'm looking for.
  • tadpole3159
    Options
    Offline / Send Message
    tadpole3159 polycounter lvl 12

    I think the biggest determing factor in how a material's reflectivity will behave, is the "layer fresnel" setting in c4d, which lets you select whether the material is a conductor or not, as well as letting you choose presets for different kind of metals and non-metals. This is kind of confusing, since to me 'fresnel' has always just meant how the reflections appears at grazing angles - however, in c4d it seems to control the overall reflectivity, at all angles of incidence.

    For instance, i rendered out two spheres, with the same roughness and global strenght values for reflectivity. The only differnece is that the one on the left has the 'fresnel' set to dielectric, and the one on the right is conductor. However, changing this setting seems to have altered the global reflection intensity as well, not just at grazing angels. Again, it's kind of confusing, since to me fresnel has always just meant = brighter reflections at edges. If anyone reading this who has a better grasp of what fresnel 'really means' (*cough* someone from marmo or allegorithmic team*cough*) would like to fill me in, that'd be awesome ;)





    yiMGT3U.jpg


    P.S. I have completely killed the specular value in all these renders, when enabled it's just the 'traditional' specular highlights that aren't actually physically accurate, which is not what i'm looking for.
    In older game engines fresnel just used to refer to the reflectivity on grazing angles like you said, it was a cheat to get the effect. You would increase it and it would be more reflective on the sides of the model and it was crap. :P

    Real world objects all have different fresnel curves. It's basically describes how reflective something is from a front facing angle angle to a side facing angle (0 degrees to 90 degrees). Some objects like your dielectric example above have a low amount of front facing reflection, about 10% for example and it's side angle has about 70%. The fresnel curve it makes would go from 10% to 70% with some sort of dipped curve in the middle.

    Your metal would have about 90% on the front and about 95% on the side. They don't change much and the curves a bit different than dielectric materials.

    simple_vs_complex_ior.jpg
    here you can see the curve in action (pay attention to the green curve above. ignore the others)

    That's what your doing when you change fresnel model, your choosing how refections change across the surface of your model. Unreal does this on a basic setting when you use a metalness map. It's either dielectric or metal.

    Hope this helped :)
  • Count Vader
    Options
    Offline / Send Message
    Count Vader polycounter lvl 12
    @ tadpole3159 Yup that clears it up a lot, thanks :)
Sign In or Register to comment.