Not getting PBR effect with materials

Hello,
using a maya-substance-gltf pipeline and deploy in three.js

tried different materials but seem we are missing the “pop” PBR offers wondering if:
1- only certain materials in Maya react to PBR? (we use Lambert)
2- Do we have to “turn on” something in Three.js to recognize and react to PBR
3- We tried “changing the material” in the application using meshphysical material from three.js not major difference

4- I am thinking there may be something or parameter that is missing in scene.

5- maybe light? do we need a special light to make it react with PBR?
6- Is a light map required OR are any other textures Required to get PBR effect?

J.

It’s hard to say what exactly is the problem without knowing what is actually in the glTF file produced at the end of your pipeline. For now, try viewing the file in an external viewer that has correct lighting, like:

If the lighting looks good there, it’s an issue in your lighting rather than the model or pipeline.

The Lambert material shading model is older and I wouldn’t consider it a PBR material. However, that doesn’t necessarily matter as much as what gets done later in the pipeline (by Substance Painter?) when exporting to glTF. glTF doesn’t allow Lambert materials, so I expect it’s being converted to a metal/rough or spec/gloss PBR material at that stage.

1 Like

Hi @donmccurdy! Thanks a lot. We are on the same page. Of course we always bring the object in gltf. viewer.
We love the inspector in sandbox, but since our engine runs on three.js then we benchmark against the viewer.

I feel the problem is the material. when you say : " I expect it gets converted to some material at gltf export"

If material get changed at export does substance (or others?) apply a pbr material?

Can we rely on that pipeline so that the converters make sure they by default apply the optimal (latest and greatest) material at export? may be worth setting a standard library of materials to be curated.

We tried changing materials at run time tried mesh standard and physical, but not much change to be seen…

I thought it would be great to get your viewer rendering parameters and lighting set up in an order to replicate and thereby confirm the run as they should.

I feel physical should be the way, but still when we changed it it did not POP., thinking we need to activate something? env maps are on.

here is an example file from a scene: https://drive.google.com/open?id=1VkxwGXembT2EMMi9K2EA0AFhj8l48YiH
Could you help indicate how we could duplicate the viewer loader and render in another environment? is there a short way for quick testing ?
Thank you so much ! we are great fans of yours!

adding a screenshot at run time in our side and in viewer so we can benchmark the renders. Sure that’s happening.

Env maps aside…

Would be interesting to replicate viewer loader/render parameters in our side…!

render benchmark|690x373

We love the inspector in sandbox, but since our engine runs on three.js then we benchmark against the viewer.

I would suggest benchmarking against both. The first priority is to understand whether the model itself contains the wrong material settings, or if you just haven’t found the lighting setup you want yet. It could be either.

If material get changed at export does substance (or others?) apply a pbr material? … Can we rely on that pipeline so that the converters make sure they by default apply the optimal (latest and greatest) material at export?

I don’t know much about your pipeline, or what you’re doing, sorry. You’ve just mentioned that Maya and Substance Painter are used, but there are many ways to use them. The Creating GLB files using Maya and Substance Painter guide would probably be a good starting point.

The type of material you want, in the end, is metal/rough PBR. Whether you set that part up in Maya or Substance Painter is up to you, but Substance Painter is probably the better tool for the job.

I feel physical should be the way, but still when we changed it it did not POP

MeshPhysicalMaterial adds a few new options, but isn’t going to look much different from MeshStandardMaterial unless you need those options. Those are things like clearcoat and sheen, which are generally used for special cases like car paint and cloth. It is not “more PBR” than MeshStandardMaterial really — not sure what you mean by “pop”, but I don’t think MeshPhysicalMaterial is going to help.

adding a screenshot at run time in our side and in viewer so we can benchmark the renders. Sure that’s happening.

Are you saying the first render is what you want? Or it’s what you’re seeing in threejs, and you’re not happy with it? It would be helpful to see the result you want — in Substance Painter, for example — and for you to highlight some specific things you think are missing.

As it is, I can’t tell what you’re doing to create the model, or which parts you aren’t happy with.