Instancing Broken?

Jason GalterioJason Galterio Posts: 2,562
edited February 2021 in The Commons

I've noticed some odd behavior related to the instancing in the latest DS release.

I created a brazier. I then created three instances of the brazier using the Create > New Node Instances. I had DS create the nodes as "Copy Selected Item." I unparented the instances then moved them where I needed. When done, I parented them back to the original item (and not the instance group). All is good so far.

I create a flame. Parented it to the original item (brazier) then found that there were now four of the flames. All in the same positions as the previously created instances.

Is anyone else seeing similar results?

Here is the Scene set up with the flame parented:

And the results on screen:

Now with the flame unparented and no other changes:

And the screen results:

Capture10.JPG
221 x 181 - 16K
Capture11.JPG
740 x 121 - 27K
Capture12.JPG
249 x 226 - 19K
Capture13.JPG
818 x 125 - 29K
Post edited by Jason Galterio on

Comments

  • fred9803fred9803 Posts: 1,565

    These days I pretty much use edit/duplicate rather than instancing for the reasons you mention above. The purpose of instancing is to lighten the load for repeated textures, but if your duplicated objects have the same textures they will be shared in the same way as instancing does.

  • That's normal. Any instanced item will auto instance any other item that is parented to it.

  • HavosHavos Posts: 5,586
    edited February 2021

    fred9803 said:

    These days I pretty much use edit/duplicate rather than instancing for the reasons you mention above. The purpose of instancing is to lighten the load for repeated textures, but if your duplicated objects have the same textures they will be shared in the same way as instancing does.

    The purpose of instances was never to lighten the texture load, but to lighten the geometry load. If you only have a handful of instances, particularly of low poly props, the overall saving is pretty neglible. However when you move into the hundreds, thousands, or in the case of products like Ultrascenery, hundreds of thousands of instances, then the saving is pretty critical. 

    Post edited by Havos on
  • fred9803fred9803 Posts: 1,565

    That's true Havos but as you say only if you go crazy with hundreds of them. Not in the case of the OP. If you have a scene with say 4 characters sharing the same 4K textures, the VRAM load for the geometry would be far less than the texture load. So the benefit to VRAM of instancing madetate crowd scenes is the saving on them all sharing textures rather than geometry. Geometry is about stable from size on disk to size in GPU. Textures are not so as they live uncompressed in the GPU, so a 4k texture will eat lots of memory compared to geometry.... I suppose until multiple geometries reach a massive level. This is why I can make a scene with a dozen G8F that will fall to CPU, and why it doesn't when I reduce the textures sizes by say 25-50%, with the same geometry in VRAM.

  • My purpose for instancing has nothing to do with anything being discussed here.

    I do it out of habit when I don't need identical items to be distinct. So that if, in the future, I need to conserve resources I don't need to start instancing. It also makes changing the textures easier when I only have to change one item.

    And I disagree that this is "normal" behavior as I don't recall previous versions of DS auto creating instances that can't be seen in the scene details.

  • zombietaggerungzombietaggerung Posts: 3,848
    edited February 2021

    Well, I'm not using 4.15 but I know for sure it does this in both 4.10 and 4.11, which I have installed.

    4.10 parented.jpg
    1276 x 922 - 108K
    4.10 unparented.jpg
    1368 x 923 - 111K
    4.11 parented.jpg
    1203 x 965 - 107K
    4.11 unparented.jpg
    1254 x 970 - 107K
    Post edited by zombietaggerung on
  • zombietaggerung said:

    Well, I'm not using 4.15 but I know for sure it does this in both 4.10 and 4.11, which I have installed.

    If this is true, then why don't the already instanced items that I parented to their origniator do this? Based on this logic they should recursively instance themselves out until the system crashes from a lack of memory.

    How does the new item, that is parented to the original item, suddenly adopt the positioning of the instances?

  • zombietaggerungzombietaggerung Posts: 3,848
    edited February 2021

    Jason Galterio said:

    zombietaggerung said:

    Well, I'm not using 4.15 but I know for sure it does this in both 4.10 and 4.11, which I have installed.

    If this is true, then why don't the already instanced items that I parented to their origniator do this? Based on this logic they should recursively instance themselves out until the system crashes from a lack of memory.

    How does the new item, that is parented to the original item, suddenly adopt the positioning of the instances?

    That I cannot explain, since DS has such wonderful and detailed documentationBut, I think it's because an instance isn't a full copy of an item, as in it's not really "real" as far as DS is concerned. So the original will duplicate anything parented to it, but an instance parented to an instance won't duplicate anything.

    Perhaps @Richard Haseltine can give a better answer.

    Post edited by zombietaggerung on
  • I find it hard to believe that that is the intended behavior.

    This means that once you instance something, you can never parent anything to it. So if I am sitting up a house scene and I want to use the same table in multiple places.. I can't parent the table contents to it, because they will be automatically replicated across all of the other instances, in exactly the same spots, regardless of whether that is wanted or not?

    I have never seen that behavior before and I have used instancing quite often.

  • Jason Galterio said:

    I find it hard to believe that that is the intended behavior.

    This means that once you instance something, you can never parent anything to it. So if I am sitting up a house scene and I want to use the same table in multiple places.. I can't parent the table contents to it, because they will be automatically replicated across all of the other instances, in exactly the same spots, regardless of whether that is wanted or not?

    I have never seen that behavior before and I have used instancing quite often.

    Yes, that's how it has always worked for me. And I don't know why you've never noticed this, all I can say is that this has been standard behavior in my experience (see screenshots in my above post). 

Sign In or Register to comment.