Спасибо, но код у меня примерно такой же (т.к. у меня формат SMD, то я использую 5 весов), мне интересно как вы получаете:
Код
uniform mat4 bind_shape_matrix;
uniform mat4 joints_matrices[100];
uniform mat4 joints_inv_matrices[100];
Добавлено (09 сентября 2015, 23:02)
---------------------------------------------
никто не поможет?
я ж почти разобрался, мне бы знать как умножать кость на позицию, поясню
если умножаю таким образом:
Код
for (int i = 0; i < Кол-во_Костей; i++)
Финальная_Матрица[i] = Кости[i].Просчитанный_Поворот *
(Кости[i].Parent == -1 ?
Matrix::Identity() : Кости[Кости[i].Parent].Просчитанный_Поворот);
//Поворот кости по глобальным координатам * Родительскую ротацию, если возможно
Псевдо-код выше показывает такую-же картинку, как и Blender(Если не у одной кости нет позиции(в файле позиции по нулям поставил)), но если сделать следующее, то всё печально,
какая-то ересь получается...
Код
for (int i = 0; i < Кол-во_Костей; i++)
Финальная_Матрица[i] = Кости[i].Просчитанный_Поворот_Умноженный_На_Позицию *
(Кости[i].Parent == -1 ?
Matrix::Identity() : Кости[Кости[i].Parent].Просчитанный_Поворот_Умноженный_На_Позицию);
//(Поворот кости по глобальным координатам * Позицию этой кости по локальным коордам) * (Поворот родительской кости по глобальным координатам * Позицию родительской кости по локальным коордам), если возможно