Skip to content
Snippets Groups Projects
Commit dace0402 authored by Patrick Nossol's avatar Patrick Nossol Committed by Flybel
Browse files

theoretical compiling correction for 5.1

parent 281bd7d4
No related branches found
No related tags found
No related merge requests found
...@@ -372,11 +372,18 @@ UAnimSequence* UVHFaceAnimation::SaveAsAnimSequence(FString AnimName) ...@@ -372,11 +372,18 @@ UAnimSequence* UVHFaceAnimation::SaveAsAnimSequence(FString AnimName)
AnimationSequence = NewObject<UAnimSequence>( AnimationSequence = NewObject<UAnimSequence>(
Package, UAnimSequence::StaticClass(), *AnimNameOnly, Package, UAnimSequence::StaticClass(), *AnimNameOnly,
RF_Public | RF_Standalone); RF_Public | RF_Standalone);
IAnimationDataController& Controller = AnimationSequence->GetController();
if (AnimationSequence) if (AnimationSequence)
{ {
AnimationSequence->SetSkeleton(AnimInstance->GetSkelMeshComponent()->SkeletalMesh->GetSkeleton()); AnimationSequence->SetSkeleton(AnimInstance->GetSkelMeshComponent()->SkeletalMesh->GetSkeleton());
AnimationSequence->SetRawNumberOfFrame(AnimationData.TimeSteps.Num()); AnimationSequence->SetSequenceLength(AnimationData.TimeSteps.Last().Timestamp);
AnimationSequence->SequenceLength = AnimationData.TimeSteps.Last().Timestamp; Controller.SetPlayLength(AnimationData.TimeSteps.Last().Timestamp);
//rate = nr frames / length
Controller.SetFrameRate(FFrameRate(AnimationData.TimeSteps.Num(), AnimationData.TimeSteps.Last().Timestamp));
USkeleton* Skeleton = AnimationSequence->GetSkeleton(); USkeleton* Skeleton = AnimationSequence->GetSkeleton();
FFloatCurve* curve; FFloatCurve* curve;
...@@ -422,28 +429,40 @@ UAnimSequence* UVHFaceAnimation::SaveAsAnimSequence(FString AnimName) ...@@ -422,28 +429,40 @@ UAnimSequence* UVHFaceAnimation::SaveAsAnimSequence(FString AnimName)
} }
// Add bone curves // Add bone curves
FRawAnimSequenceTrack HeadRawTrack; TArray<FQuat4f> HeadRawTrack;
FRawAnimSequenceTrack REyeRawTrack; TArray<FQuat4f> REyeRawTrack;
FRawAnimSequenceTrack LEyeRawTrack; TArray<FQuat4f> LEyeRawTrack;
FRawAnimSequenceTrack JawRawTrack; TArray<FQuat4f> JawRawTrack;
for (int FrameNr = 0; FrameNr < AnimationData.TimeSteps.Num(); FrameNr++) { for (int FrameNr = 0; FrameNr < AnimationData.TimeSteps.Num(); FrameNr++) {
FFrameData& Timestep = AnimationData.TimeSteps[FrameNr]; FFrameData& Timestep = AnimationData.TimeSteps[FrameNr];
HeadRawTrack.RotKeys.Add(Timestep.HeadRotation.Quaternion()); HeadRawTrack.Add(FQuat4f(Timestep.HeadRotation.Quaternion()));
REyeRawTrack.RotKeys.Add(Timestep.RightEyeRotation.Quaternion()); REyeRawTrack.Add(FQuat4f(Timestep.RightEyeRotation.Quaternion()));
LEyeRawTrack.RotKeys.Add(Timestep.LeftEyeRotation.Quaternion()); LEyeRawTrack.Add(FQuat4f(Timestep.LeftEyeRotation.Quaternion()));
JawRawTrack.RotKeys.Add(Timestep.JawRotation.Quaternion()); JawRawTrack.Add(FQuat4f(Timestep.JawRotation.Quaternion()));
} }
AVirtualHuman* owner = Cast<AVirtualHuman>(GetOwner()); AVirtualHuman* owner = Cast<AVirtualHuman>(GetOwner());
const BoneNames& bones = owner->GetBoneNames(); const BoneNames& bones = owner->GetBoneNames();
if (bUseHeadRotation) AnimationSequence->AddNewRawTrack(bones.head, &HeadRawTrack);
if (bUseEyeRotations) AnimationSequence->AddNewRawTrack(bones.eye_r, &REyeRawTrack); if (bUseHeadRotation) {
if (bUseEyeRotations) AnimationSequence->AddNewRawTrack(bones.eye_l, &LEyeRawTrack); Controller.AddBoneTrack(bones.head);
AnimationSequence->AddNewRawTrack(bones.jaw, &JawRawTrack); Controller.SetBoneTrackKeys(bones.head, {}, HeadRawTrack, {});
}
if (bUseEyeRotations) {
Controller.AddBoneTrack(bones.eye_r);
Controller.SetBoneTrackKeys(bones.eye_r, {}, REyeRawTrack, {});
Controller.AddBoneTrack(bones.eye_l);
Controller.SetBoneTrackKeys(bones.eye_l, {}, LEyeRawTrack, {});
}
Controller.AddBoneTrack(bones.jaw);
Controller.SetBoneTrackKeys(bones.jaw, {}, JawRawTrack, {});
//the metahuman jaw bone only lowers the chin and not the mouth and teeth //the metahuman jaw bone only lowers the chin and not the mouth and teeth
if (owner->GetBodyType() == EBodyType::MetaHuman) { if (owner->GetBodyType() == EBodyType::MetaHuman) {
AnimationSequence->AddNewRawTrack(bones.teeth_lower, &JawRawTrack); Controller.AddBoneTrack(bones.teeth_lower);
AnimationSequence->AddNewRawTrack(bones.mouth_lower, &JawRawTrack); Controller.SetBoneTrackKeys(bones.teeth_lower, {}, JawRawTrack, {});
Controller.AddBoneTrack(bones.mouth_lower);
Controller.SetBoneTrackKeys(bones.mouth_lower, {}, JawRawTrack, {});
} }
} }
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment