Hi there!
There is a small bug in exporter. I’m trying to export scene with morphing animation( “Bezier float” controller ). And it seems that output tangents are adding to weights.
here is the resulting collada file code snippet:
<animation id="">
<source id="time">
<float_array id="time-array" count="3">0 0.966667 2.966667</float_array>
<technique_common>
<accessor source="#time-array" count="3">
<param name="TIME" type="float"></param>
</accessor>
</technique_common>
</source>
<source id="value">
<float_array id="value-array" count="3">00 0.7619090.199717 0.9964780</float_array>
<technique_common>
<accessor source="#value-array" count="3">
<param name="WEIGHT" type="float"></param>
</accessor>
</technique_common>
</source>
<source id="interp">
<Name_array id="nterp-array" count="3">BEZIER BEZIER BEZIER</Name_array>
<technique_common>
<accessor source="#interp-array" count="3">
<param name="WEIGHT" type="Name"></param>
</accessor>
</technique_common>
</source>
<source id="intgt">
<float_array id="intgt-array" count="3">0 -0.199717 0</float_array>
<technique_common>
<accessor source="#intgt-array" count="3">
<param name="WEIGHT" type="float"></param>
</accessor>
</technique_common>
</source>
<source id="outtgt">
<float_array id="outtgt-array" count="3"></float_array>
<technique_common>
<accessor source="#outtgt-array" count="3">
<param name="WEIGHT" type="float"></param>
</accessor>
</technique_common>
</source>
<sampler id="sampler">
<input semantic="INPUT" source="#time"></input>
<input semantic="OUTPUT" source="#value"></input>
<input semantic="INTERPOLATION" source="#nterp"></input>
<input semantic="IN_TANGENT" source="#intgt"></input>
<input semantic="OUT_TANGENT" source="#outtgt"></input>
</sampler>
<channel source="#sampler" target="Sphere01-obj[0]"></channel>
</animation>
and here is code snippet from ColladaExporter.cpp(lines 1515-1521):
–> - my comments :))
case HYBRIDINTERP_FLOAT_CLASS_ID:
ki->GetKey(i, &bfk); keyTime = bfk.time;
vString.append(ap.mapper->Map(bfk.val));
// tangents
itString.append(bfk.intan * fr);
--> // i think there is a mistype in the next line...
vString.append(bfk.outtan * fr);
--> // and it should be like this
--> otString.append(bfk.outtan * fr);
break;
Best regards,
Sergey V. Kuyvalaynen