Posts Tagged ‘UDK’

Hi Rifters!

Here we go with another VR Dev journal entry. Not a whole lot to show off here – this past week was a crazy one! I have been helping test alpha builds, writing articles for Road To VR, making videos, and even doing an interview or two. Whew!

In this video, I show off the Kismet toggle switch. A great place to learn how to do that is the 3DBuzz tutorials:

http://www.3dbuzz.com/training/view/unreal-development-kit/kismet

Also, I have begun working on the key functionality of the Holodeck – taking you somewhere else. My first test is to gradually take the player from the holodeck room to the epic courtyard. In my first attempt, I simply made the walls invisible when opening the door. DOH!

Game development requires a lot of determination, and sometimes things don’t progress as quickly or as smoothly as we hope. Don’t give up!

Logging Out,

–Bruce

Hey VR Heads!

Special Update! So my Rift arrived on Monday, and I have hardly slept since I got it. I have tried a whole lot of random software, including:

-Oculus Tiny Room
-Oculus Tuscany Demo
-Rust Ltd’s Museum of the Microstar
-UDK Maps
-TF2
-VR Player
-VBJin-OVR
-Mirror’s Edge with Virieo
-Various YouTube videos and webpages
-A SBS 3D movie in media player

And finally, my own creation!! Walking down hallways and looking around a room that I put together was surreal. Is this how architects feel?

In other news, my videos on YouTube of my first impressions have become quite popular! The immense amount of support from this community has floored me. This spirit of support and cooperation will definitely take us to the next level in VR experiences!

Back to editing video, replying to comments, and logging more hours in the Rift!

Excelsior,

–Bruce

Hey VR Heads!

Work and volunteering took up a lot of my time this week, but I managed to make some meager progress with Hydra integration in UDK. I used examples from a couple of places:

http://forums.epicgames.com/threads/937066-Razer-Hydra-Dll-Bind-Player-Input-and-Player-Controller-Ready-to-go/page2
Craig just keeps posting awesome things! I took the camera modes that he constructed from his latest release.

http://forums.epicgames.com/threads/734592-Making-a-Skeletal-Control-to-move-an-arm
This post by Comicaztaway is a tutorial for getting the arm of a skeletal mesh to move with the mouse, Little Big Planet style.

After a lot of experimentation and frustration, I arrived at what you see in the video. Nowhere close to where I want to be, but its progress nonetheless. I will make a tutorial video outlining what I did in the near future. In the mean time, here is the quick-and-dirty tutorial:

  • Make a copy of, and then edit CH_AnimHuman_Tree. Add b_RightWeapon and b_LeftWeapon to the AnimTree. Create 2 new SkelControl_CCD_IKs named RightArmIK and LeftArmIK.
  • Make the edits that Comicaztaway sugests in his post, then close and save the package.
  • Add the following code to your Pawn.uc:

var SkelControl_CCD_IK RightArmIK;
var SkelControl_CCD_IK LeftArmIK;

simulated event PostInitAnimTree(SkeletalMeshComponent SkelComp)
{
super.PostInitAnimTree(SkelComp);
RightArmIK = SkelControl_CCD_IK( mesh.FindSkelControl('RightArmIK') );
LeftArmIK = SkelControl_CCD_IK( mesh.FindSkelControl('LeftArmIK') );
}

defaultproperties
{
Begin Object class=SkeletalMeshComponent Name=SkeletalMeshComponent0
SkeletalMesh=SkeletalMesh'CH_IronGuard_MaleHG.Mesh.SK_CH_IronGuard_MaleA'
PhysicsAsset=PhysicsAsset'CH_AnimCorrupt.Mesh.SK_CH_Corrupt_Male_Physics'
Animsets(0)=AnimSet'CH_AnimHumanHG.Anims.K_AnimHuman_AimOffset'
Animsets(1)=AnimSet'CH_AnimHumanHG.Anims.K_AnimHuman_BaseMale'
AnimTreeTemplate=AnimTree'CH_AnimHuman_MyTree.AT_CH_Human'
End Object
Mesh=SkeletalMeshComponent0
Components.Add(SkeletalMeshComponent0)

Name="Default__HydraGamePawn"
}
  • Add the following code to your PlayerController.uc:

var vector RightArmLocation;
var vector LeftArmLocation;
var HydraGamePawn Utp;
var HydraGamePlayerInput Hgp;

// function for SkelControl movement.
function UpdateRotation(float DeltaTime)
{
Hgp = HydraGamePlayerInput(PlayerInput); // gives us access to the Hydra variables
Utp = HydraGamePawn(Pawn); // this simply gets our pawn so we can then point to our SkelControl

// assigns vector RightArmLocation to the position of the Right Hydra Wand.
RightArmLocation.Z = Pawn.Location.Z + Hgp.RightHandPosition.Z;
RightArmLocation.Y = Pawn.Location.Y - 200 - Hgp.RightHandPosition.Y;
RightArmLocation.X = Pawn.Location.X - 400 - Hgp.RightHandPosition.X;
Utp.RightArmIK.EffectorLocation = RightArmLocation;

// assigns vector LeftArmLocation to the position of the Left Hydra Wand.
LeftArmLocation.Z = Pawn.Location.Z + Hgp.LeftHandPosition.Z;
LeftArmLocation.Y = Pawn.Location.Y - 400 - Hgp.LeftHandPosition.Y;
LeftArmLocation.X = Pawn.Location.X - 400 - Hgp.LeftHandPosition.X;
Utp.LeftArmIK.EffectorLocation = LeftArmLocation;

// Optional log feed, so you can see the number values and decide how to tweak the assignments above.
`log("RightArmIK.EffectorLocation Value is :"$Utp.RightArmIK.EffectorLocation);

}

I have weird numbers in there to offset position based on how I have my Hydra situated on my desk. The base station is off to my right. This solution is brute force and is not at all flexible, but may serve as a jump-off point for someone out there.

I will post the full files to GitHub sometime tomorrow, for now I have to get some sleep.

Oh yeah, on other thing: my Rift is due to arrive tomorrow! Next week’s video will include impressions and direct feeds if I can swing it.

Excelsior,

–Bruce

Hey VR Heads!

So, this past week has been lots of random tutorials and reading the documentation in the newly opened Oculus Developer Center. Not a whole lot new to show off, but I definitely feel like I am making progress!

I got crouch working with the Hydra. Yet again, UDK is simpler that what I make it out to be. No need for Pawn.ShouldCrouch(bool bCrouch) or StartCrouch(float HeightOffset). Just use bDuck. Here’s the code from my HydraGamePlayerController.uc:

function LeftTriggerPress()
{	
if(bDuck==0) bDuck = 1;
}

function LeftTriggerRelease()
{	
if(bDuck==1) bDuck=0;
}

Also, I have been slowly but steadily learning more about the UDK editor. Kismet and Matinee are not terribly intuitive, but I am getting the hang of it.

Finally, after several recommendations, I ended up watching the anime series Sword Art OnlineΒ on CrunchyRoll. It is a really cool show about gamers stuck in a VRMMO. The battle scenes and story were pretty fantastic.
I was impressed with how they presented the player UI in the show. It has a really clean design, and is gesture based. You can see an example here (skip ahead to 8:45):

Also in this vid (skip ahead to 5:52 and 18:45):

I began investigating how I would do such a thing in UDK. As it turns out, Scaleform has 3D UI functionality in UDK! Awesome! I have no idea how the layering of 2D objects will look in the Rift, but I am going to attempt to throw together a UI mock up that is similar to SAO.

Other than that, I am still working on binding the arms/hands of a Pawn to the position of the Hydra controllers. I have been slowly working through the info on this page: http://udn.epicgames.com/Three/UsingSkeletalControllers.html
Once I have that done, I will put together a comprehensive tutorial for adding Hydra support to UDK on a separate page, so future devs don’t have to go digging through blog posts.

Hoping to receive my dev kit this week!

Excelsior,

–Bruce

Hey VR Heads!

So most of this week was spent learning how to make static meshes in Blender. Blender is complex – definitely not the “jump in and push buttons” type of program. After poking around a bit, I found a great tutorial that was highly recommended:

Blender 3D: From Noob to Pro (wikibook)

I am in the beginning of Unit 2, and I was able to put together the stuff you see in the video above. Not bad. πŸ˜€

The UDK tutorials from The New Boston are also fantastic:

The New Boston’s UDK Tutorial playlist

A lot of great knowledge and step-by-step walkthrough for the UDK Editor, Kismet, and Matinee.

Finally, I was able to get some buttons on the Hydra linked to in game actions! If you are using Craig’s source that I posted in part 3.5, you simply need to add Pawn instance functions (or whatever else you want) within the PlayerController class. A list of Pawn instance fuctions is here:

UDK List of Pawn Instance Functions

Here are some examples I was able to get working:

function RightTriggerPress()
{
Pawn.StartFire(1);
}

function RightTriggerRelease()
{
Pawn.StopFire(1);
}

function RightBumperPress()
{
Pawn.StartFire(0);
}

function RightBumperRelease()
{
Pawn.StopFire(0);
}

function RightB1Press()
{
Pawn.DoJump(true);
}

StartFire and StopFire need a byte argument (number between 0-255). What firing type each number value corresponds to is up to the weapon. By default, 0 = primary fire and 1 = alternate fire.

Other than that, I changed the AimMode variable within PlayerInput to 2, which allows the movement of the right Hydra wand to control looking around. It feels pretty nice so far. I also slapped together a Pawn file that would silence the footsteps in game. Those footsteps are loud, and ruin my videos! πŸ˜„

That about wraps it up. Look forward to the hallway getting fancier and fancier!

Excelsior,

–Bruce

Hey VR Heads!

Here is a quick video featuring the ugliest Star Trek hallway ever. πŸ˜„ The Rift dev kit is coming soon, so I wanted to make sure I had a Holodeck to walk into when it arrives. I used the UDK editor to build everything, but I think I will try using Blender to create some better art.

Excelsior,

Bruce

Okay, more progress has been made, thanks to a couple of things:

So at this point, I am able to move my pawn around with the Hydra joysticks, tweak that movement, and verify that I am reading button presses through the console. Its going slower than I would like, but its going. More soon!Β