[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