UDK Tag 2 – Full Body Awareness

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.

Diese Diashow benötigt JavaScript.

/*
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

This article has 2 comments

Antworten

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.