Using 2 different libraries (A and B) based on threejs
.
Each library generates valid threejs
meshes independently. However, the id of the meshes from library A and B can conflict (i.e. be the same). Then when we add meshes from library A and B into the same scene it does not render properly.
Is there a mechanism we can use to generate meshes independently and ensure IDs do not conflict while rendering it in the same scene?
One idea is to add a prefix concept:
Object.defineProperty( this, 'id', { value: object3DId ++ } );
=>
Object.defineProperty( this, 'id', { value: `${prefix}-${object3DId ++}` } );
Not quite sure which would be the best way to pass the prefix though.
Any thoughts on that?
Thanks
Now I think about it, I think you have bigger problems if there are actually multiple instances of THREE loaded in your app. If you manage to let both libraries use the same instance, then your problems will also be gone. I would suggest trying this instead of “hacking” around the ID generation.
FYI – I fixed
ami
to work nicely with different version ofthree
using a factory pattern. We can close the issue or keep it open if you think such a feature (prefix id) may be useful at some point.