diff --git a/auxil/thesis.ist b/auxil/thesis.ist index a7a324b..dca9249 100644 --- a/auxil/thesis.ist +++ b/auxil/thesis.ist @@ -1,5 +1,5 @@ % makeindex style file created by the glossaries package -% for document 'thesis' on 2022-3-12 +% for document 'thesis' on 2022-3-13 actual '?' encap '|' level '!' diff --git a/bib.bib b/bib.bib index b75cc72..76d747c 100644 --- a/bib.bib +++ b/bib.bib @@ -616,8 +616,48 @@ ////////////////Final IK//////////////// @misc{FinalIK_Overview_2020, note = {letzter Zugriff am 12.03.2022}, - author = {SteamWorks}, - title = {OpenVR - SteamWorks Documentation}, + author = {RootMotion}, + title = {Final IK - Overview}, url = {http://www.root-motion.com/finalikdox/html/index.html}, year = {2020}, +} + +@misc{FinalIK_AssetStore_2021, + note = {letzter Zugriff am 13.03.2022}, + author = {RootMotion}, + title = {Final IK - Unity Asset Store}, + url = {https://assetstore.unity.com/packages/tools/animation/final-ik-14290}, + year = {2021}, +} + +@misc{FinalIK_AimIK_2021, + note = {letzter Zugriff am 13.03.2022}, + author = {RootMotion}, + title = {Final IK - AimIK}, + url = {http://www.root-motion.com/finalikdox/html/page1.html}, + year = {2021}, +} + +@misc{FinalIK_ArmIK_2021, + note = {letzter Zugriff am 13.03.2022}, + author = {RootMotion}, + title = {Final IK - ArmIK}, + url = {http://www.root-motion.com/finalikdox/html/page2.html}, + year = {2021}, +} + +@misc{FinalIK_Baker_2021, + note = {letzter Zugriff am 13.03.2022}, + author = {RootMotion}, + title = {Final IK - Baker}, + url = {http://www.root-motion.com/finalikdox/html/page3.html}, + year = {2021}, +} + +@misc{FinalIK_BipedIK_2021, + note = {letzter Zugriff am 13.03.2022}, + author = {RootMotion}, + title = {Final IK - Biped IK}, + url = {http://www.root-motion.com/finalikdox/html/page4.html}, + year = {2021}, } \ No newline at end of file diff --git a/pics/finalik_aimik_pose.png b/pics/finalik_aimik_pose.png new file mode 100644 index 0000000..01a5700 Binary files /dev/null and b/pics/finalik_aimik_pose.png differ diff --git a/pics/finalik_aimik_script.png b/pics/finalik_aimik_script.png new file mode 100644 index 0000000..0549136 Binary files /dev/null and b/pics/finalik_aimik_script.png differ diff --git a/pics/finalik_armik_script.png b/pics/finalik_armik_script.png new file mode 100644 index 0000000..54ba5b4 Binary files /dev/null and b/pics/finalik_armik_script.png differ diff --git a/pics/finalik_baker_GenericBakerComponent.png b/pics/finalik_baker_GenericBakerComponent.png new file mode 100644 index 0000000..f202beb Binary files /dev/null and b/pics/finalik_baker_GenericBakerComponent.png differ diff --git a/pics/finalik_baker_HumanoidBakerComponent.png b/pics/finalik_baker_HumanoidBakerComponent.png new file mode 100644 index 0000000..f8635b6 Binary files /dev/null and b/pics/finalik_baker_HumanoidBakerComponent.png differ diff --git a/pics/finalik_bipedik_script.png b/pics/finalik_bipedik_script.png new file mode 100644 index 0000000..8f79c5f Binary files /dev/null and b/pics/finalik_bipedik_script.png differ diff --git a/pics/finalik_fabrik_pose.png b/pics/finalik_fabrik_pose.png new file mode 100644 index 0000000..b69ca05 Binary files /dev/null and b/pics/finalik_fabrik_pose.png differ diff --git a/sections/technologies.tex b/sections/technologies.tex index 6beeb7c..89ee624 100644 --- a/sections/technologies.tex +++ b/sections/technologies.tex @@ -604,10 +604,93 @@ Wenn die Applikation ausgeführt wird, liefert OpenVR, je nach vorhandenem SDK, \subsection{Vive Wireless} \subsection{Final IK Plugin} -\subsubsection{Aim IK} +Final IK ist ein Unity Asset, welches von RootMotion entwickelt wurde. +Es wurde kostenlos für die Erstellung von BeamVR bereitgestellt und regelt das Full Body Tracking. +Hierbei wird das Full Body Biped IK, welches inbegriffen ist, verwendet. +~\cite{FinalIK_Overview_2020} + +\subsubsection{AimIK} +AimIK rotiert die Knochen des 3D-Modells, so dass auf ein Objekt gezielt werden kann. +Es wird hierbei nicht die eingebaute LookAt Funktion des Animators benutzt, da die Objekte mit denen gezielt wird, nicht mit den Achsen des Modells übereinstimmen. +AimIK ermöglicht ein natürlich aussehendes Ergebnis, selbst wenn sich das Ziel beinahe hinter dem zielendem Objekt befindet. +Rotation limits verhindern, dass das Skelett in unnatürliche Bewegungen und Stellungen verändert wird. +Bei menschenähnlichen Modellen, limitiert diese Einstellung die Gelenke auf die gleichen Bewegungsmöglichkeiten wie bei einem Menschen, siehe Abb. ~\ref{fig:finalIK_aimIK_pose}. +Diese können jedoch frei verändert werden, was jedoch zu unrealistischen Posen führen kann. +\begin {figure} + \centering + \includegraphics[scale=0.4]{pics/finalik_aimik_pose} + \caption{Final IK - AimIK Pose} + \label{fig:finalIK_aimIK_pose} +\end {figure} + +Damit die Berechnung der Pose funktioniert, werden mehrere verschiedene Einstellungsmöglichkeiten bereitgestellt, siehe Abb. ~\ref{fig:finalIK_aimIK_script}. +Um zu wissen worauf gezielt werden soll, muss zuerst ein Ziel festgelegt werden, dies ist möglich bei der Variable Target. +Aim Transform ist das Objekt, mit welchem gezielt werden soll. +Dabei kann es sich um viele verschiedene Objekte, wie Waffen oder ein Hand die auf etwas zeigen soll, handeln. +Axis gibt an in welche Richtung das Objekt zielt. +Wenn zum Beispiel ein Laserpointer den Laser in Richtung der Z-Achse abstrahlt muss die Achse auf (0,0,1) gesetzt werden, da das Schema (x,y,z) ist. +Damit die richtigen Knochen bewegt werden, wenn auf ein Ziel gezielt wird, müssen diese bei Bones Definiert werden. +Das Wight steuert wie stark die veränderungen des Scripts auf die tatsächliche Position des Knochen einwirken sollen. +Bei 0 wird der Knochen kaum bis garnicht verändert, wenn der Wert jedoch 1 ist, wird die ursprüngliche Position komplett verändert. +\begin {figure} + \centering + \includegraphics[scale=0.7]{pics/finalik_aimik_script} + \caption{Final IK - AimIK Script} + \label{fig:finalIK_aimIK_script} +\end {figure} +~\cite{FinalIK_AimIK_2021} + \subsubsection{Arm IK} +ArmIK stellt die Position und Rotation der Knochen eines Armes so ein, dass die Hand möglichst nahe an der Zielposition platziert ist. +Hierfür werden 5 Knochen benötigt, Chest, Shoulder, Upper Arm, Forearm und Hand, siehe Abb. ~\ref{fig:finalIK_armIK_script}. +Chest befindet sich im Oberkörper des Modells und ist am nähesten am Arm dran. +Shoulder ist der Schulterknochen, Upper Arm ist der Oberarm Knochen, Forearm ist der Unterarm Knochen und Hand befindet sich in der Hand. +Hierbei werden die Finger nicht beachtet, da es nur um die Berechnung der Position des Armes handelt. +Mithilfe der Target Variable wird erneut ein Ziel festgelegt, welches die Zielposition der Hand angiebt. +\begin {figure} + \centering + \includegraphics[scale=1]{pics/finalik_armik_script} + \caption{Final IK - ArmIK Script} + \label{fig:finalIK_armIK_script} +\end {figure} +~\cite{FinalIK_ArmIK_2021} + \subsubsection{Baker} -\subsubsection{Bipaed IK} +Der Baker ist ein Tool welches die Aufnahme von Animations Clips ermöglicht. +Um humanoide Modelle aufzunehmen, muss das Humanoid Baker Script zu dem Animierten Objekt hinzugefügt werden, siehe Abb. ~\ref{fig:finalIK_humanoid_baker}. +Für andere Modelle wird das Generic Baker Script benötigt, siehe Abb. ~\ref{fig:finalIK_generic_baker}. +Wenn die Applikation in Unity ausgeführt wird, kann in beiden Scripten auf Bake Animation States gedrückt werden. +Nun werden die Animationen in einen vorher ausgewählten Ordner abgespeichert und können jederzeit wiederverwendet werden. + +\begin {figure} + \centering + \includegraphics[scale=1]{pics/finalik_baker_HumanoidBakerComponent} + \caption{Final IK - Humanoid Baker} + \label{fig:finalIK_humanoid_baker} +\end {figure} +\begin {figure} + \centering + \includegraphics[scale=1]{pics/finalik_baker_GenericBakerComponent} + \caption{Final IK - Generic Baker} + \label{fig:finalIK_generic_baker} +\end {figure} +~\cite{FinalIK_Baker_2021} + +\subsubsection{Biped IK} +Biped IK erlaubt die Modifikation der Position und Rotation der Knochen, eines Modelles mit 2 Beinen, 2 Armen und einem Kopf. +Das Script erkennt die Knochen automatisch und ist sofort einsatzbereit. +Seit FinalIK 4.0 wird jedoch FullBodyBiped IK empfohlen, da dieses eine leichtere Optimierung der IK eines Modelles erlaubt. + +Es können wie bei vorherigen Funktionen, Animationen beliebig überschrieben werden, ohne diese tatsächlich ändern zu müssen. +BipedIK bietet die Möglichkeit jedes Glied, also Kopf, Füße, Arme, Ober- und Unterkörper, einzeln einzustellen, siehe Abb. ~\ref{fig:finalIK_bipedik_script}. +Weiters kann wieder ein Ziel festgelegt werden, falls der Charakter auf einen Gegenstand zielen soll. +\begin {figure} + \centering + \includegraphics[scale=1]{pics/finalik_bipedik_script} + \caption{Final IK - BipedIK Script} + \label{fig:finalIK_bipedik_script} +\end {figure} +~\cite{FinalIK_BipedIK_2021} \subsubsection{CCD IK} \subsubsection{FABRIK} \subsubsection{FABRIK IK}