2
$\begingroup$

I'm using Blender for creating game assets. "Empty" objects are used as placeholders for various things related to game logic like sockets, ports, etc. "Empty" is always child of mesh to which belongs.

Empty objects are named as "SocketFront", "SocketBack" etc. Suffices like ".001" are fine.

What is not fine is when I add new socket and name it "SocketFront", other object in different scene named "SocketFront" gets renamed to "SocketFront.001", without any WARNING! These "accidental" renames are big problem, because game stores these names in data files and suddenly cannot find "SocketFront" on that model it used to be.

Is there any way to prevent Blender behaving in such way? I'd be okay with:

  • Changing the name of current object automatically (ideal)
  • Showing warning to me that such object already exists
  • Automatically naming all child objects with parent object name as prefix
$\endgroup$
  • 2
    $\begingroup$ Hello Ondřej :), you can also make a design proposal for Blender 2.8 to reference not by names so they don't need to be unique or to implement some better naming conventions. But I am sure they know about it, just there are other priorities and not many developers:( $\endgroup$ – Jaroslav Jerryno Novotny Jan 12 '16 at 16:14
  • 1
    $\begingroup$ As a workaround you could use default Blender behaviour so instead of adding empty "SocketFront" duplicate one already exhisting. This won't work if you don't know whether you should check its exhistance though. $\endgroup$ – Mr Zak Jan 12 '16 at 16:19
4
$\begingroup$

No, this is how blender operates and also one of it's design flaws and known limitations. The software is not very forgiving, you either need to know what you are doing or learn by mistakes - it doesn't warn the user much, every button is basically a nuclear missile launcher (though recently a prompt to quit was added).

What you can do as a workaround is to have a watcher running on background (effectively slowing your blender) to notify you when a name is changed:

Execute a python function whenever the user interacts with the program

You can alter that script to check anything you want (even all the scenes for changes), as it is now it prints name changes of one hadrcoded object into the system console.

|improve this answer|||||
$\endgroup$

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.