Rhino to blender not updating mesh but creates a new one

Hello community !

I am testing speckle from rhino to blender but when i try to update the scene after modifying one mesh, it is creating a new model instead of upadting it ! is this normal ?

also material and texturing is not received in blender…

use blender 3.6 LTS and rhino 7 , speckle 2.17

it is a very simple textured box : Speckle

thank you for your help !

g

1 Like

Hey greg,

I have just sent an access request to the project. Please give me access so i can reproduce the issue and check what’s wrong.

i accepted ! can you access ?

Hi! Have you managed to find the issues that is causing this? I have the same problem and can’t figure it out.

Hi @du5aIV

After having looked into this a bit more, I can now provided a little more context on exactly what has changed r.e. updating objects within the blender connector.

In versions of our Blender connector before version 2.16, the “update behaviour” was some logic within the receive operation that would deleted existing Collections (by name) if they were found in the new receiving commit.

The problem is, Blender has the requirement that no two collections are named the same, but this assumption doesn’t hold true for data sent from most of our other connectors, and as such, it was leading to situations where, within a single receive operation, we were deleting objects within similar named collections. (see issue)

This would result a very buggy experience, frequently many objects would be missing after a receive operation, and any other collections the user had in their file that happen to collide in name with something they were receiving also be deleted. All while giving the user zero warning. :scream:

This was becoming a bigger and bigger problem, because around this time, we were implementing support for collections in more and more connectors.

Additionally, based on some user feedback, several users said that they would prefer a completely non-destructive receive mode, where we simply create data and not destroy or mess with any of the data in the users scene (like a file import).

We made the decision that having a robust and reliable “create only” receive mode would be better than the existing buggy and inconsistent update mode that would occasionally delete users data erroneously. And in this patch, we changed to the behaviour we have now; a non-destructive receive that only creates objects & data.

However, we do understand the need for an update mode. And to do this properly, we would be looking to do something similar to our Rhino connector, where we have a separate “create” and “update” modes.
We have this feature request tracked, but needs some more designing before we can start development. I’ll keep you updated on any progress, but right now I can’t give you any timescale on this.

Of course, version 2.15 of our connectors are still available, although please aware of the aforementioned problems, and they may be unable to receive data from newer versions of other connectors.

We’ll try and communicate these sorts of breaking changes better in future, particularly as we aim for a more stable and reliable Blender connector.

Thank you for your patience.

6 Likes

any update on this one? noticed it doesnt seem to be fixed yet in the WIP 2.19 version?

I note that this addon: oeykmiih/bpy_io_3dm - Codeberg.org does do basically what we are all after here but for 3dm files in terms of not creating duplicates and updating geometry…

Hi @modusforma,

I have no updates on this, nor can I give you any estimates on when we will work on this feature.

Please be patient with us, we are taking the time to re-design several things at the moment.
Implementing update mode in Blender affects more than just the Blender connector, we need to consider what Update mode looks like across several connectors, with specific workflows in mind.

5 Likes

Hello, I was also wondering on how to update an existing collection in Blender (the source being Archicad, which also has some elements from Rhino).

With each update a new collection is created:
image

BTW, what exactly is the difference between receiving as “Collection Instance” or “Linked Duplicate”?
image

What is being discussed in this thread is how I would imagine to use Speckle:

  1. Import the model (first time) from Speckle (Archicad, Rhino, and occasional Revit used in my current workflow).
  2. Modify the model (UVs, materials…)
  3. Update the model, then import it again.
  4. Keep unmodified elements intact with modified UVs, etc.
  5. Possibly delete the modified elements from the original collection and put only those in a new one (I’m curious about your takes here): this would make tracking changes easier, as otherwise you would need to troubleshoot based on the online viewer’s comparison feature.

Additional, material-related behaviour:
It would be nice to already assign modified materials to the updated elements (e.g. you have “Concrete 27” from Archicad as a material, which you would modify to CONCRETE from your library, either by replacing it or using the node editor to change completely).

I would expect new objects that would have Concrete 27 to use CONCRETE instead. I get, that some workflows might expect to receive it as is, but I would be happy to have a checkbox for this feature.)

This would help me have a seamless in-house archviz workflow. For example Twinmotion has a nice model-update to aid workflows. Maybe this question would worth its own thread. (?)

1 Like

Hey @furtonb ,

That’s the defined behaviour. You can manually delete that previous collection until we implement a solid object tracking/updating behaviour. We’re currently in the middle of rewriting our Speckle python library, which Blender connector is using.

Collection Instance → Creates a collection with source geometry and puts multiple instances that remain to linked collection. When you modify objects in the original collection, those changes propagate to all instances. They’re useful for repeating groups of objects (like blocks, families) while maintaining consistent edits and reducing file size.

Linked Duplicates → (My understanding) This option creates new instances that share the same mesh data, not collections. @Jedd can explain the details of the difference.

So what you are asking for is more like a Material Mapping dialog?