Inconsistent mesh colors between GH/Rhino And Speckle Viewer. Brightness/Contrast issues

Hey guys!

I ve been experimenting with Speckle as a results viewer and running into some color consistency issues when working with colored meshes.

  • Objective: Consistent mesh coloring between Rhino/GH and Speckle Viewer

  • Issue: There is something about the way the translator brings over mesh colors from Rhino GHopper to speckle shaders that makes the colors really washed out. If i had to guess it looks like its blending the render material ( which should be the default grey) with the mesh color or an error translating RGB values. I think whenever mesh colors are present the render material should be ignored, thats how it functions in rhino anyway.

  • Example: Provided screenshot with a colored mesh sent "as is " from grasshopper (without providing additional speckle render material inputs) vs the same colored mesh with speckle Render materials generated from mesh colors in GH instead of relying on the translator. The latter approach results in consistent colors between Speckle Viewer and Grasshopper / Rhino Geometry while the first one has brightness and contrast problems

Hi @Andrei

Could you please share the stream above for me to double check? I have several ideas on why you are seeing the color discrepancy, but I just want to make sure before I write stuff :slight_smile:

Cheers

1 Like

Hi @Andrei

Thanks for sharing the stream! There was indeed an issue with objects that had not render material defined but had vertex colors. The issue is now fixed on https://latest.speckle.dev/ and will be available in the next server release.

This was good catch! Thanks! :wink:

Cheers

5 Likes

Hi all,

Sorry to revive this thread but I’ve been having a similar issue with colours appearing washed out when meshes are uploaded from Rhino (analysis results) to the new speckle viewer. See an example below - some of the white should be light yellow but it’s difficult to discern. Strangely enough the colours are bolder when viewed from underneath.

Any idea what’s going on here?

Hey @davidjbrownstein ,

Can you share the Speckle Model URL with us?

Hej! I also noticed the issue seems to be back in the new viewer. Think you can get better results if you turn off the direct light completely and turn the indirect one down close to minimum.

1 Like

Certainly. Link below:

Viewer - Resi Project - Speckle

And can you share how it’s supposed to look like too?

more like this which is what it looks like in Rhino:

Hey @davidjbrownstein

Thanks for bringing this up. Your issue relates to how colours are processed in the viewer. After investigation, it appears Rhino sends vertex colours as sRGB, but to date, the Speckle viewer interprets them in linear space. This discrepancy can cause colours to appear washed out.

We are working on an update that will treat vertex colours as sRGB in the viewer, at least aligning with how other colours are handled from Rhino. This should help resolve the issue you’re experiencing.

It’s worth noting, however, that many applications do not specify the colour space for vertex colours, leading to inconsistencies. While this change aims to improve colour accuracy from Rhino, the exact results may still vary depending on how different applications handle vertex colours. So this may cause different Speckle users to complain! We’ll wait and see which way this wind blows.

We appreciate your patience as we work on these improvements.

1 Like

Hi @davidjbrownstein

We recently went in and determined what color space do each connector send the vertex colors as, and the result was positive. All connectors that do send vertex colors send them as sRGB. This means, we have safely pushed the PR which treats the vertex colors as sRGB.

This will greatly improve the fidelity of the colors for meshes that use vertex colors (like the stream you exemplified). However, there is an additional technicality: The speckle material model currently can only specify PBR materials. When using this material, the colors (vertex or otherwise) become just a term in more complicated final color computation. This means that the colors that get displayed on the screen will not be the same as the colors you originally set because of direct & indirect lighting, shadows, exposure value and finally (and more important) tonemapping.

The good news is that we’re currently working on adding various view modes to the speckle viewer, of various kinds, and displaying the ‘original’ colors will be one of them. We’ll keep you posted

Cheers

1 Like

Hi @jonathon, @alex thanks both for taking the time to investigate and explain the issue.

2 Likes