I’m starting this topic to hopefully brainstorm some ideas about how to export user defined data from the various packages into collada and how collada should specify where that data comes from.
That means
- notes and comments attached to objects/nodes/meshes, etc.
- custom attributes that may or may not have animation
- blind data
Since it’s a brainstorm (or ブレスト as the Japanese call it) it will probably wander all over.
One problem is probably going to be that the different packages work very differently in this area. I’m currently mostly familar with Maya and so I’m not sure what the other packages can do. Please correct me if I’m wrong. My understanding is that in both Maya and XSI the user can create any arbitrary attribute (float, int, bool, enum, color, vector) and attach it to any node in Maya. You can do this from the UI. No special coding is necessary That node can then generally be animated over time and can be connected or drive any other node in the system either directly or through expressions.
I’m not a Maya expert so in my last exporter when I got a list of attributes of say a DagNode that list had like 180 entries. (a DagNode is matrix in maya under which a mesh might be displayed for example). Since I didn’t want to export all 180 entires my lame solution at the time was to make all my user attributes start with “WW_” so I could easily figure out which attributes were mine.
I suppose another solution would have been to give the exporter some kind of config file that said which attributes I needed exported
That points out a problem for Collada, maybe some team needs all 180 of those standard attributes for which no equivalent exists in another package.
How would Collada solve this? Should it export all 180 always and we’ll just assume that in the large scheme of things there won’t be so much data that it matters?
Maybe under every node in collada there should be an optional <extra> element that is a list of elements of extra data. For example:
<node name="robot">
<extra>
<extradata name="maya.drawOverride.overrideTexturing" type="bool">true</extradata>
<extradata name="maya.renderInfo.indentification" type="short">2</extradata>
</extra>
</node>
That wouldn’t be a generic solution but it would allow me to use Collada even when something wasn’t in the standard and hopefully when and if someone comes up with a specific way to make it standard across platforms it would be a small change to my code to get the data from collada from it’s new standard spot.