Description of the problem:
I stumbled across this problem when I was trying to turn meshes from a GLTFModel with multiple meshes into InstancedMeshes.
This was working fine and I could instance the meshes as many times as I wanted. Just a view Meshes didn’t want to play along.
After some debugging, I realized that those meshes have been cloned by the GLTFLoader. For some reason it only rendered the first one.
When I excluded the first one from rendering, it rendered the second one and so on…
I was able to reproduce this issue on a smaller scale(see code below):
I created a Object3D with three cubes one of them is the original and two clones. When I add them to the scene, three Cubes appear as intended.
When I instance those three Meshes and add them two the scene, again…
only the first one per instance count gets rendered. Via consol log I can see that they do exist.
Am I right that .clone() is some kind of hidden instancing and double instancing doesn’t work?
Just to clarify: Using .clone() has nothing to do with instancing. three.js does not support auto-instancing. If you clone objects, they are independent render items rendered with separate draw calls.
TBH, I’m not sure I fully understand your question. Any chances to rephrase it so the actual issue becomes more clear?