Instancify looks pretty great
Sevrin
Posts: 6,310
in The Commons
So Instancify looks pretty awesome. I've bought products with dozens of the same item, especially tables and chairs and often wondered why instances weren't used instead. I'm really looking forward to using this.
Congrats Code 66.
Comments
Can you give your thoughts on it when you’ve had a play with it? I’m interested in it but still on the fence.
Thanks, althought it should be a DO (DAZ Original) - the store hickups probably made it loose the tag, but I did develop it, with inspiration and testing from @LAdair
The main reason instances are not used are sets that are for both DAZ Studio and Poser, as Poser don't (or maybe didn't) have support for instances, and sets created before instances arrived in DS.
It really does look very usefull for those of us who use the older products, or stuff that was built cross-platform. I'm mildly concerned about it stalling out if there are already instances in the scene, though. Quite a lot of my built and saved scenes have already instances, although I suspect that duplicates could still be further reduced.
Still, I can definitely see running this whenever loading an older set as a preparitory step before starting with the new scene build.
If the scene has instances it will cowardly refuse to touch anything
So, if there are too many people for the scene to fit into the graphics card memory, could this turn the human figures into instances and make them fit? Would they have to all have the exact same morph and texture?
Instances need to be identical in all respects apart from their root translation, rotation and scale. This means identical posing, but in a large enough crowd, having a few different versions to choose from usually isn't too obvious.
Hmm. That's a bit of a hassle if for whatever reason you need to swap out parts of the environment later on in a build. I'll often set up the core of the scene and then load/fit in the background environment later, and sometimes that "core scene" does involve instances.
(For example, I've been recently experimenting with using UltraScatter to generate instanced raindrops, which has surprisingly turned out to be less demanding on my low end machine than rain "cards" are. There might be 100,000 rain drops, but most light rays only hit one or two on average, as opposed to having to be calculated each time they hit a card. And, of course, it just looks so much better, with proper detail and depth to the cloud of droplets).
... but, nonetheless, I've been waiting for something like this for a good while, so I'm nonetheless very pleased to see it hit the store!
...is that already figured in the current price. This does seem like a great tool particualrly for those (like myself) with older hardware. I tend to create fairly "heavy" scenes with lots of elements that are often identical (I have alot of "construction" sets) and in OpenGL (I don't bother with Iray View) it gets difficult to navigate around and move items in them..
thanks, great product to recommand. Just bought it and will give it a try on the weekend, btw do you see a lot compomise on your scene?
I was looking for something like this because my current PC just can't do much whenever there're 3 gen8 figures on screen at once, the way iray engine works in DAZ seems to path trace everything including those aren't in the camera view. I learnt to manual cut down details in my scene in order to make everything to work, but bpending hours for 1 or 2 render is just not a good time investment for my taste, and none of the RTX 3000x GPU is in stock. This product seem to be perfect for my work, also I had my eye on this as well.
https://www.daz3d.com/scene-optimizer
off typoic: the way this guy titled his product won't help people to find it.
Does anyone know if this will work with a model I made that for example has dozens of identical columns, that were instances in the modeling program, but once exported are no longer instances... or would the model require you to have the copies made and positioned in DS for this to work?
If it's the first one, then this very, very useful... I have huge set models I've made with hundreds of instanced parts which are too bothersome/difficult to do the instancing and positioning in DS.
Depends on how they are created and saved before put into the scene. It uses the prop scene information to determine if two props are the same. I guess if you imported as you did, DS has created multiple different props with different IDs.
With DAZ search they wouldn't have been able to find it anyway.
Well in the third image down on this page:
http://www.redhen-publications.com/hoggywarty2019.html
Six of the kitchen elves are instances, just posed in different places at different rotations. So, yes, you can instance people. But I don't think a script could do it. You'd have to do it manually.
Correct - it will cowardly refuse to instance things that has moved bones (posed or morphed)
@Totte, "Cowardly." That's funny!
Okay, I'm going to weigh in on this conversation. With all the products in Daz to turn instances into objects, I was lamenting the lack of one to do the opposite, turn objects into instances, and Totte spoke up and said he could do that. By the next day, he had a rudimentary script and asked me if I wanted to beta test it. Poor Totte. I said "Yes!"
This script does everything I wanted. Does it have some limitations? Of course it does. There are specific conditions that the script looks for, reports to you, and then ends. With the list of items preventing Instancify from running, you can choose to "fix" those issue and run the script again.
Instancify provides a list of objects that have duplicates. You can choose to instance all of those with a click of one button, or you can select individual objects and only instance those. The script will create an Instance Group for the instances it creates each time you run it. If you want to keep all the instances of a building separate from the instances of the trees outside that building, for example, running the script twice, (selecting the building objects one run, and the tree objects the next,) will give you two Instance Groups. As long as you leave the instances created by Instancify in the Groups created by Instancify, you can run the script as many times as you need.
This script isn't intended for creating instances of figures and I recommend it be used on the scene prior to adding figures, including people, animals and creatures.
@McGyver, If Daz Studio creates "multiple different props with different IDs" when importing the model as Totte mentioned, you can select all props you know to be the same and assign them all the same Scene Identification in one operation. Once they have the same Scene ID, Instancify will recognize they are multiples of one object. Instancify will assign the same location to an instance as the original object has. In most cases, that means you won't see a difference in your scene once the script is finished. You will find a number of cases where there are exceptions and how to handle them in the back of the 14-page PDF manual.
My scripts usually are cowards, as heroes tend to randomly delete peoples harddrives, or worse :P
@Totte ,okay so for example "The Forest" by Andrey Pestryakov ,will" Instancify" work on that ?
@carrie58, if you mean this one, Forest, and/or the Forest Superior, I have those, and as I recall, many of those trees are several trees as one object. I don't know if there are multiples of identical objects.
Give me a few minutes, (or more,) and I'll load those and run the script.
they are all one load but I chopped them up with the geometry editor and used Ultrascatter
@carrie58, running the script on the Forest returns a message there is nothing to do. Running the script on Forest Superior will work, but be only marginally beneficial. There are only two tree objects that have one duplicate each. You would only save 14040 polygons, for a polygon count reduction of only 0.29%.
Yes I have both of those thank you , at least in Forest I know there are a varity of trees used multple times with just changes in their height and rotatation and translation ,but each different tree type is saved as 1 object if that makes sense....
Ah, L'Adair beat me to it.
Yes, there are some environment sets that have large "objects" with many things in it, they cannot be split up. It's difficult to know before hand what will work or not, but often older sets that also was made for Poser and that uses the same prope several times are often very good to run it on, or when you build with construction sets or use presets from them.
Well actually I had been working at breaking up Forest into quarters so that smaller sections could be turned off ,using the individual tree props ,posing them and saving each group of tree types as a seperate scene ,mind you I still haven't finished but if the Instancify would work on those smaller sections ......am I making any sense? Will it work on a scene subset or does it need to be aPoser prop?
Thank you @ L'Adair
As long as items are individual props that are the same, it works, have the same "prop name"
Cool well that means I'll get back to breaking/and replacing trees ..... fun fun ,yes I bought Instancify ......
Two questions.
First question: Will the script still be a coward if you turn the visibility of any instances in the scene off in the scene tab?
Second question: For those of us who split up our libraries by content, does this mean that we will need to install the script in every library of items which may need to have the script run on them. I see in my Applicatiopns folder that the main program install folder does have a folder for scripts (no idea how to access them from the program, but the program is tied up in a render and I can't go in and look for whether there is a menu item for scripts anywhere), but there is no runtime folder with a Support folder inside the program folder in the Applications.
Or, should one put the script in the Application's Script folder, and duplicate the support files in all the Support folders in every one of your Content Libraries?
@JOdel, I'll answer the second question first. The script only runs on objects in the scene. You only need to install in one location, although as many scripts do, it probably needs to be in the scripts folder, and should be installed using DIM/Central, or manually, not with Daz Connect. When Totte is back online, he can verify that.
To your first question, yes, the script will see objects and instances whether visibility is on or off. In fact, if you have 10 identical objects and 5 of them have visibility off, the script will still create nine instances, but it will respect the visibility of the originals.
Although this is not "official", I was able to "Hide" an instance by moving it into the Instance Group created by Instancify. Also, I detail several ways of getting around limitations in an appendix of the manual.
Honestly, I think you're going to love this utility. However, with the 30-day return policy and the discounts available during this sale, I recommend you buy it, read the manual from "cover to cover", (it's a fast read,) see if you can come up with a workaround for existing instances that fits your workflow, and if you find it isn't working for you, return it! (But I don't think you will.)
One product, that wasn't an old product, but that caused me a lot of problems on a 1080 card with 16 Gb of system RAM was the Burger Restaurant, with dozens of duplicate tables, chairs and benches. Instancify cut down the polygon count by nearly half.
It sounds like I'll just need to run it early in my workflow, when I first load the scene that I intend to run it on. My own older saved scenes with their half-arsed collection of duplicates and instances I'll just eventually need fo go in and edit independently.
Yes. But with a tiny bit of planning, you can speed those along. If you remove your instances first, you can run Instancify and then add your instances back into the file.
I've done that by moving the instances and their parents into their own group, saving a Scene Subset of the group and then deleting the group. After I was done with Instancify, I merged the subset back into the file.