Exemple #1
0
void
Md3Model::draw () const
{
  Matrix4x4f m;

  // Draw the model
  renderFrameItpWithVertexArrays (_currFrame, _nextFrame, _interp);

  // Draw models linked to this one
  for (int i = 0; i < _header.num_tags; ++i)
    {
      if (!_links[i])
	continue;

      const Quaternionf &qA = _qtags[_currFrame * _header.num_tags + i]->orient;
      const Quaternionf &qB = _qtags[_nextFrame * _header.num_tags + i]->orient;

      m.fromQuaternion (Slerp (qA, qB, _interp));

      const Vector3f &currPos = _qtags[_currFrame * _header.num_tags + i]->origin;
      const Vector3f &nextPos = _qtags[_nextFrame * _header.num_tags + i]->origin;

      m.setTranslation ((currPos + _interp * (nextPos - currPos)) * _scale);

      glPushMatrix ();
	glMultMatrixf (m);
	_links[i]->draw ();
      glPopMatrix ();
    }
}