Animation looping fix

This commit is contained in:
viktorljung
2016-02-10 23:19:44 +01:00
parent 224e95f34a
commit dded296cde
4 changed files with 20 additions and 493 deletions
+1 -1
Submodule assets updated: 45cbc3abae...172b3ad527
+15 -490
View File
@@ -55,498 +55,23 @@
</c:Transform>
</Components>
<Children>
<Entity name="Skeleton">
<Entity name="R_Arm_Weapon_Joint">
<Components>
<c:Transform/>
<c:BoneAttachment>
<BoneName>R_Arm_Weapon_Joint</BoneName>
<ScaleOffset X="0.200000003" Y="0.200000003" Z="0.200000003"/>
</c:BoneAttachment>
<c:Model>
<Resource>Models/Weapons/Blue/AssaultWeapon.mesh</Resource>
<Color A="1" B="1" G="1" R="19.6078434"/>
<Transparent>true</Transparent>
</c:Model>
<c:Transform>
<Position X="0.144055843" Y="0.970111489" Z="-0.126199633"/>
<Orientation X="-0.535831392" Y="0.0691146553" Z="-0.0608282126"/>
</c:Transform>
</Components>
<Children>
<Entity name="R_Arm_Weapon_Joint">
<Components>
<c:BoneAttachment>
<BoneName>R_Arm_Weapon_Joint</BoneName>
<ScaleOffset X="0.200000003" Y="0.200000003" Z="0.200000003"/>
</c:BoneAttachment>
<c:Model>
<Resource>Models/Weapons/Blue/AssaultWeapon.mesh</Resource>
<Color A="1" B="1" G="1" R="19.6078434"/>
<Transparent>true</Transparent>
</c:Model>
<c:Transform>
<Position X="0.146708429" Y="0.959003806" Z="-0.144033641"/>
<Orientation X="-0.690611959" Y="0.0597511008" Z="0.907224596"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="R_Hand">
<Components>
<c:BoneAttachment>
<BoneName>R_Hand</BoneName>
<ScaleOffset X="0.200000003" Y="0.200000003" Z="0.200000003"/>
</c:BoneAttachment>
<c:Model>
<Resource>Models/Core/UnitCube.mesh</Resource>
<Color A="1" B="19.6078434" G="19.6078434" R="1"/>
</c:Model>
<c:Transform>
<Position X="0.19621858" Y="0.975460351" Z="-0.104317382"/>
<Scale X="0.0500000007" Y="0.0500000007" Z="0.0500000007"/>
<Orientation X="-0.690611959" Y="0.0597511008" Z="0.907224596"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="R_Arm">
<Components>
<c:BoneAttachment>
<BoneName>R_Arm</BoneName>
<ScaleOffset X="0.200000003" Y="0.200000003" Z="0.200000003"/>
</c:BoneAttachment>
<c:Model>
<Resource>Models/Core/UnitCube.mesh</Resource>
<Color A="1" B="19.6078434" G="19.6078434" R="1"/>
</c:Model>
<c:Transform>
<Position X="0.112078801" Y="1.12475431" Z="0.0186089575"/>
<Scale X="0.0500000007" Y="0.0500000007" Z="0.0500000007"/>
<Orientation X="0.348061472" Y="-0.280602992" Z="0.0212468337"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="R_Shoulder">
<Components>
<c:BoneAttachment>
<BoneName>R_Shoulder</BoneName>
<ScaleOffset X="0.200000003" Y="0.200000003" Z="0.200000003"/>
</c:BoneAttachment>
<c:Model>
<Resource>Models/Core/UnitCube.mesh</Resource>
<Color A="1" B="19.6078434" G="19.6078434" R="1"/>
</c:Model>
<c:Transform>
<Position X="0.0998888761" Y="1.06440032" Z="-0.0541408062"/>
<Scale X="0.0500000007" Y="0.0500000007" Z="0.0500000007"/>
<Orientation X="0.676645637" Y="0.781097531" Z="0.295018554"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="Neck">
<Components>
<c:BoneAttachment>
<BoneName>Neck</BoneName>
<ScaleOffset X="0.200000003" Y="0.200000003" Z="0.200000003"/>
</c:BoneAttachment>
<c:Model>
<Resource>Models/Core/UnitCube.mesh</Resource>
<Color A="1" B="19.6078434" G="19.6078434" R="19.6078434"/>
</c:Model>
<c:Transform>
<Position X="0.0595470108" Y="1.13743448" Z="-0.115631148"/>
<Scale X="0.0500000007" Y="0.100000001" Z="0.0500000007"/>
<Orientation X="0.474229157" Y="0.226053014" Z="0.283275545"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="Spine_3">
<Components>
<c:BoneAttachment>
<BoneName>Spine_3</BoneName>
<ScaleOffset X="0.200000003" Y="0.200000003" Z="0.200000003"/>
</c:BoneAttachment>
<c:Model>
<Resource>Models/Core/UnitCube.mesh</Resource>
<Color A="1" B="1" G="19.6078434" R="19.6078434"/>
</c:Model>
<c:Transform>
<Position X="0.040999718" Y="1.07331288" Z="-0.0806797668"/>
<Scale X="0.0500000007" Y="0.100000001" Z="0.0500000007"/>
<Orientation X="0.676645637" Y="0.781097531" Z="0.295018554"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="Spine_2">
<Components>
<c:BoneAttachment>
<BoneName>Spine_2</BoneName>
<ScaleOffset X="0.200000003" Y="0.200000003" Z="0.200000003"/>
</c:BoneAttachment>
<c:Model>
<Resource>Models/Core/UnitCube.mesh</Resource>
<Color A="1" B="1" G="19.6078434" R="19.6078434"/>
</c:Model>
<c:Transform>
<Position X="0.0108884424" Y="0.970344663" Z="-0.0237468518"/>
<Scale X="0.0500000007" Y="0.100000001" Z="0.0500000007"/>
<Orientation X="0.676645637" Y="0.781097531" Z="0.295018554"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="Spine_1">
<Components>
<c:BoneAttachment>
<BoneName>Spine_1</BoneName>
<ScaleOffset X="0.200000003" Y="0.200000003" Z="0.200000003"/>
</c:BoneAttachment>
<c:Model>
<Resource>Models/Core/UnitCube.mesh</Resource>
<Color A="1" B="1" G="19.6078434" R="19.6078434"/>
</c:Model>
<c:Transform>
<Position X="0.000923306216" Y="0.839232147" Z="-0.0103478255"/>
<Scale X="0.0500000007" Y="0.100000001" Z="0.0500000007"/>
<Orientation X="0.453410149" Y="0.84963572" Z="0.317277819"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="Hip">
<Components>
<c:BoneAttachment>
<BoneName>Hip</BoneName>
<ScaleOffset X="0.200000003" Y="0.200000003" Z="0.200000003"/>
</c:BoneAttachment>
<c:Model>
<Resource>Models/Core/UnitCube.mesh</Resource>
<Color A="1" B="1" G="19.6078434" R="19.6078434"/>
</c:Model>
<c:Transform>
<Position X="0" Y="0.706098855" Z="0"/>
<Scale X="0.100000001" Y="0.0500000007" Z="0.0500000007"/>
<Orientation X="0.0795478821" Y="0.278701752" Z="0.00956994947"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="L_Leg_Top">
<Components>
<c:BoneAttachment>
<BoneName>L_Leg_Top</BoneName>
<ScaleOffset X="0.200000003" Y="0.200000003" Z="0.200000003"/>
</c:BoneAttachment>
<c:Model>
<Resource>Models/Core/UnitCube.mesh</Resource>
<Color A="1" B="1" G="19.6078434" R="1"/>
</c:Model>
<c:Transform>
<Position X="-0.0715532005" Y="0.667656481" Z="-0.0155252069"/>
<Scale X="0.0500000007" Y="0.0500000007" Z="0.0500000007"/>
<Orientation X="-0.863384187" Y="-0.0913920924" Z="-0.0523470864"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="L_Leg_Bottom">
<Components>
<c:BoneAttachment>
<BoneName>L_Leg_Bottom</BoneName>
<ScaleOffset X="0.200000003" Y="0.200000003" Z="0.200000003"/>
</c:BoneAttachment>
<c:Model>
<Resource>Models/Core/UnitCube.mesh</Resource>
<Color A="1" B="1" G="19.6078434" R="1"/>
</c:Model>
<c:Transform>
<Position X="-0.0830632523" Y="0.43405664" Z="-0.297806978"/>
<Scale X="0.0500000007" Y="0.0500000007" Z="0.0500000007"/>
<Orientation X="0.227692038" Y="-0.13753739" Z="-0.134345591"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="L_Foot">
<Components>
<c:BoneAttachment>
<BoneName>L_Foot</BoneName>
<ScaleOffset X="0.200000003" Y="0.200000003" Z="0.200000003"/>
</c:BoneAttachment>
<c:Model>
<Resource>Models/Core/UnitCube.mesh</Resource>
<Color A="1" B="1" G="19.6078434" R="1"/>
</c:Model>
<c:Transform>
<Position X="-0.0640328377" Y="0.0827684402" Z="-0.195051223"/>
<Scale X="0.0500000007" Y="0.0500000007" Z="0.0500000007"/>
<Orientation X="-0.191934288" Y="0.0670221746" Z="0.0191321708"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="L_Toe">
<Components>
<c:BoneAttachment>
<BoneName>L_Toe</BoneName>
<ScaleOffset X="0.200000003" Y="0.200000003" Z="0.200000003"/>
</c:BoneAttachment>
<c:Model>
<Resource>Models/Core/UnitCube.mesh</Resource>
<Color A="1" B="1" G="19.6078434" R="1"/>
</c:Model>
<c:Transform>
<Position X="-0.057431899" Y="0.0840257108" Z="-0.387664855"/>
<Scale X="0.0500000007" Y="0.0500000007" Z="0.0500000007"/>
<Orientation X="-0.191934288" Y="0.0670221746" Z="0.0191321708"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="L_Shoulder">
<Components>
<c:BoneAttachment>
<BoneName>L_Shoulder</BoneName>
<ScaleOffset X="0.200000003" Y="0.200000003" Z="0.200000003"/>
</c:BoneAttachment>
<c:Model>
<Resource>Models/Core/UnitCube.mesh</Resource>
<Color A="1" B="1" G="19.6078434" R="1"/>
</c:Model>
<c:Transform>
<Position X="0.0232796557" Y="1.04240012" Z="-0.133887768"/>
<Scale X="0.0500000007" Y="0.0500000007" Z="0.0500000007"/>
<Orientation X="0.676645637" Y="0.781097531" Z="0.295018554"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="L_Arm">
<Components>
<c:BoneAttachment>
<BoneName>L_Arm</BoneName>
<ScaleOffset X="0.200000003" Y="0.200000003" Z="0.200000003"/>
</c:BoneAttachment>
<c:Model>
<Resource>Models/Core/UnitCube.mesh</Resource>
<Color A="1" B="1" G="19.6078434" R="1"/>
</c:Model>
<c:Transform>
<Position X="-0.0629788637" Y="1.0744822" Z="-0.163618684"/>
<Scale X="0.0500000007" Y="0.0500000007" Z="0.0500000007"/>
<Orientation X="-0.526039183" Y="0.750539362" Z="-0.983756781"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="L_Hand">
<Components>
<c:BoneAttachment>
<BoneName>L_Hand</BoneName>
<ScaleOffset X="0.200000003" Y="0.200000003" Z="0.200000003"/>
</c:BoneAttachment>
<c:Model>
<Resource>Models/Core/UnitCube.mesh</Resource>
<Color A="1" B="1" G="19.6078434" R="1"/>
</c:Model>
<c:Transform>
<Position X="0.051236406" Y="0.847513258" Z="-0.384556502"/>
<Scale X="0.0500000007" Y="0.0500000007" Z="0.0500000007"/>
<Orientation X="0.773511231" Y="0.0559770092" Z="-2.11538386"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="L_Shoulder_Armor_Joint">
<Components>
<c:BoneAttachment>
<BoneName>L_Shoulder_Armor_Joint</BoneName>
<ScaleOffset X="0.200000003" Y="0.200000003" Z="0.200000003"/>
</c:BoneAttachment>
<c:Model>
<Resource>Models/Core/UnitCube.mesh</Resource>
<Color A="1" B="1" G="19.6078434" R="1"/>
</c:Model>
<c:Transform>
<Position X="-0.0417820327" Y="1.11634767" Z="-0.207201466"/>
<Scale X="0.0500000007" Y="0.0500000007" Z="0.0500000007"/>
<Orientation X="0.676645637" Y="0.781097472" Z="0.514142215"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="Chin">
<Components>
<c:BoneAttachment>
<BoneName>Chin</BoneName>
<ScaleOffset X="0.200000003" Y="0.200000003" Z="0.200000003"/>
</c:BoneAttachment>
<c:Model>
<Resource>Models/Core/UnitCube.mesh</Resource>
<Color A="1" B="19.6078434" G="19.6078434" R="19.6078434"/>
</c:Model>
<c:Transform>
<Position X="0.0709581524" Y="1.10222101" Z="-0.22557795"/>
<Scale X="0.0500000007" Y="0.0500000007" Z="0.0500000007"/>
<Orientation X="0.511836052" Y="0.034663897" Z="0.28629449"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="Head">
<Components>
<c:BoneAttachment>
<BoneName>Head</BoneName>
<ScaleOffset X="0.200000003" Y="0.200000003" Z="0.200000003"/>
</c:BoneAttachment>
<c:Model>
<Resource>Models/Core/UnitCube.mesh</Resource>
<Color A="1" B="19.6078434" G="19.6078434" R="19.6078434"/>
</c:Model>
<c:Transform>
<Position X="0.0924771726" Y="1.22002876" Z="-0.173797935"/>
<Scale X="0.0500000007" Y="0.0500000007" Z="0.0500000007"/>
<Orientation X="0.511836052" Y="0.034663897" Z="0.28629449"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="Perietal">
<Components>
<c:BoneAttachment>
<BoneName>Perietal</BoneName>
<ScaleOffset X="0.200000003" Y="0.200000003" Z="0.200000003"/>
</c:BoneAttachment>
<c:Model>
<Resource>Models/Core/UnitCube.mesh</Resource>
<Color A="1" B="19.6078434" G="19.6078434" R="19.6078434"/>
</c:Model>
<c:Transform>
<Position X="0.143368542" Y="1.36145091" Z="-0.268759578"/>
<Scale X="0.0500000007" Y="0.0500000007" Z="0.0500000007"/>
<Orientation X="0.511836052" Y="0.034663897" Z="0.28629449"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="L_Elbow">
<Components>
<c:BoneAttachment>
<BoneName>L_Elbow</BoneName>
<ScaleOffset X="0.200000003" Y="0.200000003" Z="0.200000003"/>
</c:BoneAttachment>
<c:Model>
<Resource>Models/Core/UnitCube.mesh</Resource>
<Color A="1" B="1" G="19.6078434" R="1"/>
</c:Model>
<c:Transform>
<Position X="-0.0896638185" Y="0.883698523" Z="-0.277650088"/>
<Scale X="0.0500000007" Y="0.0500000007" Z="0.0500000007"/>
<Orientation X="-1.29343295" Y="0.500798821" Z="-1.7653892"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="R_Leg_Bottom">
<Components>
<c:BoneAttachment>
<BoneName>R_Leg_Bottom</BoneName>
<ScaleOffset X="0.200000003" Y="0.200000003" Z="0.200000003"/>
</c:BoneAttachment>
<c:Model>
<Resource>Models/Core/UnitCube.mesh</Resource>
<Color A="1" B="19.6078434" G="19.6078434" R="1"/>
</c:Model>
<c:Transform>
<Position X="0.169350237" Y="0.325810552" Z="-0.0545702502"/>
<Scale X="0.0500000007" Y="0.0500000007" Z="0.0500000007"/>
<Orientation X="1.05215073" Y="0.426247299" Z="0.235435873"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="R_Elbow">
<Components>
<c:BoneAttachment>
<BoneName>R_Elbow</BoneName>
<ScaleOffset X="0.200000003" Y="0.200000003" Z="0.200000003"/>
</c:BoneAttachment>
<c:Model>
<Resource>Models/Core/UnitCube.mesh</Resource>
<Color A="1" B="19.6078434" G="19.6078434" R="1"/>
</c:Model>
<c:Transform>
<Position X="0.326490343" Y="1.00602782" Z="0.0126616545"/>
<Scale X="0.0500000007" Y="0.0500000007" Z="0.0500000007"/>
<Orientation X="-1.18299294" Y="-0.366671294" Z="1.66835237"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="R_Leg_Top">
<Components>
<c:BoneAttachment>
<BoneName>R_Leg_Top</BoneName>
<ScaleOffset X="0.200000003" Y="0.200000003" Z="0.200000003"/>
</c:BoneAttachment>
<c:Model>
<Resource>Models/Core/UnitCube.mesh</Resource>
<Color A="1" B="19.6078434" G="19.6078434" R="1"/>
</c:Model>
<c:Transform>
<Position X="0.0702434108" Y="0.66948396" Z="0.025169529"/>
<Scale X="0.0500000007" Y="0.0500000007" Z="0.0500000007"/>
<Orientation X="-0.270252436" Y="0.219192564" Z="-0.194402263"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="R_Foot">
<Components>
<c:BoneAttachment>
<BoneName>R_Foot</BoneName>
<ScaleOffset X="0.200000003" Y="0.200000003" Z="0.200000003"/>
</c:BoneAttachment>
<c:Model>
<Resource>Models/Core/UnitCube.mesh</Resource>
<Color A="1" B="19.6078434" G="19.6078434" R="1"/>
</c:Model>
<c:Transform>
<Position X="0.111992255" Y="0.145771623" Z="0.259642601"/>
<Scale X="0.0500000007" Y="0.0500000007" Z="0.0500000007"/>
<Orientation X="0.824790478" Y="0.332380295" Z="0.256255209"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="R_Toe">
<Components>
<c:BoneAttachment>
<BoneName>R_Toe</BoneName>
<ScaleOffset X="0.200000003" Y="0.200000003" Z="0.200000003"/>
</c:BoneAttachment>
<c:Model>
<Resource>Models/Core/UnitCube.mesh</Resource>
<Color A="1" B="19.6078434" G="19.6078434" R="1"/>
</c:Model>
<c:Transform>
<Position X="0.169808939" Y="-0.0109154135" Z="0.163479775"/>
<Scale X="0.0500000007" Y="0.0500000007" Z="0.0500000007"/>
<Orientation X="0.824790478" Y="0.332380295" Z="0.256255209"/>
</c:Transform>
</Components>
<Children/>
</Entity>
<Entity name="R_Shoulder_Armor_Joint">
<Components>
<c:BoneAttachment>
<BoneName>R_Shoulder_Armor_Joint</BoneName>
<ScaleOffset X="0.200000003" Y="0.200000003" Z="0.200000003"/>
</c:BoneAttachment>
<c:Model>
<Resource>Models/Core/UnitCube.mesh</Resource>
<Color A="1" B="19.6078434" G="19.6078434" R="1"/>
</c:Model>
<c:Transform>
<Position X="0.14515765" Y="1.17003202" Z="-0.012605153"/>
<Scale X="0.0500000007" Y="0.0500000007" Z="0.0500000007"/>
<Orientation X="0.676645637" Y="0.781097531" Z="0.130682677"/>
</c:Transform>
</Components>
<Children/>
</Entity>
</Children>
<Children/>
</Entity>
</Children>
</Entity>
-2
View File
@@ -13,9 +13,7 @@ void AnimationSystem::UpdateComponent(EntityWrapper& entity, ComponentWrapper& a
return;
}
Skeleton* skeleton = model->m_RawModel->m_Skeleton;
if(skeleton == nullptr) {
return;
}
+4
View File
@@ -96,6 +96,7 @@ void Skeleton::AccumulateBoneTransforms(bool noRootMotion, std::vector<Animation
float progress;
if (nextFrame.Index == 0) {
nextFrame = currentFrame;
progress = (time - currentFrame.Time) / (animation->Duration - currentFrame.Time);
} else {
progress = (time - currentFrame.Time) / (nextFrame.Time - currentFrame.Time);
@@ -227,6 +228,7 @@ void Skeleton::AccumulateBoneTransforms(bool noRootMotion, std::vector<Animation
float progress;
if (nextFrame.Index == 0) {
nextFrame = currentFrame;
progress = (time - currentFrame.Time) / (animation->Duration - currentFrame.Time);
} else {
progress = (time - currentFrame.Time) / (nextFrame.Time - currentFrame.Time);
@@ -347,6 +349,7 @@ glm::mat4 Skeleton::GetOffsetTransform(const Bone* bone, AnimationOffset animati
float progress;
if (nextFrame.Index == 0) {
nextFrame = currentFrame;
progress = (time - currentFrame.Time) / (animation->Duration - currentFrame.Time);
} else {
progress = (time - currentFrame.Time) / (nextFrame.Time - currentFrame.Time);
@@ -400,6 +403,7 @@ glm::mat4 Skeleton::GetBoneTransform(const Bone* bone, const Animation* animatio
float progress;
if (nextFrame.Index == 0) {
nextFrame = currentFrame;
progress = (time - currentFrame.Time) / (animation->Duration - currentFrame.Time);
} else {
progress = (time - currentFrame.Time) / (nextFrame.Time - currentFrame.Time);