GH schema builder component bug

Hi guys,

It’s my first attempt with Speckle - and I confess it’s hard to resist it :heart_eyes: - but I experienced some sort of bug.

I am following steb-by-step the Multiplayer Grasshopper tutorial.
When the render material object generated using the Schema builder component (step 3 of the tutorial) is streamed and shown via the web-app, the field colors is empty and its look (rendering) is flat.

I tried to decompose the Object created downstream in GH and looks like the color parameter diffuse -and likewise emissive - is wrongly converted by the Schema builder component.

Anyone else with the same issue?

2 Likes

Hey @smg_michele!

Welcome to the community! If you feel like it, you can Introduce yourself 🙆 to the rest of the specklers hanging around our forum.

Thanks for your feedback! Several things are happening here, some we can improve on our side for sure.

Regarding the planks all displaying the same color, the Extend speckle Object by Key/Value component was modified not long ago to fix some branching issues, so I guess the file was not updated properly. The good news is that you can use the newer (and better) Extend Speckle Object node, which works with variable inputs and should give you the desired result. Remember to mark the input as Do not detach.

Screenshot 2021-07-14 at 15.11.49

I must confess the Extend speckle object by key value and Create Speckle Object by Key Value are weird to use and are only there for complex edge cases. If you just need to add the same key to all the objects they’re a bit overkill.

I just tested it here and seems to work:

The colors list

Regarding the colors list, I seem to remember we previously populated the color list when a renderMaterial was found upon conversion, but that is no longer the case.

To populate the colors list, just apply individual colors to the vertices of your Grasshopper meshes with the Mesh Colors component and they should be converted and displayed nicely in the viewer.

So they are basically 2 alternative ways to color your meshes.

The diffuse and emissive values

It may seem they are incorrectly converted, but it’s just that they aren’t converted at all! We don’t have full native support for materials in Grasshopper (yet) so what you’re seeing is the internal way speckle stores the colors.

Sorry for the inconvenience with the slightly out of date files. Things are moving fast but i’ll try to update the demo files to working state today.

4 Likes

Thanks @AlanRynne for the detailed answer 🙇🏻‍♂️ Slightly tangential, but those integers that you see instead of colours should be ARGB ints - it might be worth trying to put them inside a colour node!

3 Likes

Ok @dimitrie just blew my mind! I did not know you could do that! :sweat_smile:

Edit: Wrong screenshot

Woah! It works smoothly. Many thanks @AlanRynne and @dimitrie for both the answers.

Yep, the tutorial files are not up-to-date, but that turns to be a good chance to better understand what’s going on…and eventually ask :grinning_face_with_smiling_eyes:!

1 Like

…so, if I got it right, assigning the render material object via the schema builder makes the colors list a redundant information (for the purpose of a correct rendering in the viewer).

1 Like

If you just want one color per mesh, yes. It is also more efficient since the colors list shoud contain one color per vertex.

But, if you wanted to color the vertices of the mesh with unique colors (say, after a structural analysis), you can send a colored mesh in GH and those vertex colors will be preserved using the colors list.

For example:

Edit: Wrong stream url!

3 Likes