Archive for the 'Graphics' Category
Halo 3 Trailer Analysis

Here’s my second-by-second analysis of the trailer Halo 3 announcement trailer. There are already other analyses out there - I hope you enjoy reading mine. I’ve tried to pick out the things that most impress me, the things that I think are indicative of the game we’ll eventually get, and the things that worry me (if any).

Remember that this trailer is running on Xbox 360 hardware - this is not prerendered. We can therefore judge the quality and know that we are somewhat approximating the final build. Enjoy!

0:00
The Halo 3 trailer was designed for the E3 conference - the audience wasn’t supposed to know it was Halo-related until the MC walked out of the cloud, and Cortana’s face was finally revealed. That’s partially the reason we have this long, slow intro - it builds tension.

A piano chord sounds at the beginning - two notes, an octave apart. With no notes in the middle (the third or fifth, especially), the notes sound lonely and final - fitting for the apocalyptic terrain that is slowly revealed. The screen begins white, and the overexposure fades out as blowing dust appears.

0:15
The white has faded away revealing a dusty, damaged area. The camera begins pulling back. It’s here that we first have cause to get excited - look at those clouds! Wispy cirrus on the left, and puffy cumulo nimbus on the left and right. Lofty stratus streaks the middle high in the sky. These clouds look better than even Oblivion’s clouds. We don’t see them moving, or changing at this time - this may or may not need to happen, but it does add realism. Should they be moving, though, especially compared to what we’re about to see in the sky? Moving clouds is not particularly difficult - they can be simple moving textures on the sky dome. Changing clouds - now that’s hard!

We see trees, though they are too far away to really examine - are they billboarded, or actual 3D objects, for example?

The most exciting thing, I think, that this image has to offer is the debris on the ground. I’ve always thought that a realism issue in today’s games is the amount of stuff lying around. If you step outside, there are rocks, shrubs, sticks - the ground is busy with stuff. In a typical Halo shot, the ground has only a texture - take a look at this shot.

At this point, you can see debris that includes wreckage - presumably from a battle - rocks, and the aforementioned dust. One negative point - the rock on the right that is partially let is very angular. So is the small clump at left center. Rocks you see in the world typically are round, such as the rock at far left.

I don’t know what the cable-like structures at the back are. I’ve heard that they could be a skyhook, but it looks more like a bridge to me. Maybe it’s multiple skyhooks? Look at the ring on the left. It has cables running to both ends, as if both have to be held down - a skyhook with two ways up? In any event, these rings were not just debris effects added at the end to make the scene look more “destroyed” - they are part of the complete storyboard. Perhaps this means that they are more important than just dressing - a battleground or level?
EDIT - Bungie has said that this is indeed a skyhook.

The dust gobs that are blowing past are simple textures - they don’t look like volumetric clouds; fairly easy to do, and adequate. Volumetric dust clouds are what you and I think of by a “cloud” - they have volume, and look different from different angles. Real clouds are fairly computationally expensive, though, and can be simulated well with flat, partially-opaque, moving dust textures. One thing that can be done to improve the dust clouds is to have the texture be a “moving” texture, so that it looks like the dust is in fact volumetric - this does not appear to be “moving” textures, either. Bungie has said that these kinds of environmental effects are part of the standard engine.

Finally, the “Warning - Grunts” sign is well documented. It’s nice to be fans of a company who are putting easter eggs into everything they do. :)

0:20
A thick dust cloud begins to blow past the very center of the screen, obscuring the road.

0:22
A figure appears carry something over its shoulder, though it is too far away to tell anything about it, other than the fact that it’s probably human. Plants begin to come in from the lower left. The plants sway nicely, but they are stiff like steel rods, and have no shadows. Oh well - at least they move!

0:26
A ruined structure begins to come in from the left.

0:28
A second piano strike, and static begins to fill screen.

0:32
A blue, fuzzy image overlays the screen, and says, “I have defied gods and demons”. You can clearly hear Gravemind pronounce the word “demons”.

0:50
The figure walking towards the screen, which has gotten closer and close, appears in armor for a split second, before the blue fuzziness returns, and the blue fuzz says, “I am your shield, I am your sword.” By the end of the text, the blue fuzz is clearly Cortana

0:58
The figure coming through the smoke, through the broken structure is revealed as the master Chief. A music swell begins, and ends lightly, corresponding to the Chief removing the Assault Rifle he’s holding over his shoulder and placing the stock in his left hand.

Here is a shot of this AR. It looks slighly different than the original:

The new Assault Rifle

Here’s a shot of the old AR, for comparison purposes:

The old Assault Rifle

Some differences: The new AR is a higher resolution model, which accounts for some changes. The ammo counter area, though, is at a new angle to the stock. There are some new rivets along the upper area. The barrel is slightly longer, and has a bit of a crown to the end. There is a small plate of some kind on the right side, on the upper piece, above the pistol grip. Who knows what the changes are - full auto/triple shot, for starters? A scope? :)

The Chief looks great - his armor moves in separate pieces. The chest carapace moves independantly from the lower torso piece. There is much better lighting - the light coming from screen right is accurately reflected by all sides facing that direction. In addition, there is bloom associated with the light. This shows that the HDR features of Halo 3 are in full gear! Yay! Bloom is one of the easier effects, though - lets hope Bungie is able to make use of the more complex parts of HDR.

1:02
If you look closely at the MC’s visor, you can see little flashes of blue light. I believe that these are lightning flashes being reflected from what the camera is about to turn towards. They are the right color and same frequency as the lightning that is occuring. These flashes are especially apparent at 1:12 through 1:14.

1:05
Cortana says, “I know you - your past, your future.”

1:10
Marty O’Donnell comes into his own - the piano finally moves, and we hear the Theme. That haunting, theme which sounds so light - so final - so expectant.

1:14
Banshees fly in from behind. Presumably they miss the chief because he’s hidden by the wreckage? Maybe they are on his side?

1:15
The music swells, and we see that the Chief is really at the edge of a cliff, and a Covenant cruiser is right on top of him. Six banshees fly past, and a Phantom. The theme repeats again.

1:20
We see a hurricane eye-like cloud structure over what looks like a giant crater. In the middle of the crater, a non-man-made hill rises gently, and the middle of the hole is dug out again.

1:23
Two more banshees fly past (one quite close), and the Halo battle music starts! We see two more Covanant cruisers in the crater (it must truly be a gigantic hole), and we can count upwards of ten more in the background. Lighting plays from the ground to the central hole of the crater.

1:24
We get a good look at the back of the Banshee that flies close by. Where is the pilot?

1:34
Lines of dust appear in the crater, and the hill splits open, like the petals of a flower. The central area also explodes with dust. The cruiser in the middle of the crater is blown back a bit.

1:38
We have a view of the cliff edge, and the Chief standing there.

1:43
Notice the shadow of the Master Chief? It is actually correct to his body - the sun is drawing his shadow as it actually should be. No round blobs, no fuzzy pixelated lines. Just sharp shadow! In fact, take a look at this picture:

The Chief on a cliff

The Chief’s shadow lifts up with his foot! It’s accurately being cast by the model geometry, and I’m very glad to see it. Even his gun is cast correctly. Now, look at the cracks in the ground behind him. They look good, and there’s even debris on the ground behind him. That’s what I like to see.

1:45
The Covenant cruisers ignite their engines, and fly back from the opening ground. We cut back to the crater, and see that the ground has continued to open - the center of the crater has descended, as well. The petals continue to rise. Energy collects around the rings inside the central hole

1:52
We cut to a closeup of the Chief - in his helmet, you can see the central structure and the cruisers.

1:59
The central hole “fires” into the sky, and the screen whites out.

2:04
Black - the music pauses, with strings hanging on the same tonic as in the start. Cortana says, “This is how the world ends.”

2:07
The theme lets go - trumpets blare, choirs enter, The Halo 3 symbol appears, we see Bungie’s logo, and the tag line, “Finish the Fight” and “2007″ appear.

If there was any doubt that this was the end of this story arc, this shows it - “Finish the Fight,” indeed. The FAQ again lists that the music at the end serves to possibly emphasize triumph, a finale.

I want to stress that Marty O’Donnell came up with a very stirring refrain for this trailer. I’ve been humming it for the last two days. Bum BA DUUUUUUUUUUMMM, bum ba duuuuuuuuuumm! It really sounds final. This is it. Bungie is done. I have to admit - I find it kind of sad. Even from this preview trailer - a year and half before the game comes out - it’s billed as the FINISH. So much finality was unexpectedly unwanted. I found myself waxing nostalgic even as I watched it - knowing that the fun I’d had with the series really was coming to and end.

So. We learn very little from this trailer. We learn:

  • The Master Chief is back on earth. But we knew this from the end of Halo 2.
  • Cortana is a little out of sorts, and seems to be somewhat adrift in time. This isn’t surprising, since she ended Halo 2 in the clutches of Gravemind.
  • This is the end of this story arc. Unfortunately!
  • The Covenant defeated the Earth defenses. We didn’t know if this would happen or not - at the beginning of Halo 2, the Covenant attack Earth, but arrive with a scout force, as opposed to a battle fleet. Cortana makes this clear. However, we can only assume that reinforcements must have been alerted!

How long was the Chief gone in Halo 2? A day? Two days? How long up to this trailer since he’s been back? Clearly he didn’t come directly to this crater, as the Covenant have uncontested air superiority, and appear to have wrecked things up quite a bit, and he’s carrying a weapon he didn’t have on his way there.

Do we get to participate in the defense of Earth, or only in the taking back of it? Do we go to another Halo? How can the fight be finished?

I liked the trailer, even though it doesn’t reveal a whole lot. The game is like a year and a half away, so it doesn’t surprise me that we don’t know much. Your thoughts, my friends?

When anti-aliasing hurts

Bungie posted their follow-up to the bombshell that Halo and Halo 2 output HD video signals when played on the Xbox 360. This Q/A was included:

How is the resolution change achieved technically?

For Halo and Halo 2, it happens in the “frame buffer� where Full Scene Anti Aliasing is applied. That image is then scaled for the best mix of image quality and compatibility.

I aim to show that, while this information is (unfortunately) expected, it means that you will theoretically NOT want to use the 720p output signal! Based on the results of a subjective, yet-to-be-run image-comparison experiment, we may be able to move this assertion from theory to fact.

First of all, what’s actually happening inside the Xbox 360 with Halo 2? When Halo 2 is running, the original Xbox creates the current image, or frame, based on the internal state of the game world, and the direction your camera is pointed (aimed out the eyes of the Master Chief). Once each frame of the video signal is created, it is stored in the “frame buffer”; a buffer is a temporary storage location in memory, this one intended for storing finished frames.

Next, the image is written from the frame buffer to the screen. Remember, the original image is 576 x 480 pixels - the standard dimensions of a NTSC TV image. High Definition TVs, however, have far more than 576 x 480 pixels: 720p signals require 1280 x 720 pixels. Therefore, to display this lower quality image, a HD TV upscales the image to fill up the space. Imagine taking a four-by-four pixel image and expanding it to fill an eight-by-eight screen - each original pixel would be blown up to be two pixels square. No additional data has been added; the image has simply been expanded to fit in the screen space. If a HD TV couldn’t do this, the image would be displayed in its original size in the middle of the screen, surrounded by black borders.

A game outputs the highest resolution it can, based on the the speed of its underlying program. For Halo 2, native 720p was originally planned, but was not possible due to it lowering the frame rate to an undesirable level. 480p thus became the maximum video output, regardless of what you did to the video signal once it left the Xbox. Once data hits the frame buffer, it is “finished” and ready for display. Any further image processing from here is necessarily defined as “lossy”, which means that you are losing some of the orignal data.

As a side note, upscaling is considered lossy if the frame is being scaled to a resolution that isn’t bigger by a whole integer factor, such as two times bigger, three times bigger, etc. Thus, the next truly lossless upscaling of a 576 x 480 pixel image should be to 1152 x 960. Do you see how this doesn’t fit in a screen that only goes up to 720p resolution = 1280 x 720? Some of the pixels in this scaling will have to be combined with their neighbors, in order to fill the entire screen. Combining pixels means that you are trying to get one pixel to hold the data that two held before. Imagine one was black, and the other white. Is the new pixel black, white, or grey? Data is thus lost. This upscaling is done by your TV - it is throwing away data to expand the signal, if it can’t natively support the upscaled resolution. Generally, we accept this loss, because the alternative is displaying the video on only a small section of our HD TVs. Upscaling algorithms also do a pretty good job in this conversion, so the loss is typically very small. To summarize upscaling, note that no new data is added, and that data is usually lost. Here’s an example:

anti-alias example

Now, with Halo 2 loaded and outputting 720p, the Xbox 360 performs a lossy editing routine on the image before it leaves the machine. Upscaling is done in the frame buffer (after the image is stored there) to get the frame into 720p, so that it won’t have to be upscaled by the TV. Fine and dandy, right? The signal has to be upscaled somewhere, after all. However, before the signal is upscaled, the 360 runs an anti-aliasing pass over it (I discussed anti-aliasing in my previous post). In the same way that combining pixels during upscaling loses data, smoothing out stair-step artifacts due to diagonal lines loses data, as well. Essentially, features that are only a few pixels in size can be effectively smoothed into nothingness by anti-aliasing. Look at one of the comparison pictures. Sure, the curves are rounder, but they’re rounder because the jaggy data around the edges has been altered. It actually looks very slightly bleary - the entire scene appears softened. This is a known side effect of anti-aliasing.

What is especially confusing to me is why they are running the anti-aliasing pass before they upscale. Imagine a 3 x 3 grid, with a diagonal line from the lower left corner to the upper right. According to the anti-aliasing algorithm I’m using, pixels above and below this line will be altered, which means that all of the pixels are changed. In a 6 x 6 grid, the line only affects ~67% of the pixels. Here’s an example, showing the difference between upscaling versus anti-aliasing first:

anti-alias example

The point is that anti-aliasing before the upscale means that you are editing a greater percentage of the frame, and the new jaggies that result from the upscale (jaggies are always born when you upscale) will be untouched. If the image had been anti-aliased after the upscale, then the jaggies that result from the upscale would have been cleaned up. Now, one possible reason Bungie might not have done this is because the duration of anti-alising algorithms is based on the number of pixels being edited. Increase the number, and you slow down the frame rate. However, I do not believe that was a problem here. Upscaling is rather fast, and I believe there was certinaly power to spare in the Xbox 360 to upscale first, and then anti-alias.

In addition, remember that there is no new data being created. This was confirmed by Bungie when they said the image was upscaled, above. If you take nothing away from this article other than the following, I will be happy: There is a difference between outputting native 720p, and upscaling a lower quality signal to fill a 720p screen. As stated, however, this is not unexpected in the case of emulation by the Xbox 360. Emulated games that can’t output in HD still won’t be able to, and no emulation profile is going to change the code to enable them to. The emulation profiles “fake” the game into thinking it’s being run on different hardware than it really is, but the game is not being changed at all. No bug fixes or additional game content are possible.

So here is our conumdrum. The Xbox 360’s video signal would have been exactly the same on my giant HDTV whether upscaled by the 360, or my TV. The size of the picture is the same. However, because of the anti-aliasing, the image will be (theoretically) slightly degraded when output in 720p mode. Thus, I claim that you will receive slightly more jaggy, but more detailed images if you use standard 480p mode. I recommend not setting your Xbox 360 to 720p mode for Halo 2.

Is this actually true in practice, though? Certainly, some amount of bleariness accompanies all anti-aliasing, but will the anti-aliasing actually be so severe that we can no longer discern some small objects? To measure this, we need to run an experiment. We need to capture video coming from the Xbox 360 in 720p mode, and video leaving my HDTV in 720p that originally came from an Xbox 360’s 480p widescreen signal. We’ll take still shots, and examine subtle and/or small features to see if they remain discernable. If they are, then Bungie has tuned the AA correctly. If not, then we’ll have another reason to look forward to Halo 3: true 720p video.

Footnote: At least one other game being readied for the Xbox 360 uses upscaled HD trickery. It’s not true 720p, folks. However, this is HD - High Def is anything over 576 x 480, in progressive scan mode. It’s still gonna be the prettiest racing game ever.

A Real Reason For High-Definition

I will sleep happy tonight. HD support comes automatic on Xbox 360 for Halo and Halo 2. Can you say, 720 p, and anti-aliasing?

~720p means that the resolution is much higher - 720p has 920,000 pixels, while standard old 480i (what you’ve got on your normal TV) has only 307,200 pixels. That’s about three times as many!

Thus, split-screen is now much more useful. For example, split-screen in 720p means that, for a two-way split, each half of the screen has more pixels than a standard TV has for the entire screen! If you split it in four, each screen has 75% of the pixels of the entire 480i screen.

The point is that things that used to be only a few pixels in size (far away objects, small objects) will now be drawn with many more pixels - thus they will look more realistic, and will be easier to differentiate. Immersion will be more complete.

~720p is a widescreen mode. The actual resolution is 1280 x 720. 480i is 480 x 640. See how the aspect ratio has changed to 16:9 from 4:3? The screen has increased in pixel count vertically by 33%, but horizontally by 50%.

The upshot of widescreen mode is that you’ll have better peripheral vision when you have the screen to yourself. Did you know that, right before Halo 2 shipped, they narrowed the field of view? I imagine they did it for frame rate reasons - if you reduce the number of pixels being drawn, by putting blinders on the view, you speed up the frame rate. It has always felt like tunnel vision. Well, widescreen fixes that, as you can now see to your sides. Imagine walking around all day with your hands cupped on the sides of your head, blocking your vision, and then taking them off again and getting a new glasses prescription. Kinda like that.

~720p is progressive scan. That’s what the little ‘p’ means. Normal TV’s at 480i only draw half of the lines for every pass the electron gun makes across the screen. Even, then odd, then even, etc. In progressive scan mode, every line is drawn for each pass of the gun. Essentially, the screen is drawn twice as many times per second. It actually appears to have greater visual resolution than 1080i (even with 1080i’s increased resolution), because all of those lines are being drawn. Also, undesirable flickering around narrow, horizontal images is eliminated.

~Anti-aliasing means that jaggies are reduced. If you draw a diagonal line on a raster (pixels made of squares) screen, you have to draw a stair-step looking pattern. It’s quite noticeable if the image is not moving, Anti-aliasing adds pixels to the side of that line that fill out the line, making it seem, well, more like a line.

All of this takes serious muscle. Tripling the number of pixels being drawn, and anit-aliasing the screen (which involves going over the entire image, after it’s been created, and smoothing out lines), requires a much better graphics card than the Xbox has. Originally, Halo 2 was supposed to be 720p. Shortly before the game out, however, it was down-graded to 480p due to frame-rate issues.

Enter the Xbox 360. It has graphics horsepower coming out it’s ba-shnozzig. If you’ve got the Harddrive peripheral (you did get the Premium version… right?), it’s got the emulation profiles for Halo and Halo 2 factory-installed. All you have to do is pop the game in, and blammo, you’ve got graphics coming out the ba-shnozzig.

It will interesting to see, now that the gauntlet has been thrown down, to see if other game manufacturers will upgrade the emulation profiles for their original Xbox games, as well. Are there any games out there that we’re actually going to play on the Xbox 360 that weren’t made for it? Other than Halo 2? Well, at least until Halo 3 comes out?

P.s. - Bungie said that they will reveal more about this resolution enhancement at bungie.net on Friday. Watch for it!

Movie Stumbler version 1.5.2

I’ve completed version 1.5.2 of Movie Stumbler - a program that creates an .avi (w/ sound!) from a sequence of bitmap files (.bmp) and a wave file (.wav). This version adds compression, and fixes all known bugs!

Here are the specs for version 1.5.2:

  • Windows XP only.
  • Specifying only a start image and end image, create a .avi movie file from a sequence of bitmaps (.bmp). Movie Stumbler will automatically calculate the images in between the starting and ending images. For example, your images could be named using the format “myAni.test.#.bmp”.
  • Use any frame rate from 1 to 1000 FPS.
  • Add an optional sound file (.wav) that plays from the beginning of the movie.
  • Compress the .avi with any codec installed on your computer, i.e. DivX.
  • Intelligent skipping of, or halting due to, missing frames.
  • Completely free!

Future Features:

  • Manually sort the images and sequence them any way you like.
  • ~Save movie builds, so a movie can be created by running a batch file, instead of entering in the same values every time.
  • Use a real installer, instead of just a naked .exe, and add shortcuts to the Start menu, etc.
  • Support for additional file formats (input and output).
DOWNLOAD Movie Stumbler!

Why did I write this? Well, two months ago, I bought the Student version of Maya Unlimited 6.5 - a modeling/animation/rendering package from Alias. It’s phenomenal software - it’s been used to do Ice Age, parts of Star Wars Ep. III, and tons of other movies and effects. Anyway, as you create an animation, what you’re actually doing is rendering, say, 30 frames a second over the duration of your movie. For a ten-second animation, this means you’ve got 300 image files! Maya provides a little program that lets you view these files as a flipbook - essentially a movie player - but it’s not portable: I can’t give that program to you. In essence, even though I can create a movie, I can’t share it with anyone who doesn’t own Maya.

The solution is merge these pictures into a single AVI (.avi) file. There are several programs available online that do this, but they are all either not free, were written for Windows 95, or didn’t support frame rates higher than 15(!).

Using the excellent, non-license-encumbered code available from Lucian Wischik, I created a simple WinXP GUI-based proggie that lets you create .avi files for any frame rate, with sound, for any number of images. And, it’s free!

Where does the name come from? When I first started looking around for a program to use, as I said above, I stumbled around the internet for a few days. I also discovered that the name I wanted to use (”makeAVI”) was already being used by another program. So, it seemed like a fitting choice to go with Movie Stumbler. :)