You'd need to repeat all the properties for all possible objects that can be set as faces (e.g. sprite animations, Tiled Background offsets, etc.), including all the conditions/actions/expressions to access them, all of which duplicates all the existing features in the other objects. Which is why it's designed to just take them from a corresponding instance.
Ashley
Not to necro too old of a thread, but I found this post while running into a similar issue where I'm creating Sprite objects during gameplay that I want to use with more than one 3D Shape object, and the way it currently behaves is somewhat inconsistent with how picking/referencing other objects works in other areas of Construct.
TL;DR version:
Being able to manually pick the specific Sprite object to supply the images shown on multiple instances of 3D Shape's object faces would be useful and potentially help performance when there's otherwise lots (potentially thousands) of instances of the same Sprite object floating around that don't really need to be there if this capability existed.
Details:
If I'm creating the Sprite in a more top-level event before creating the 3D Shape - which generally means that's the most recent picked object Construct should know I'm referring to, and C3 does appear to keep track of the most recently-spawned Sprite throughout the process I'm describing - when I assign a Sprite object to the faces of the 3D Shape, it's picking a random Sprite instance if I create more than one 3D Shape object after creating the Sprite object.
This is consistent with how you're describing the intended behavior Ashley but if multiple objects are using the same image (and always will) it seems like if I either create a sprite during a higher level event or pick a sprite by IID/UID, then that should be the object that's used as a reference for the 3D Shape. Otherwise there's a lot of unused objects floating around the layout and I have noticed some (however small) performance impact when doing it this way, and that impact can add up.
As an example, here's a procedurally generated layout where if the walls are only a single 3D Shape object on each "tile," Sprite/3D Shape pairs are correctly assigned:
If there are multiple 3D Shape objects created at each "tile" to create higher walls (no, scaling the z Height of a single 3D Shape object isn't an option for other reasons) then the wrong Sprite objects are picked and the results aren't quite as intended:
Since each 3D Shape object is using the same image as other 3D Shape objects on the same "tile," this seems like something that should work and also reduces object count. What could be even more efficient is creating only enough Sprites to represent every image/animation, and then be able to re-use those where needed to apply images to the necessary 3D Shape objects, reducing the object count - and improving performance, as there IS a verifiable impact - even further. Mikal has implemented a similar solution for his 3D Object addon and it works wonders around saving memory usage and eliminating the need to have multiple copies of the exact same object floating around eating up CPU cycles and memory.
As an example, all of the 3D Object in the image below - the terrain is a DrawCanvas mesh and uses only standard C3 features, the trees/rocks are what I'm referring to - reference the same "prefab" object that has the model & texture data. Similar to the official 3D Shape object, deleting the original would also remove it from every instance of the object, so this 3rd-party addon is already working in a way more in line with how the rest of C3 functions than the official 3D Shape object. It would be nice to see parity for the reasons described above, and this would also bring the 3D Shape object in line with how (I think) people generally expect C3 to work.