Skip to content
Snippets Groups Projects
Commit 412626df authored by Alexander Mödder's avatar Alexander Mödder
Browse files

Changed the Algorithm to only use the standard gaze to the closest Actor

parent 0c66fa7f
No related branches found
No related tags found
No related merge requests found
......@@ -238,7 +238,7 @@ void UVHGazing::GazeTo(FVector GazeTarget)
btargetRotationSet = false;
}
void UVHGazing::GazeToActor(AActor* GazeTargetActor, FVector Offset /*= FVector::ZeroVector*/)
void UVHGazing::GazeToActor(AActor* GazeTargetActor, FVector Offset /*= FVector::Zero)Vector*/)
{
TargetActor = GazeTargetActor;
TargetComponent = nullptr;
......
......@@ -35,7 +35,7 @@ void UVHGazingSim::BeginPlay()
{
Super::BeginPlay();
InitTicks = 50;
InitTicks = 0;
TArray<AActor *> FoundActors;
UGameplayStatics::GetAllActorsWithTag(GetWorld(), "GazingSimTarget", FoundActors);
......@@ -61,27 +61,16 @@ void UVHGazingSim::TickComponent(float DeltaTime, ELevelTick TickType, FActorCom
pitch = roll
roll = pitch
*/
FaceAnimInstance->SkelControl_Head = TestHeadGaze;
//FaceAnimInstance->SkelControl_Head = TestHeadGaze;
TArray<float> NNdata;
/*TArray<float> NNdata;
FRotator NextGazeRelative;
gatherNNData(NNdata, DeltaTime);
gatherNNData(NNdata, DeltaTime);*/
/*FString Log;
for (float ToLog : NNdata)
{
FString tmp = FString::SanitizeFloat(ToLog);
Log += tmp;
Log += ", ";
}
//computeNextGaze(NNdata, NextGazeRelative);
//UniLog.LogF("DebugLog", "Message %s", *Log);
UniLog.Log(Log);*/
computeNextGaze(NNdata, NextGazeRelative);
//NextGazeRelative = FRotator(0.0, 1.0, -1.0);
//LogRotator(NextGazeRelative,"PredRel");
FRotator NextGaze;
//FRotator NextGaze;
//This does nothing
/*if (InitTicks > 0)
......@@ -91,17 +80,33 @@ void UVHGazingSim::TickComponent(float DeltaTime, ELevelTick TickType, FActorCom
}
else
{*/
NextGaze = FaceAnimInstance->SkelControl_Head + NextGazeRelative;
//LogRotator(NextGaze, "PredFull");
//NextGaze = FaceAnimInstance->SkelControl_Head + NextGazeRelative;
FVector HeadPos = VirtualHumanPtr->GetFaceMesh()->GetBoneLocation(HeadBoneName);
AActor* NearestActor = GazingTargetList[0];
float bestDist = FVector::Dist(HeadPos, NearestActor->GetActorLocation());
for (auto Actor : GazingTargetList) {
float dist = FVector::Dist(HeadPos, Actor->GetActorLocation());
if (dist < bestDist) {
bestDist = dist;
NearestActor = Actor;
SetTargetRotation(NextGaze);
}
}
GazeToActor(NearestActor);
//Testgaze
TestEyeGaze += NextGaze;
LogRotator(TestEyeGaze,"TestEyeGaze");
//TestEyeGaze += NextGaze;
//LogRotator(TestEyeGaze,"TestEyeGaze");
lastHeadRota = FaceAnimInstance->SkelControl_Head;
//lastHeadRota = FaceAnimInstance->SkelControl_Head;
......@@ -120,30 +125,27 @@ bool UVHGazingSim::gatherNNData(TArray<float>& OutData, float DeltaTime)
OutData.Empty();
FRotator gazePos = GetCurrentGaze();
OutData.Emplace(TestEyeGaze.Yaw);
OutData.Emplace(-TestEyeGaze.Roll);
OutData.Emplace(gazePos.Yaw);
OutData.Emplace(-gazePos.Roll);
//OutData.Emplace(-7.0f);
//OutData.Emplace(-7.0f);
FRotator headRota = deltaRotation(FaceAnimInstance->SkelControl_Head, lastHeadRota , DeltaTime);
OutData.Emplace(headRota.Yaw);
OutData.Emplace(-headRota.Roll);
FVector HeadPos = TestHeadPos;//VirtualHumanPtr->GetFaceMesh()->GetBoneLocation(HeadBoneName);
FVector HeadPos = VirtualHumanPtr->GetFaceMesh()->GetBoneLocation(HeadBoneName);
TArray<FVector> AllObjects;
for (AActor* Target : GazingTargetList)
{
AllObjects.Emplace( (*Target).GetActorLocation() );
}
AllObjects.Empty();
AllObjects.Emplace(TestObjPos);
//AllObjects.Empty();
//AllObjects.Emplace(TestObjPos);
//Actor Forward is somehow static on the head, even if its skel contronl is changed. thus we add
FRotator CurentGazeDirection = TestHeadGaze;//= VirtualHumanPtr->GetActorForwardVector().Rotation();
/*CurentGazeDirection.Yaw = CurentGazeDirection.Yaw + FaceAnimInstance->SkelControl_Head.Yaw;
CurentGazeDirection.Pitch = CurentGazeDirection.Pitch - FaceAnimInstance->SkelControl_Head.Roll;*/
//^^^^Uncomment necessary
FRotator CurentGazeDirection = VirtualHumanPtr->GetActorForwardVector().Rotation(); // TestHeadGaze;
CurentGazeDirection.Yaw = CurentGazeDirection.Yaw + FaceAnimInstance->SkelControl_Head.Yaw;
CurentGazeDirection.Pitch = CurentGazeDirection.Pitch - FaceAnimInstance->SkelControl_Head.Roll;
//^^^^Uncomment necessary for prod
//LogRotator(VirtualHumanPtr->GetActorForwardVector().Rotation(), "ActorForward");
......
......@@ -80,10 +80,10 @@ private:
FSocket* GazingServerSocket=nullptr;
FVector TestHeadPos = FVector(0.0, 0.0, 0.0);
/*FVector TestHeadPos = FVector(0.0, 0.0, 0.0);
FVector TestObjPos = FVector(300.0, 20.0, 0.0);
FRotator TestHeadGaze = FRotator(0.0,0.0,0.0);
FRotator TestEyeGaze = FRotator(0.0, 0.0, 0.0);
FRotator TestEyeGaze = FRotator(0.0, 0.0, 0.0);*/
};
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment