Why does using the cubetexture generated by a cubecamera as an environment map render the 3D model as a dark shiny object?

What am I trying to do?
I have a photo of an empty room of known geometry (floor, walls and ceiling) and the associated camera parameters. I like to add a 3D model with PBR materials into the scene and illuminate it to match the room environment.

What’s the problem?
When I use the cubetexture generated by a cubecamera attached to the 3D model as its environment map, the rendered object appears dark with a bit of reflecting shine. No base color of any material in the model is visible except may the lamp base. See Fig 1 below. Please note I’m using only the environment map and no other light source, and I used threejs dynamic cubemap examples as my guide.

If I add an ambient and directional light source in the scene, the rendering does get better. See here.

What have I done so far to solve the problem?
0) is the generated texture correct? As shown in the figure above, we added a sphere in the scene and mapped the generate cubetexture onto it. The result looks right! If there’s a way to save it on a file and visually examine a texture, please suggest.

1) Maybe it’s not possible to illuminate the object with just the environment map. So I used https://gltf-viewer.donmccurdy.com/ to test it out and I got the following rendering using the footprint court environment. This is pretty well illuminated.


2) The generated cubetexture is a LDR image whereas the footprint court environment is a HDR texture. My understanding is that we should still see faint color with a LDR environment map.

3) increase the envMapIntensity to 10 but that only made the whole rendering shiny but the basic problem of not seeing any color remained. (credit to @thax for suggesting that!)

Is it possible for you to demonstrate this issue with a live example? Without seeing your code, it’s not really possible to search for a root cause.

Notice that using the result of CubeCamera as the environment map is not ideal in context of PBR materials for two reasons. It’s a LDR map and it’s not pre-filtered with PMREMGenerator. HDR and pre-filtered maps are in some sense mandatory for realistic PBR workflows.

Thanks @Mugen87 for responding! If it’s indeed the LDR and pre-filtering issues, what do you suggest I should do to resolve it? I can try them and report back.

@donmccurdy had suggested to add a live example too but stripping the portion of the app from computer vision and scene interaction modules is proving to be more work than I anticipated. However, if you are interested, I would be happy to walk you through the code on one-on-one basis.

While I’ve still not figured out a way to create HDR cube, I did resolve the overall dimness of rendered objects even after I would use ambient and directional lights and that was due to not setting toneMappingExposure = 2.2 after having set tonemapping to ReinhardToneMapping. You always need to set the exposure to counter the dimness caused by tone mapping.