Author Topic: Thoughts about Sadow Catcher and possible improvements.  (Read 4598 times)

2014-08-22, 22:59:42

juang3d

  • Active Users
  • **
  • Posts: 636
    • View Profile
Well, in the Jeff Patton thread there has been a lot of talk about this, but I've been thinking about different uses I used to give to Matte/Shadow, and so far there is one problem with the current Shadow Catcher workflow.

Take this scenario, think that you have a set, let's take an interior scene, now you have a character walking around the set, now a way to efficiently render this and to be able to make changes to the character without having to render everything again and again is to separate the character from the set.

Ok, now if we use the current workflow A LOT of information will be lost, the reflected light in the different objects in the set, the reflected wall colors for example, and you loose every material in the set if you replace it with the shadow catcher.

Possible solution, as in other render engines, instead of having to replace the material of the object we may have the option to flag the object as shadow catcher, this way we will be able to define matte objects without destroying the scene materials, without loosing the light detail generated by those objects, without loosing the shadows casted by the non matte objects over the matte objects.

What do you think people?

And now a question towards keymaster and corona team, do you think is something easy and fast to implement?

Cheers!

2014-08-23, 07:57:02
Reply #1

Javadevil

  • Active Users
  • **
  • Posts: 399
    • View Profile


Yep this is one I'm after,  I like Vrays properties matte option, Its non destructive.

cheers

2014-08-23, 09:06:17
Reply #2

Ludvik Koutny

  • VIP
  • Active Users
  • ***
  • Posts: 2557
  • Just another user
    • View Profile
    • My Portfolio
Shadow catcher is just shadow catcher, not matte object. The fact Vray combined shadow catcher and matte object in one solution was the reason it was so confusing to use, and that it did not work correctly up until 3.00.07 version.

More can be found here:
http://forums.chaosgroup.com/showthread.php?78565-Correct-workflow-if-CG-object-integration-onto-backplate&highlight=correct+workflow

Shadow catcher is shadow catcher, and is already implemented. Matte object (with possibility to catch shadows) is a different thing, that is not yet implemented. Simple as that.

If you combine these two together, you get as confusing solution as Vray has, which needs a lot of controls (Vlado is going to add two more buttons in new version just to make it working right)


That being said, if you use shadow catcher properly, as it's supposed to be used, then you should lose as little info as possible.

So if you have already rendered your interior, and want to add CG character into it, then:

1, Place spherical cam into center of your interior and render out HDRI. Doesnt have to be large one, even 3k*1.5k will do.

2, Create one shadow catcher material, and use your final image as screen projected backplate

3, Assign this shadowcatcher material to every object in your scene. If you haven't moved your camera, it should match perfectly.

4, Add HDRI as your environment map, and rotate it to match the orientation of the room. Keep in mind HDRI  will not be used only for stuff behind window and such, but also for everything out of camera frustrum, where there is no backplate information.

5, Optionally, if you have reflection render element, you can edit it (make it monochromatic) and then use it as reflection map for your shadow catcher, so your CG character will reflect in the rest of your scene.

If you do these things right, then you should lose as little information as possible, and your character will really look like it correctly belongs in the scene, receiving all the correct GI bounce light and such. Sure it's a bigger pain in the ass than just selecting everything and clicking matte checkbox, but you are also rewarded with a lot faster render time. Think of it as a workaround before matte objects get implemented.

But mainly, when you separate stuff, you will always break something. Even Vray's matte solution isn't perfect because there are huge problems when compositing colored shadows. When you render everything in one piece, then you always get the best, most accurate results. Then if client want's changes, which do not touch geometry, then you can use render selected feature (render subset in Mental Ray, render mask in Vray) which will soon be in Corona as well.
« Last Edit: 2014-08-23, 09:19:22 by Rawalanche »

2014-08-23, 17:56:38
Reply #3

juang3d

  • Active Users
  • **
  • Posts: 636
    • View Profile
The "render selected" option is great, I'm glad to know that it's going to be in corona soon.

Regarding your matte workflow, it's a good idea, but as you say, it's a bit a pain in the ass to configure, also I'm not sure how can that behave if you have scene objects reflected in your character or non matte object, and also how can that behave if you have intersected things, I mean things that are in fron of your character.
Anyway, it's a good workaround, but how realistic you see to have the "matte" object property (or modifier) in Corona? It's something similar as having the objects non visible to camera and with a shadow catcher over it, I'm not sure If I'm explaining it correctly, but from my naive knowledge, I don't see it as somethingtoo hard, but obviously I know it may be reaaaally hard, also you have a long list of features to implement before this, I was bringing it to the table so we can have a complete production matte fast workflow.

Another problem I see with the shadow catcher, is what happends if you have bump or displace in the environment, the shadow won't catch that deformation, so a per object property to respect or not respect bump and reflection along with the matte property could be great.

In fact, the idea I have (that can be failing a lot) it's exactly what I said before, an option to make the object not visible to camera but that can catch shadows and reflections, when you have a "non visible to camera" object it is still visible ot reflections, it emits light and generates everything it should, but it's not visible, well the idea is to have the same, but it can catch the shadows over it, and of course ocllude anything behind it, I'm not sure if this idea is crazy, it may be, what do you think?

Cheers!

2014-08-23, 19:15:28
Reply #4

Ludvik Koutny

  • VIP
  • Active Users
  • ***
  • Posts: 2557
  • Just another user
    • View Profile
    • My Portfolio
I know how matte objects work in Vray, i use them a lot at work :)

I will ask Keymaster how hard would it be to implement. But from the UI point of view, it may be a bit tricky to implement in a non-confusing way. Corona does not have custom object properties, an instead uses native Max ones to keep it simple. Now, i believe it could be possible to do it globally in render settings. A new matte section with include/exclude list, same as with material override, where you could add objects in the list, which are supposed to be matte, and then assign how those mattes should behave.

It will probably not be intuitive on material level, because you would either have to plug every single material in your scene through some adapter (similar to VrayMTLWrapper) or go through every material and enable matte property, which would be possible to automate via scripting, but still non-intuitive for new users.

So when it would be hard to do on material level cause of complexity, or on object level, because Corona in Max doesn't have own object properties, global level, as described above, seems like the best solution.

2014-08-23, 20:11:22
Reply #5

juang3d

  • Active Users
  • **
  • Posts: 636
    • View Profile
What about a modifier?

I don't think it should be done on a material level, the idea is to separate the material work from the matte workflow, so if we have it at material level we will be in a similar fashion about making it hard to control and a bit destructive, a lot less than now, but you will work around evey material in the scene to manage that.

That is why I think a modifier could solve this because you can apply that modifier to several objects at once and you can enable/disable it at will, also you can apply different modifier to different objects for example to respect bump/displace in some, and don't do it on some others.

Cheers.

2014-08-23, 23:03:36
Reply #6

Ludvik Koutny

  • VIP
  • Active Users
  • ***
  • Posts: 2557
  • Just another user
    • View Profile
    • My Portfolio
Modifiers would add too much clutter i think... Especially in larger and more complex scenes with more objects. I think controlling it globally, same as material override, could actually work. Then if you need to mute displacement or bump on specific objects, you can simply go to the specific material and uncheck the checkbox in maps list :)

2014-08-23, 23:16:19
Reply #7

juang3d

  • Active Users
  • **
  • Posts: 636
    • View Profile
Yes, it could be a good solution, I was trying to avoid having to touch the material at all, but I understand that what you said is probably better, and will remove a lot of complexity :)
Also in the end if a material has some bump or displacement, well, you will want it to have it :)

Cool!

Cheers.