For a couple of years now, I am "misusing" Characters for a lot more than "just characters". For those that don't use Virtools, a Character Entity is a 3D entity that has "bodyparts" entities. A bodypart can be a bone, a dummy or a an entity with a (skinned) mesh. You can also add all kind of non bodyparts to the hierarchy.
The interesting aspect is that the whole combination can be treated as one. In the 3D layout window, you usually pick the character entity and thus you translate the complete set. Moreover there is a character parameter type, thus you can search, store, hide etc the whole complex as one.
Office chairs, where you want to be able to change the height or rotate the seat, are a simple example.
Last year I had a combo of particles systems that I wanted to treat as one unit. Easier as asset and easier to create, duplicates etc. Thus I wanted them to be part of a Character.
(Edit: the following passage is not entirely correct, see notice in bold that follows)
The first thing you may notice is you can't easily create any characters or bodyparts inside the Virtools authoring system. Even via the scripting language (VSL) one is not able to create such objects.
Missing VSL bindings is still a problem in Virtools (although things got better). We have a custom DLL where we do our own bindings in these cases, but I wish I would not have to waste my time on this. After I was able to create Characters and bodyparts via VSL I saw that the Level Manager didn't update it's character content. I don't know yet what kind of notification it requires but saving and reloading the file (or asset) fixes the problem.
( EDIT: as pointed out by Julien in the comments, you actually can create characters and bodyparts using bc.CreateObject – just like in the SDK. There's are only no shortcut bindings like bc.CreateEntity3D )
On my first iteration I simply added the particles system dummies to the character hierarchy, but they also were listed separately when loading them at runtime. Unfortunately you can't attach the particle system components (building blocks) onto bodyparts but only onto so called "3D frames" which are the 3d dummies (/gizmos) of Virtools.
"Hey wait!" came into my mind – 3d dummies in Virtools are 3d entities with an additional flag and bodyparts are special 3d entities. So I did the hack: added the flag to my bodyparts and suddenly they accepted the particle system buildings blocks!
I wrote me a little action script that creates a "particle character" from a set of distinct particles systems. I have no idea how solid this is, but so far no complains from the customer! Hehehe …
😉
It makes it much easier to move, load, store particle-system combos (only textures need to be selected manually in some cases).
Wow, this is a nice use of Virtools (kind of artistic in a way 😉 ). According to the missing bindings in VSL, can you give me the list? I may be able to have them binded in vsl (well, not sure at all, but I have some ways to try this 😉 )
Hi. If I remember well you can create characters and bodyparts by calling bc.CreateObject(CKCID_CHARACTER/CKCID_BODYPART, …)
Julien, you're absolutely right! Weird that I overlooked that – bad research. I let myself misleading by the auto-completion propositions of shortcuts like "bc.CreateEntity3D" etc. Thanks for pointing it out !!