Shift reflection on surface (help!)

Started by Vini.longo, July 22, 2019, 09:54:49 AM

Previous topic - Next topic

0 Members and 1 Guest are viewing this topic.

Vini.longo

Hi all!!

I don't know if this is possible on Keyshot, but i needed to do a shader that shift the reflection on the second surface (picture below).
Let me explain better:

There is a top coating, full gloss/reflection and the shader below is an metallic painting with a blur effect on the light's reflection, however the reflection on the under layer is shifted on the X axis.
I already tried to do it with an anisotropic material with an texture on the roughness X and Y but with no desired effect.

Sorry for not posting the full image, it's confidential.

Thanks all on advance!



andy.engelkemier

are you trying to create a "thick" clear coat?

One way to do it would be to duplicate the model. Then add a displacement to it to be sure the clear coat is offset. If the outside surface is important to match, just invert the idea and make the main material displace negative.

Warning: displace is Crazy slow in Keyshot. It will calculate on Every frame if that's an animation. If it's a still frame, adding a minute or two isn't a big deal. So if that test works out, then export it to a DCC (digital content creator) like blender, Rhino, etc., do the displacement or surface offset, then import it back in. Realistically, you don't need to calculate such complex displacement either. You just need to push All the vertexes out in the normal direction. Displace at the render level will create a TON of geometry at render time. This is why it calculates at every frame. Although, it Should probably keep a cache and reuse that. But that might be complicated for rendering on a network. That's how Vray does it though. GI, displacement, etc all have cache files that are accessed by every render node. So hopefully they decide to do that at Luxion as well.

I've done this in 3dsMax a few years back anyway, with great results. The clearcoat was my main surface. Then I used "push" (in max) on a duplicate to have a stainless steel material below the clear coat. This way it created a nice thick appearance of the clear coat. Regular "clear coate" in keyshot is more of a composite, and isn't suitable for closeups for "deep" materials.

But it's best to model that thickness in your DCC anyway.

Vini.longo

Thanks Andy,

I tried what you told but without success. I thought that I could achieve this result by doing 2 renders and composing on photoshop. 1st render is a black shine surface (to use as reflection pass) and an second render with the material without the clear coat and the environment rotated 10 degrees.

For a still image this process is fine for me, but we will need to achieve this directly on render to do animations.

Thanks! 

andy.engelkemier

Well that's the trouble with doing things that aren't physically accurate. Most rendering software doesn't allow you to do that out of the box. In Vray I would accomplish this by using a different environment for the different material. Keyshot doesn't allow you to do that, However, you can sort of "bake" the environment in the actual texture. But that also would probably only work for still frames.

Nearly anything you can do in Photoshop, you can do in AfterEffects though.

In your case, from what I understand. You do 3 renders. One is your main render, another is your render with the environment adjusted 10 degrees, and the last is a mask render.
In keyshot, I would suggest using studios to accomplish this. You can have different materials set for scene sets, and the studios allows you to swap scene sets, multi-materials, and environments. It also lets you switch a few other things like cameras, but you won't need that.

The mask layer is the only one that might be tricky for some, only because they haven't had to make one, and keyshot doesn't have a tool for it. Keyshot is definitely designed a Bit more for setting up renders without compositing. You'll want to create a new environment and make it Black. Just black. Now create a flat black material and assign it to everything. Then select an emissive white material (this might work with flat, but I can't remember) and add that to the object you want to composite. This gets tricky if you have transparent objects that you see your object Through. If that was the case, then you'll have some issues with keyshot, but you can get close enough in most cases by just making sure the transparent object is desaturated, if it were a color, and don't change anything else.
When you render the mask layer you can render with custom mode. It should render quite fast. If you're over a minute per frame, you likely have something calculating that doesn't need to be.

In AfterEffects, you main render goes on bottom, then your adjusted 10 degree layer with whatever layer mode you used in Photoshop to accomplish your look, then the mask layer. On your 10degree layer, you set a track matte for the mask layer. If you've never used those, they might not be showing. There's a toggle Switches ? Modes at the bottom of your timeline window. You want to make sure the button on the Very bottom left that looks like a square and circle boolean is highlighted.

Vini.longo

Great idea! Thanks man! I will try to do that!

Thanks for this quick after tutorial too  ;)

Vini.longo

Hey Andy,

I managed to that on one render at keyshot.
I will try to explain what i did:
- I added layers of the same material with a little low gray bump, just to shift the reflection a bit, on top of that i placed another grey opacity mask. I did this three times, and for each layer a increased the opacity level by 10%.


Adding some pictures below.

The only bad thing is that the render time increased a lot!
Thanks for the help ;)

texax

This is something you preferably do in post rather than KS no matter if it's a still or frame sequence. It's something you would achieve quite easy in BMD Fusion if you are familiar with node comping.