Hier 3 Screenshots, in Action sieht das ganze natürlich besser aus.
Verwendet man eigene, statt der Standardmodelle, wirkt der Effekt noch besser. Daher habe ich noch ein Screenshot von meinem eigenen Projekt hinzugefügt.
/*
Full Body Awareness Pawn
by Daniel Korgel aka Dakor
For www.Bloculus.de
17.03.2013
*/
class MyPawn extends UDKPawn;
//Variable List
var name EyeSocket; //Name des Sockets an den die Kamera befestigt werden soll
//Functions
/* GetViewRotation
Aufgerufen von UDKPlayerController::GetPlayerViewPoint(),
welche wiederum von der aktuellen Kamera aufgerufen wird */
//Entferne die Kommentarzeichen (/* */) um die folgende Funktion um immer die genaue Rotation des Sockets zu nutzen
//Das bedeutet das auch die Bewegung der Animation mit einbezogen wird.
/*
simulated event rotator GetViewRotation()
{
local vector out_Loc;
local rotator out_Rot;
// Pruefen ob EyeSocket korrekt zu gewiesen wurde
if (EyeSocket == '')
return Super.GetViewRotation();
Mesh.GetSocketWorldLocationAndRotation(EyeSocket, out_Loc, out_Rot); return out_Rot;
} */
/*
GetPawnViewLocation
Eine andere Klasse möchte die Position unserer Augen haben
*/
simulated event Vector GetPawnViewLocation()
{
local vector viewLoc;
// Pruefen ob EyeSocket korrekt zu gewiesen wurde
if (EyeSocket == '')
return Location + BaseEyeHeight * vect(0,0,1);
Mesh.GetSocketWorldLocationAndRotation(EyeSocket, viewLoc);
return viewLoc;
}
defaultproperties
{
EyeSocket=Eyes
Begin Object Class=SkeletalMeshComponent Name=PawnSkeletalMeshComponent
//Your Mesh Properties
SkeletalMesh=SkeletalMesh'CH_IronGuard_Male.Mesh.SK_CH_IronGuard_MaleA'
AnimTreeTemplate=AnimTree'CH_AnimHuman_Tree.AT_CH_Human'
PhysicsAsset=PhysicsAsset'CH_AnimCorrupt.Mesh.SK_CH_Corrupt_Male_Physics'
AnimSets(0)=AnimSet'CH_AnimHuman.Anims.K_AnimHuman_BaseMale'
Translation=(Z=8.0)
Scale=1.075
//General Mesh Properties
bCacheAnimSequenceNodes=FALSE
AlwaysLoadOnClient=true
AlwaysLoadOnServer=true
bOwnerNoSee=false
CastShadow=true
BlockRigidBody=TRUE
bUpdateSkelWhenNotRendered=false
bIgnoreControllersWhenNotRendered=TRUE
bUpdateKinematicBonesFromAnimation=true
bCastDynamicShadow=true
RBChannel=RBCC_Untitled3
RBCollideWithChannels=(Untitled3=true)
bOverrideAttachmentOwnerVisibility=true
bAcceptsDynamicDecals=FALSE
bHasPhysicsAssetInstance=true
TickGroup=TG_PreAsyncWork
MinDistFactorForKinematicUpdate=0.2
bChartDistanceFactor=true
RBDominanceGroup=20
bUseOnePassLightingOnTranslucency=TRUE
bPerBoneMotionBlur=true
End Object
Mesh=PawnSkeletalMeshComponent
Components.Add(PawnSkeletalMeshComponent)
}
Nächstes mal: Steuerung des Kopfes, sowie 1:1 Tracking der Arme mit dem Hydra Controller von Razer
Das Full Body Awareness Script basiert auf dem „True First Person“-Script für den UTPawn von slowJusko
~ Daniel

[…] Woche folgt eine News der anderen, daher komme ich gar nicht dazu dem UDK Tag 2 Tutorial den letzten Schliff zu geben, aber es kommt – versprochen! Es wurden noch einige weitere […]
[…] die meisten sind aber empfehlenswert. Diese Anleitung geht noch nicht auf die Kombination “Full Body Awareness” und Oculus Rift ein, sondern soll erst einmal erklären wie man das Rift zusammen mit UDK zum […]