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 […]