Page 1 of 1

Dumped Toilet

PostPosted: Tue Aug 07, 2018 4:00 am
by J'Kla
In one of my iterations of the age I added a toilet and used this as an exercise in making a sitable object which I eventually got working.

For subsequent models I no longer need the failed toilet so I deleted it.

Now in subsequent ages this stray toilet pedestal just appears in my exported age.

Now I have deleted all of the working toilets they are not needed in the current model but I still have this stray pedestal as if some strange person was dumping it in my age it has all of its atributes its a colision its textured and in the bloody way.

It does not appear in the Outliner and it is invisible in the blender file but its there when I export the age.

At this time I can just walk around it and it adds a conversation piece and as a dumped toilet pedestal it is a curiosity.

Dumped.png
Dumped.png (529.13 KiB) Viewed 5129 times


It must exist somewhere in the core blender file and it was obviously sitting out of the way until I changed the model and I moved one of my cells to where it was hidden.

I tried creating a new age and only appending the objects I wanted and it just finagled itself into my age and what is realy curious it is not even in the location where I made it.

Re: Dumped Toilet

PostPosted: Thu Aug 09, 2018 8:14 am
by J'Kla
Ok I made a copy of my age file and stripped out everything purged the file closed it then re opened it.

Then I opened a new blender file and went to apend from this new fort.blend and under object there is still stuff there

So I compresed it as a rar file and posted it here.

Fort.rar
(136.93 KiB) Downloaded 386 times


Any ideas?

Re: Dumped Toilet

PostPosted: Thu Aug 09, 2018 12:05 pm
by Sirius
Good idea, this makes it much easier to find the issue. And found it - I think.
It seems the data is still referenced somewhere and as such is not "orphaned" - so Blender won't delete it, and while the objects themselves are no longer in any scene, they are still in the list of Blender objects, so Korman exports them regardless.

You can view those objects by switching the outliner to "Blender File", and opening the "objects" folder. Try clicking on those objects. If you can't select them, it means they can't be selected in the 3D view, which means they are probably your ghost objects. In this case, simply right-click them and click "delete".

As for why they aren't orphaned, it seems it has something to do with how Korman references them (WARNING: technical stuff coming). Usually Blender objects are referenced by "user" objects, which in the case of scene objects is simply the scenes they are in (so if an object is in no scene, object.users==0, if it is in one, object.users==1, if it's in two, objects.users==2, etc. There are similar processes in the case of materials and meshes).
Now usually references from modifiers shouldn't act as users, which means when the object gets deleted these references are broken. But in the case of Korman, things like Plasma modifiers and Nodes act as users for objects, so object.users==1 even though the object is not in any scene, which means the object is not completely deleted. And if two deleted objects reference each other (say the toilet and its click region), it's likely they both prevent each other from being deleted.
(the simplest way to test that is open a Python terminal with an object selected, enter "C.object.users" (which should display 1), then create a Python->Object node in a nodetree and set its value to this object, then reenter the Python command, which will now display 2)

Re: Dumped Toilet

PostPosted: Thu Aug 09, 2018 2:05 pm
by J'Kla
I was not worried it was a random object and handy to know there is a fix.

Now that is something I now know to look out for. :)

Thanks for the advanced explanation, that will probably take a couple of times read before it sinks in.

Re: Dumped Toilet

PostPosted: Thu Aug 09, 2018 5:50 pm
by Tsar Hoikas
Sirius wrote:As for why they aren't orphaned, it seems it has something to do with how Korman references them (WARNING: technical stuff coming). Usually Blender objects are referenced by "user" objects, which in the case of scene objects is simply the scenes they are in (so if an object is in no scene, object.users==0, if it is in one, object.users==1, if it's in two, objects.users==2, etc. There are similar processes in the case of materials and meshes).
Now usually references from modifiers shouldn't act as users, which means when the object gets deleted these references are broken. But in the case of Korman, things like Plasma modifiers and Nodes act as users for objects, so object.users==1 even though the object is not in any scene, which means the object is not completely deleted. And if two deleted objects reference each other (say the toilet and its click region), it's likely they both prevent each other from being deleted.
(the simplest way to test that is open a Python terminal with an object selected, enter "C.object.users" (which should display 1), then create a Python->Object node in a nodetree and set its value to this object, then reenter the Python command, which will now display 2)


So Korman's exporter needs to be patched to only export objects referenced in the scene, it appears?

Re: Dumped Toilet

PostPosted: Fri Aug 10, 2018 5:32 am
by Sirius
That, or prevent references from acting as users to the object (I don't know if that's possible ?).

Re: Dumped Toilet

PostPosted: Fri Aug 10, 2018 6:21 am
by J'Kla
I would prefer that when I deleted stuff it was gone. Just making it so that it does not export adds litter to my blend file and it would explain why I had problems getting this sit to work the first time because I thought Ihad completely removed the previous atempt.

As it is there is stuff still in there I am trying to trace If I start with the default start up blender file and I delete the cube light and camera the file is 441 k if I do a clean out of my original file I was experimenting with including manualy removing a node tree it is still 829 k

To be fair its not actually a bloated file and if there was some way to make Blender just show the possible connections and allow you to remove them then It would be tidier.

For now just removing this stray toilet probably does it for me. :)