Obliczanie rotacji Pitch i Roll dzięki osi Yaw
Ostatnio zmodyfikowano 2015-04-23 16:01
RazzorFlame Temat założony przez niniejszego użytkownika |
Obliczanie rotacji Pitch i Roll dzięki osi Yaw » 2015-04-23 15:55:31 Witam, może od razu zacznę od podania celu. Chcę zrobić żeby roślinki w Unreal Engine 4 zostały "odpychane" od postaci (rotacją), gdy ta jest zbyt blisko. Mam rotację Yaw (odpowiada ona kątowi między postacią a roślinką) i chciałbym z tego wyliczyć kąt Pitch i Roll. Jako że funkcja FVector::Rotation() nie liczy kąta Roll (oto źródło): CORE_API FRotator FVector::Rotation() const { FRotator R; R.Yaw = FMath::Atan2( Y, X ) * 180.f / PI; R.Pitch = FMath::Atan2( Z, FMath::Sqrt( X * X + Y * Y ) ) * 180.f / PI; R.Roll = 0; return R; }
Do tej pory obliczałem to tak: FVector pawnLoc = nearestPawn->GetActorLocation() * FVector( 1.f, 1.f, 0.f ); FVector currLoc = GetActorLocation() * FVector( 1.f, 1.f, 0.f ); FRotator rotator =( pawnLoc - currLoc ).Rotation();
I żeby "wygiąć" roślinę po prostu obracałem ją napierw w Yaw a potem w Pitch (to w pewien sposób zastępowało Roll ale cała roślinka obracała się). Chciałbym osiągnąć taki efekt: ![](http://fotserv.pl/upload/1429797434-Katy.png) Do tej pory, żeby obliczyć Pitch potrzebowałem różnicy wysokości punktów, w sumie się nie dziwie. Jak obliczyć Pitch i Roll z samego Yaw? Może być chociaż znormalizowane to, bylebym mógł to przemnożyć, żeby razem ze zbliżaniem się postaci krzak odchylał się coraz bardziej. |
|
RazzorFlame Temat założony przez niniejszego użytkownika |
» 2015-04-23 16:01:43 Chyba znalazłem rozwiązanie. W UE4 jest wbudowana funkcja Slerp (spherical interpolation), czy coś takiego nadawałoby się do tego? |
|
« 1 » |