PDA

View Full Version : Curved HUD



Bowser Koopa
10-04-2010, 04:45 PM
Hey folks!

Before I start, I must warn that I'm an artist and not a programmer or scripter. So, basically what I'm looking for is a solution that I could do on my own as much as possible (our programmer is tied up with gameplay for our game right now and doesn't have the time to work on HUD and UI at the moment on our project). Any help would be appreciated!

All right, with that being said, let me explain what I'm trying to do. The title should give you a good idea of where I'm going. I want to create a curved helmet-style/cockpit-style HUD for our game. However, there isn't a whole lot of documentation or video out there that helps me achieve this.

Here are a couple of videos I found (in a series of videos related to scaleform implementation) that are excellent but fall short of my needs.

Adding a SWF to a BSP by Matthew Doyle from Scaleform:
http://www.youtube.com/watch?v=fc5yWKsNJlM
This is an excellent video that explains how to project a UI element in 3D space within the UDK.

Setting up a menu in UDK by Vicki Smith:
http://www.youtube.com/watch?v=QU8aGpQTry4
This is another video from an online tutorial series on youtube that explains how to bring your flash UI swfs into the UDK basically from start to finish. The menus are fixed to the camera and are always billboarded and facing the user.

Now, what I'm basically looking for is a combination of the two methods listed above. Since I want a curved HUD, I basically need to take a 3D planar mesh, bend it, apply the SWF to that curved mesh and have the curved mesh always face the user. My question is, is there a way to do this easily? Obviously, even if there is no easy solution, I'm open to pretty much any solution at this point.

Here are a couple of super basic examples of what I want to accomplish. The first example shows how the HUD would look without the cool curved effect. The second shows how the HUD might look curved, when applied to a curved plane.

Basic HUD without curve:
http://www.bmoussavi.com/scaleform/ScreenSampleRegular.jpg

Basic HUD with curve:
http://www.bmoussavi.com/scaleform/ScreenSampleCurved.jpg

If anyone has any reference material that I could look at that would explain how to achieve this -or- if anyone wants to be nice enough to break it down for me typed out here on the forums, I'd GREATLY appreciate it!

Thanks for reading, and thanks in advance for any help!

Matt Doyle
10-05-2010, 11:40 AM
This effect can be achieved in a number of ways. It can easily be faked in Flash by how you draw the image (much as you have done above). It can also be done with Scaleform GFx 3Di, if you want real 3D Flash elements. Check out our 3Di video for info on how to use Flash 3D elements (http://www.youtube.com/user/scaleformpress#p/u/16/kuEZdxKS3Ns)

You'll want to check out the file GFxMinimapHud.uc in Development/Src/UTGame/Classes/ to see how a Flash HUD is controlled by Unreal.

Bowser Koopa
10-06-2010, 10:36 AM
Hey Matt, thanks for the response! Loving your videos on Scaleform's website and youtube.

I'm curious...you said the effect can be replicated in Flash itself by being fudged. I assume you mean pre-bending the bitmaps in something like Photoshop and bringing them into Flash with their baked in curvature. If that's what you meant, that's definitely not the look I want. I really want to convey that 3D effect to the player. Plus, creating the animated HUD in 2D, animating it in Flash, then applying the swf to a curved 3D plane in the unreal world is much easier to manage than having to account for manually forcing curvature in all the assets you create.

Now, as for the 3Di video you posted, I have actually seen that before, but the examples shown in the video don't really help me for my special case. The video shows how to offset elements, but not bend/curve them, in the Z direction. Those effects in the video are really sweet, especially if the user is going to have control over rotating the HUD or menus in game, or they're wearing Nvidia 3D glasses and are taking advantage of Stereoscopic 3D technology.

My next question is can what I'm trying to accomplish be done in action script or kismet...or maybe both? If it's mostly or all in action script, do you think you'd be able to give me an idea of what scripting I'd need to enter into Flash to get that curved 3D look over the entire scene?

EDIT: I did take a look at the GFxMinimapHud.uc file you specified. I'm not going to lie, I can't translate any of it. Like I said, I'm just an artist (with basically no scripting or coding knowledge at all. It's seriously like a foreign language to me), so I don't really know what to look for or what I'm looking for.

I may talk to our resident programmer about this, but he's just so swamped with work right now and doesn't have time to deal with UI at the moment (we're in the pre-vis stages of development). So I'm trying to find solutions I can implement on my own for the moment.

Matt Doyle
10-07-2010, 10:54 AM
You're going to need an UnrealScripter for this. Kismet is not right place to do HUD elements, as Kismet is gernally for level/world specific stuff. I understand you want to have a real 3D curved surface, instead of faking it, but honestly I don't believe you will be able to tell the difference between the two, as you are still only viewing it on a 2D monitor or TV. And you can use our 3Di extensions to easily add depth by popping items in the HUD out on the Z.

I can't give you any info on how to script this, as I don't know the answer myself. But I'm certain it is possible. I would guess that you'll need some sort of skeletal mesh object that follows the player around, and always draws directly in front of his face. This being your curved surface. Then its not that hard to draw the HUD on that surface with a few lines of script. I can't imagine this being difficult at all to do.

rjmyth
10-17-2010, 07:23 PM
how can i get the 3di extensions??

Matt Doyle
10-18-2010, 10:07 AM
If you have UDK, you have them. Watch the tutorial video on 3Di. You'll find a link to it in the sticky forum post 'Getting Started with GFx'

rjmyth
10-19-2010, 03:27 PM
o right. well i have the latest udk, but i tried using the ._xrotation syntax used in the videos but the image remained flat when using as2 flash 8. it sounded like i needed to get some extensions to flash itself in order for it to work.

Matt Doyle
10-19-2010, 03:30 PM
By the way - applying a SWF to a skeletal mesh isn't much different from applying it to a BSP. You make a render texture and material and put that material onto the surface of the skeletal mesh where you want the SWF drawn. Obviously UVW mapping will come into play, and you'll need some script that tells the SWF to run, instead of using the Kismet OpenGFxMovie. This is a potential future tutorial I could make, once I investigate how to achieve the desired effect. But its pretty low on the priority list.

rjmyth
10-19-2010, 04:27 PM
fair enough thanks for the help. turns out i managed it in the end, if i ctrl+enter in flash it plays the swf but no 3d is applied, is i run it with scaleform launcher or fxmediaplayer a blank grey window appears, so i thought it wasnt working. however when in the engine itself it does go 3d so its alright :).

Matt Doyle
10-19-2010, 04:50 PM
Strange. If you have Scaleform Launcher installed properly, and have it pointing to the FX Media Player, then it should show the SWF, and 3D should work there.