Adding 100k objects in Scene

Every object needs to have a unique name. When it comes to adding object number 400000, it has to check the other 399999 objects to see if there are no collisions, and if there are, resolve them. That’s one of the many things that can impact the performance of adding objects.

I still don’t see how it’s important to be able to edit every single seat. There is no way that you’ll have that many seats in view and still see the difference between them (unless the edits are enormous, of course). Maybe library overrides can help? With those you might be able to use instances everywhere, and override the mesh for only those instances that actually need adjustment. Not sure if it’ll work that way, though, I haven’t played with library overrides enough.

The main reason they want single seat is that the final render is done in unity and they would like to tweak the details of the sectors/seats within blender, don’t ask me why but it’s just the workflow of the company. And to import it to unity I merge seats from each Sector into a single mesh. I will try look into
library override.

I read this and I was wondering, is there a better way for handling name collisions than what exists currently in Blender?

I wonder if it would help to have an option of not checking and correcting for name collisions? I mean if you are scripting this yourself you should be able to generate names that are unique beforehand.

3 Likes

Yeah I guess it would help, but it will be a potential issue, I was thinking maybe name collision checking could be accelerated with a hash map or something, if it wasn’t already

In other software, each object gets its own unique GUID or UUID, which could be called the object’s internal name. Then, it doesn’t matter if the objects have the same front end name appearing in the UI and there is no need to constantly loop through the whole object array to check for duplicate names.

Edit now I am actually wondering why doesn’t Blender use UUIDs? It would probably solve a lot of the speed bottlenecks that many have been complaining about.

3 Likes

Yes if blender used some kind of incremental id’s it could probably work without reiterating the tree.
Plus there would be at least two added bonuses:

  1. Linking objects by id and not the name - finally doing some renaming in linked objects wouldn’t cause mayhem in other files that link those…
  2. You could have multiple collections that have objects with the same name.
3 Likes

Ah that’s a much better idea

There was work done in the UUID direction, I think it was done by @mont29 , so maybe he can clarify a bit your question :slight_smile:

1 Like

Many ID speed issues are known TODO in Blender (main task would be https://developer.blender.org/T73359), we simply have no man power to tackle it currently.

Note that using UUIDs is not a magic trick here, we can most definitely achieve much better performances without them. We do already have session UUIDs since several months now, which helped quiet a lot for some runtime operations.

But handling name conflicts when adding many objects is not the only (probably not even the main) bottleneck, updating all the runtime/persistent info regarding objects, collections and layer collections is also a huge time sink currently.

3 Likes