Здраствуйте, в общем вернулся к своей разработке.
Есть такой конфиг у анимации:
[RemoveTracks]
Male_lobby_back_idle_02.70=all
Male_lobby_back_idle_02.71=all
Male_lobby_back_idle_02.72=all
Male_lobby_back_idle_02.73=all
Male_lobby_back_idle_02.74=all
Male_lobby_back_idle_02.75=all
Male_lobby_back_idle_02.76=all
Male_lobby_back_idle_02.77=all
Male_lobby_back_idle_02.78=all
Male_lobby_back_idle_02.79=all
Male_lobby_back_idle_02.80=all
Male_lobby_back_idle_02.81=all
Male_lobby_back_idle_02.82=all
Male_lobby_back_idle_02.83=all
Male_lobby_back_idle_02.84=all
Male_lobby_back_idle_02.85=all
Male_lobby_back_idle_02.86=all
Male_lobby_back_idle_02.87=all
Male_lobby_back_idle_02.88=all
Male_lobby_back_idle_02.89=all
Male_lobby_back_idle_02.90=all
Male_lobby_back_idle_02.91=all
Я так понял флаг all исключает quaternion и position в проигрывании, но тогда что записывать в анимацию
Просто если я
нечего не записываю, такое впечатление что анимация не доигрывается.
Вот к примеру я гружу составную модель (голова, шея, тело, руки, ноги, ступни - все раздельно), но у головы есть доп. кости у скелета 70-91. И вот такой артефакт имеем:
То есть голова как бы не на месте, а остальные части тела нормально стыкуются и проигрываются.
вот кусок моего кода :
case 'RemoveTracks': {
switch(cfgAnim[Anim[i].Name][j].flag) {
case 'trans': {
const t = new Float32Array(times[j]);
const q = new Float32Array(quat[j]);
KeyframeTracks.push(new THREE.QuaternionKeyframeTrack(`${BonesAnim[j].name.toLowerCase()}.quaternion`, t, q));
}
break;
case 'rot':
const t = new Float32Array(times[j]);
const p = new Float32Array(pos[j]);
KeyframeTracks.push(new THREE.VectorKeyframeTrack(`${BonesAnim[j].name.toLowerCase()}.position`, t, p));
break;
case 'all':
// вот этот флаг
break;
}
}
break;
код на гидхабе:
https://github.com/lovepsone/Psk-Loaders/blob/main/src/PSALoader.js#L207