Category Archives: Physics

GDC 2013 – Tuesday is Physics Day ….kinda

Tuesday was Day Two of the Math and Physics for Game Programmers tutorial. Monday was all about the mathematics, and Tuesday was supposed to be all about the physics. There was one great talk from which I was able to extract a better understanding of configuration space objects, but the rest of it was …meh. As with yesterday, those talks which were edited and tweaked from last year showed improvement, those that weren’t still sucked.

The day started out with a demonstration of a simulation of a Go stone. …yeah. A stone. It seemed that the speaker, Glenn Fiedler from Sony Santa Monica, was simply pleased with himself that he’d recreated the wheel. He went through the process of creating his stone model, then he described the basic translation and rotational dynamics he deployed without discussing the specific details. It might have been a more fruitful talk if there were more details in how he was integrating the motion, why the integration works the way it does, and described the fundamental principles involved. Although his simulation worked pretty well, during talk, there were a few conceptual errors, especially about the properties of the moment of inertia tensor. He kinda had the right idea, but not really. Granted it’s a tough thing to pick up on your own, but if you’re giving a talk on the topic, you should have a genuine and thorough understanding of the topic.

1364390049722The second talk of the day was “The Separating Axis Test” by Dirk Gregorius from Valve. Gino van den Bergen of Dtecta gave a talk last year on collision detection using Minkowski differences and configuration space objects, but I must admit that the process was still fuzzy to me. Dirk’s talk on the issue really helped. Don’t get me wrong, Gino is the man and does a great job, and when his talk came up later in the afternoon, I was able to grasp a bit more about how CSOs work. I doubt that they’ll make it into the PHYS191 course in a formal way, but I may put a bonus section on it in the textbook this summer if for no other purpose than to ensure that I understand it correctly myself. No better way to see if you really understand something that to try to teach it to someone else. The rest of the afternoon was rather blah, unfortunately. Dirk’s and Gino’s talks certainly made up for the mediocrity of the others.

Since the Expo Hall isn’t open until Wednesday, during my downtime between when I left the physics tutorial and supper, I worked on taking some photos. I took some of this earlier in the morning on my way to breakfast, but was disappointed with the results. Yes, I was at the Rally in the 100 Acre Wood, but I didn’t work on many panning shots there so I’m really out of practice. That showed as I tried to get some panning shots of cyclists and streetcars. I gotta get back into proper form before the Kansas City Region SCCA season starts and definitely before the first IndyCar event I’ll work, the Indianapolis 500 Mile Race. Definitely have to have good panning skills there.

GDC-2013_03-26-13_005
Of course, one thing that is ever-present in San Francisco around the touristy areas are the street performers. Most are simply annoying, but there are some, like this duo, that really sounded good!

One of the coolest new things I’ve seen at GDC so far is the Video Game History Museum alcove. They have several coin-ops including one of my favourite games, Asteroids! (where’s my two-liter of Shasta and my Rush mix-tape?) The also had several classic consoles, some well-known, others not as well-remembered. Of course they had the Atari VCS (later known as the 2600), but they also had a Vectrex! That’s a tough find! There weren’t too many of these machines made, and even fewer of them have survived in playable form.

Chinatown_IntricateGraffiti_smThe day ended with a stroll through Chinatown, a requisite visit every year. There wasn’t anything new, really. The same peddlers were peddling the same cheap, cheesy crap. One change that greatly disappointed me was the defacement of one of Banksy’s pieces. I now feel very fortunate to have imaged this a few years ago. It was a really cool work, but now in spite of the plexiglass overlay placed in hopes of preserving the street art, it’s been covered with simple scribbles of white spray. It’s a damn shame.

Next post will be all about swag! The Expo Hall opens on Wednesday, and with a light session load today, I’ll be cruising through as much as I can, collecting as many goodies as I can.

Of Rockets, Alligators, and Baby Sea Turtles

I recently had the amazing opportunity to go to the Kennedy Space Center as an invited guest to see the launch of a pair of spacecraft, the Radiation Belt Storm Probes (RBSP). This opportunity came to be through my position as a researcher at Fundamental Technologies, a small research firm in Lawrence, KS that will be the Science Operation Center (SOC) for the Ion Composition Experiment (RBSPICE). This was my first, and likely only, chance to see a launch as an invited guest, and my wife and I were over-the-moon excited, if you’ll forgive the pun.

Unfortunately, the launch was delayed 24 hours from its originally scheduled launch time of Thursday, 08/23 at 0407 EDT because of a concern over the RD-180 engine on the Atlas V that RBSP was atop. There had been a problem with another RD-180 engine that was being fitted to another Atlas V in Alabama, and the engineers wanted to make sure that the same defect wasn’t present in RBSP’s engine. No worries from us, though, since we had reservations through Saturday. Plus, we didn’t mind the fact that we’d get to have a full-night’s sleep after travelling all day long. That evening we did get to attend a reception hosted by United Launch Alliance, the group responsible for providing the launch vehicle. It was your typical cocktail party with everyone standing around awkwardly having awkward conversations, awkwardly introducing people they’d just met to other people they’d just met, while trying to juggle silverware, plate, and drink in one hand to shake hands with the other.

Our hotel was right on the beach, so being a wannabe photographer, I had to go out early in the morning and see if I could get a good photo of the ocean sunrise. When I got out to the beach in the predawn, I was met with a surprise. The spotlights illuminating RBSP’s Atlas V on Space Launch Complex 41 at Kennedy Space Center were clearly visible from our hotel in Cocoa Beach. It was pretty darn cool to be able to see that our spacecraft was there and waiting from so far away. While waiting for sunrise, I also got another surprise photo opportunity. Apparently, August is sea turtle hatching season, and my wife and I got to witness one young, lucky turtle make it from the beach to the sea without becoming breakfast for the lurking sea gulls.

Finally, the day of the launch was at hand! We had tried to go to bed early since our alarms were set for 0030 so that we could get ready and be at KSC to catch the shuttles to the viewing bleachers by 0130. Our plans for an early respite were ruined first by phone calls at 2100, and then by a fire alarm at 2330! Someone had pulled the fire alarm as a prank and woke up the entire hotel sending us all out to the parking lot to escape the ear-splitting alarms in our rooms. So with minimal shut-eye, we headed out to KSC and were at the Banana Creek/Saturn V Viewing Location by about 0200, ready to see RBSP leave the planet. The location was close enough to afford a very cool view of the launch vehicle, but far enough away that we wouldn’t be roasted by the exhaust.

Being right next to a swamp, however, the mosquitoes were vicious! The countdown was approaching the T-4m mark at which there was a scheduled 25-minute hold in preparation for the Readiness Poll for Launch. Once everyone gives the Flight Director a “Go”, then the countdown resumes. We never made it that far. As the various systems were polled for a go/no-go, everyone was good except for down-range tracking. The tracking beacon on the launch vehicle wasn’t holding frequency and the down-range radar couldn’t maintain a definite lock. The launch was scrubbed and scheduled for a second attempt on Saturday morning.

After a couple fitful hours of sleep, it was time to get up again and head back out to Kennedy and the Visitors’ Complex! I volunteered at the RBSP exhibit booth there next to the IMAX theater answering questions about the radiation belts and the RBSP mission, as well as leading youngsters through a variety of short activities we had set up to demonstrate the effects of magnetic and electric fields. It was also a good time to reconnect with some great educators I met at the RBSP Teachers’ Workshop held at APL earlier in the month. My complimentary ticket to the KSC Visitors’ Complex didn’t include access to the bus tour, so no up-close tour of the VAB for me, but they do have a pretty cool Rocket Garden where they have several launch vehicles on static display.

Saturday morning at 0030, it was time to repeat the Friday morning’s routine, thankfully minus the interrupting fire alarm. This time, we made a stop at the doughnut shop for coffee and breakfast. Friday was a struggle without caffeine! The process was pretty much the same as before, show up at KSC and get shuttled to the bleachers and wait. Things were looking sketchy right from the start as we could see lightening off to our south and radar (which everyone had up on their phones) showed a pretty potent cell approaching. It was far enough away that we still had hope that it wouldn’t hinder the launch. At the T-4m hold, though, weather forced a no-go, and it even rained on us for a bit. As the storm cell approached the Cape, the weather conditions became less and less favorable for a launch and once again at 0425, they scrubbed. No launch for us. The night wasn’t a total loss, though. We did get to see an alligator swimming by in Banana Creek right in front of us, and thankfully on the other side of the fence.

On our way back to the airport, we decided to make one last stop at a museum we learned about through a tip on Foursquare, the U.S. Space Walk of Fame. You’d never know it by looking at the front of the museum as it look more likely to house a barber shop than artifacts from the space program, but they have the best and coolest collection of artifacts and memorabilia I think you’ll find anywhere. Many of the folk involved in the space program as engineers, technicians, scientists, and astronauts have donated a variety of gear and equipment including some of the old launch control panels. The coolest thing about the control panels is that they were powered and kids (or space geeks like me) would enjoy throwing the toggles and watching the different systems come to life.

All in all, it was a good experience. I met a lot of neat people, got to talk a lot of space science and geek out, and I at least got to see our spacecraft on the pad and ready to leave the planet even if it never did launch. Of course there was also all the frolicking in the ocean and enjoying mass quantities of awesome seafood and Cuban cuisine. The next launch window for RBSP is on Thursday, August 30th, at 0305, and you can see the launch streamed live on NASA TV. I’ll certainly be awake and crossing my fingers for a fully green board! GO ATLAS, GO CENTAUR, GO RBSP!

GDC12 – Wednesday

It’s Swag Day!! The Expo Hall opened today along with the starting of the main part of the conference. Although the Math and Physics for Game Programmers tutorial of Monday and Tuesday were over, the math and physics discussions were just getting started!

Normally, the first event of the day on Wednesday is a keynote address from someone who had a significant influence on the industry such as Shigiru Miyamoto or Hideo Kojima. This year, they decided to instead have 100 of the presenters over three days of the conference pitch their talks in 45 seconds or less. This “Flash Forward” concept was interesting, entertaining, and it influenced my session choices, but I still miss hearing a talk from a legend in game development. I’m hoping they go back to the traditional format for next year.

My first session of the morning set a theme for the entire day looking at fluid modelling. Carlos Gonzalez-Ochoa gave a brilliant talk, Water Technology of Uncharted, discussing the various techniques used to generate realistic looking water elements in the Uncharted series of games. This was a surface-mesh modeling technique, not a fluid simulation, but a vector field representing the bulk flow of the water was used to modulate textures and the wave directions. Rather than building a spectrum of wave frequencies and modelling that multi-harmonic wave motion, they instead created a random collection of “wave particles”, pulses that could be tweaked to be as round-topped or as peaky as desired by the artist by adjusting a single parameter. Rather than generating a spectrum of these wavicles, a single set of them is generated and then scaled down and replicated to model the higher frequency components of the total wave motion. Although these wavicles have their own random local velocity, the ensemble is modulated by the bulk flow vector field to generate a more realistic-appearing surface. The final piece of the modelling is to include larger amplitude long-wavelength modes to simulate swells, rollers, and retromotive waves in rivers or channels. Combining all of these together creates some absolutely stunning looking water with very believable dynamics and behaviour.

My next session was actually a talk on a topic that got me first excited about the technical sessions at the GDC when I first attended back in 2007. In my first trip to the GDC, I was blown away by the intense mathematics involved in many aspects of intensity-mapping and lighting. The talk was on the advantages of using radial basis functions as an alternative to spherical harmonics. This year, it was the radial basis functions that were under attack. Spherical harmonics still suck, but the presenters, Robin Green and Manny Ko, argued for the advantages of spherical needlets as an alternative to either spherical harmonics or radial basis functions. The talk itself began with a crash course in Hilbert spaces, overcomplete basis sets, and how to create good basis functions. That was all well and good, and interesting, but I would have preferred that they spent more time on the exact specifics of needlets, their advantages and disadvantages, and a demonstration of their usage. Unfortunately, there was not enough time in their talk for this.

There were a few other talks I attended today, which meant minimal swag-gathering in the Expo Hall. Tomorrow’s schedule of interesting talks looks to be more sparse, so I’ll be in full swag accumulation mode and will have pics then.

GDC12 – Tuesday

Day Two of the 2012 Game Developers Conference was all about the physics for me. Today, there was an all day Physics for Game Programmers tutorial, and like with the previous day’s math tutorial, some of the talks were hits and some were misses. The day began with a great discussion of collision detection and a conceptually complex method utilizing something called a configuration space object. Details about the process of creating a utility object by sweeping one of the game objects with another. The properties of the object generated by this sweep, the configuration space object, allows for quick collision detection by determining if the coordinate system origin in configuration space lies within the CSO. Not only does this procedure allow for the detection of the collision, but it also allows for the rapid determination of the collision point, and the collision normal, both of which are critical for resolving the velocities after the collision. You can learn more about this procedure and download the code at http://www.dtecta.com/.

The second talk of the day was a party of tensors and Newton’s 2nd Law. I loved it! Solving Rigid Body Contacts by Richard Tonge of nVidia focused on collision resolution. Once you know that a collision has occurred, you then need to figure out how to handle that collision. One thing that I found interesting is that was that game devs use the term impulse to refer to a \Delta \vec{v} as opposed to the physical definition of \Delta \vec{p} . After listening for a while, it was completely understandable why. Collision resolution happens instantaneously, and the change in the objects motion is achieved by applying the simple statement, \vec{v_{new}} = \vec{v_{old}} + \Delta \vec{v}. Getting this \Delta \vec{v} physically right, doesn’t always result in physical behaviour from the simulation. Tweaking of collision-induced impulse is needed to produce more realistic appearing motion and reactions.

The afternoon sessions were all about ragdoll physics, which would have been very interesting if there was any depth to the talks, but they were all very high-level and filled with pretty video sims and devoid of any serious discussion of the physics modeling. Unfortunate, that. The salvation of the afternoon was a talk by the tutorial’s facilitator and organizer, Jim Van Verth. Jim talked about the basics of fluid simulation including introductions to the Navier-Stokes equation and methods for modeling and solving it.

The most straightforward way to model fluids is by gridding your space and evaluating the continuity and momentum equations discretely at the center of each grid element. This is robust, but expensive. It also only operates in the space in which you’ve established your grid. You won’t want to use it world-wide because of the computational costs, but it is useful for very localized fluid effects such as puffs of smoke during destruction events and the like. This method also doesn’t model splashes well. The fluid remains intact, rather than separating into droplets as a real fluid will.

A method that is more globally applicable and that does a good job of modeling splashes is Smooth Particle Hydrodynamics (SPH). SPH uses kinetic modeling of small particles with an attractor force, simulating a surface tension, to loosely bind the particle together. The ensemble of particles is then skinned to produce a realistic looking fluid surface. Splashes are well modeled by this technique, and since its a kinetic system, not a cell-based system, its globally applicable. You don’t need to grid out your space, and the fluid is free to flow wherever physics takes it in the world.

The last method demonstrated was a method of simply modeling the surface of a fluid, such as an ocean surface. Ocean waves are not of a simple single frequency, but are complex structures comprised by a multitude of wave modes. To generate realistic looking waves, a Fourier sum is used to add multiple wave modes to the entire surface and the wave speed is properly calculated via a frequency-dependent dispersion relationship. Building these modes in frequency-space and then using a FFT to transform back to time-space results in extremely realistic fluid surfaces. This is the method used to generate the ocean surface in the movie Titanic. Cool!

Last event of the day was the IGDA party. Its something that we attend every year, at least for a half-hour or so. Typically there have been munchies and various innovated board games scattered around. This year, there were vendor tables, no munchies, minimal board games, and a TON of people! Its probably a good thing the fire inspector didn’t stop by. They’d have shut the place down. Oh, yeah, and there were ribbon dancers. :S Just what kind of party is this? It wasn’t your typical professional organization party.

Wednesday, the main part of the conference begins and the expo hall opens! Yay swag! I’ll have pics of swag after my first swing through the expo hall. If you see something you like, be sure to leave a comment for me.

GDC 2012 – Monday

The 2012 Game Developers’ Conference officially got started this morning. For me, it seemed like a late start with the first sessions beginning at 10am. For someone who’s up at 5am on a regular basis, that’s a lot of morning time to kill before getting started! Fortunately, my camera is with me everywhere and I had lots of time to explore before hitting Mel’s Drive-In Diner for breakfast.

The “discovering new experiences” part of the day started VERY early as I experienced my first earthquake. A 4.0 magnitude quake struck the Bay Area at 5:30 this morning. While it wasn’t that strong of a quake, it was still disconcerting while occupying a room on the 8th floor of an old, sketchy hotel! At least now I can scratch “survive an earthquake” off of my bucket list.

Sessions for the day were part of the Math for Game Programmers tutorial. In the past, this has been a weak tutorial, but I was pleasantly surprised by its evolution. While the oratory skills of the organizer had still not improved one bit, nor had his specific talk, the quality of the other presenters and presentations improved quite a bit. First out of the gate was a talk on Bezier curves and splines. Might have to see about working curves and splines into the MATH/PHYS 191 course. It would be a natural succession to introduce them after we discuss parametric equations.

There was also a good talk on collision detection methods which reaffirmed that the work we’re doing in the MATH/PHYS 191 course is in line with what’s being done in the field. All very interesting, and I’ll have links to the slides in time. The last talk of the day was about data as paramount when thinking about how to construct code. The speaker’s motto was “understand the data, and you understand the problem”. As a computational physicist, my reaction was, “Duh!” Preaching to the choir, there.

One of the great things about coming to San Francisco is having the opportunity to meet up with some of my friends and fellow IndyCar fans from Twitter. Tonight, I was introduced to a new place, Pesce, which specialized in tapas-style seafood dishes. It was fabulous! I would include a pic of the lobster ravioli and the pan-seared scallops, but they didn’t stick around long enough. Delicious!

So the first day was successful. At least more than it had been in past years. Tuesday, the second day of the tutorial, is all about Physics for Game Programmers. It will be interesting to see what new things they bring to the sessions this year. Also, the IGDA party is Tuesday night! It’s never been a real blow-out type of party, but at least there’s free food.