[xoreos-devel] KotOR animations
Vsevolod Kremianskii
vkremianskii at gmail.com
Sun Aug 27 10:26:43 CEST 2017
Alright, it works. Sort off. Except for that ugly mesh deformation issue. I
wonder if somebody could set me in the right direction from here.
Here's how it's done:
I load position and orientation controllers for every animation node, which
pretty much does it for the skeleton (also heads, since they're attached to
the headhook).
I load bone mapping from skin mesh header and per vertex bone data from MDX
(as described here
<https://github.com/xoreos/xoreos-docs/blob/master/specs/kotor_mdl.html>).
When animation gets updated I iterate through model's skinned nodes and for
every vertex do the following:
I iterate over nodes (bones) that affect the vertex and create each node's
global transformation matrix (relative to the root node). Then I multiply
initial vertex coordinates by the transformation matrix and multiply that
by the bone weight. Resulting vertex coordinates are calculated as a sum of
four transformed vertices. There are some optimizations in place so it
isn't quite as bad as it sounds.
for (uint32 i = 0; i < vertexCount; ++i) {
v[0] = 0;
v[1] = 0;
v[2] = 0;
for (uint8 j = 0; j < 4; ++j) {
int index = static_cast<int>(b[4 + j]);
if (index != -1) {
float rv[3];
transform = transArr + (index * 16);
transform.multiply(iv, rv);
v[0] += rv[0] * b[j];
v[1] += rv[1] * b[j];
v[2] += rv[2] * b[j];
}
}
v += stride;
iv += 3;
b += 8;
}
Now, the problem is that weird stretching issue. I have no idea what could
cause that at the moment.
<goog_555208919>
https://yadi.sk/i/0hnd2a0M3MMYJR
https://yadi.sk/i/jdiTSrXZ3MMYL3
https://yadi.sk/i/Vm3kRTVf3MMYKQ
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://xoreos.org/pipermail/xoreos-devel/attachments/20170827/06b3252e/attachment.html>
More information about the xoreos-devel
mailing list