You have a ton of options here it just depends on how your skeletons and how your animation scenes are constructed for exporting.
SelectionSets
You could use selectionSets and put all of your exported objects into a “EXPORT” selectionSet. Major downside to that is selectionSets don’t transfer when you merge files. Not really useful.
Layers
You could use Layers. Layers are object exclusive which means an object can only exist in one layer. Layers also can be moved between scenes along with the objects that are being merged.
Downside is you could end up with multiple skeletons within the same layer name. To get past that you must have a scene manager or namespace all of your layers per character/skeleton for example “CREATURE:EXPORT” or “HUMAN:EXPORT”. I wouldn’t suggest this method.
Object Properties
http://docs.autodesk.com/3DSMAX/14/ENU/MAXScript%20Help%202012//index.html?url=files/GUID-AF1F51D4-449B-4C4D-9F58-85DB145BC0B-745.htm,topicNumber=d28e264901
This was the first bit of object meta-tagging we started doing. The problem with object properties is that is just a string of multiple properties that can be easily broken if updated incorrectly. You can end up having multiple properties on the same line and the getters of those properties will fail. I have built a lot of utilities for writing and modifying these on objects which prevents those errors but you need to remember anytime you write to the object properties you call your custom methods.
AppData
http://docs.autodesk.com/3DSMAX/14/ENU/MAXScript%20Help%202012//index.html?url=files/GUID-5517C84B-95A3-430D-BBF2-D62E638FD77-727.htm,topicNumber=d28e255254
I only just recently found out about this one. It seems clean if not limited. The way you apply values is by index which doesn’t make for easy name value pairing. You could assume that index 1 of appData on an object is the export value but that doesn’t seem ideal.
setAppData $ 1 "Export"
-- OK
getAppData $ 1
-- "Export"
Custom Attributes
We have since moved to applying custom attributes to the objects we wish to export. This is good for many reasons including the fact that we are moving our objects between multiple DCC packages ( max, maya, and motionbuilder ) and the attributes are accessible in each application.
To make sure you don’t need to focus on object names which can be accidentally changed or modified storing a base name on a custom attribute that is read-only is helpful. While the object name may change the name you need for exporting can be queried from the custom attribute if need be. We pack a lot of attributes onto objects for moving between DCC apps and exporting to game. We also have custom objects and modifiers that you can add objects to for exporting. The parameter data in the custom modifier can maintain the list of objects you wish to export and the interface can allow you to add and remove objects when necessary. These move with the characters between scenes so the associations are never lost. This is incredibly useful.
Here is some pseudo code for how we may stamp attributes on individual objects.
--Bone Attributes
v_bone_data = attributes v_bone_data
attribid:#(0x6664296c, 0x5dec7a0)
version:1
(
parameters bone_data
(
bone_name type:#string default:"none"
bone_export type:#boolean default:True
bone_parent type:#integer default:-1 animatable:False
)
)
-- Apply attribute class to an object
add_attribute = custAttributes.add obj v_bone_data baseobject:True
-- update attribute data
obj.bone_name = obj.name
obj.bone_export = False