|
|
| Real-Time Physically-Based Dynamic Sound | |
Term 5 Focus Study This focus study will explore the potential to generate sound effects based on the physical properties of an object. These sounds will be based on the oscillations of a soft-body after a world collision A soft-body will be simulated with a system of interconnected vertices with spring-mass damper systems. Eventually, the soft body will be simulated as a solid mesh with internal forces using tetrahedral mesh generation. Currently in Progress and slated to be finished in June 2006
|
|
| Virtual Acoustics | |
Term 3+4 Focus Study My Focus study during these terms is in the field of Virtual Acoustics. To demo this research, I am implementing an accoustics renderer in the Quake II game. First and N-th sound reflections, pictured to the right. If a first order ray is occluded from the player, then it is reflected against the BSP geometry until either it is visible, or a defined distance is reached. Real-time per-texture EQ dampening Distance Related Delay processing. Delay is calculated by distance the sound travels through reflections, |
click here to download a demo video click here to download a lower quality demo video |
| Level of Detail Terrain Rendering | |
A 1 million vertex terrain grid is split up into 1024 mini-grids Each grid is rendered with a level of detail based on its distance from the viewer and the amount of detail in the grid. (Distance-based and Detail-based) To avoid defects due to detail levels, stitching is done to fit triangles from two different detail levels together. Smoothing is done to ensure there are no conflicts between detail and distance-based calculations
|
|
| Quake BSP Loader | |
A quake BSP loader was integrated into my framework. Translation of BSP geometry to vertex-index mesh Raw texture and lightmap loading BSP tree traversal for VIS for PVS and ray casting Frustum culling against leaf node volumes
|
|
| A* path-finding | |
The terrain grid from the Level-of-Detail assignment was used to test and visualize an A* implementation. The height value of the terrain is used as the weight for a path. Water is flagged as impassable. In this picture, the colored grids mean: red - "closed" path green - "open" path blue - chosen path
|
|
| TOMscript - custom scripting language | |
A custom integratable or stand-alone script language. Language was designed ground the up, starting from a BNF grammer definition For this I implemented everything from scratch:
|
|
| Rigid Body Simulation | |
A single rigid body is simulated on a spring tether. A gravity force is applied to give the simulation "yo-yo-like" qualities. The attachment point on the cube is adjustable. This demonstration was an assignment to learn how to apply torque forces to a rigid body, and integrate the orientation to simulate rotation.
|
|
| Spring-Mass Damper Systems | |
A series of spring-mass damper system is applied to four particles to hold them in a cube configuration. This simulates rigid-body motion, and also demonstrates simple soft-body physics The cube can collide with walls and other particles as well as have the spring constants modified to demonstrate the properties of the spring system.
|
|
| Character Animation and 3DStudio MAX Exporters | |
This asignment was in two parts. First, we learned the 3DStudio MAX API to export a mesh and character animation out to a file format of our own design. We then wrote an importer for our own engine framework to read in and display the animation. The assignment was our first heavy-duty exposure to the usefulness of Quaternions. We also used a vertex shader to compute the slerp-ed vertex positions. We did this in both API's: GL and DX. The art was provided by Guildhall students. |
|
| Bump/Normal Mapping | |
This assignment was to teach us the concept of bump/normal mapping and concepts of using the Fixed Function Pipeline to combine textures and use the texture channels to achieve special effects. These concepts were then carried over into teaching us shaders. This scene is a few simple objects, and a few not simple objects with normal maps applied and rendered with a shader...in both API's; GL and DX. We used HLSL and the GL assembly language to program these effects.
|
|
| Hermite Spline Reparameterization | |
Over the course of a few weeks of class, we explored the world of Numerical Methods and their usage to solve implicit and otherwise difficult problems. This demo is the result of that exploration. Pictured here is my old terrain map from previous assignments, along with two splines that weave and undulate throughout it. The camera follows the red spline, and stays fixed on the red ball, which travels on the blue spline. The splines are calculated at startup, and reparameterized so that the points along the spline have an even distribution, so that the objects do not slow down along the sharp curves. Reparameterization is a process that involves computing the arc length of a spline segment using numerical integration, and then finding the root of the equation determined by the desired distance between points on the curve. |
|
| Scenegraph with View Frustum Culling | |
The concept of a hierarchial scenegraph was introduced. Cube entities are inserted into the scenegraph and made to rotate around each other, demonstrating the benefits of a hierarchial system. Each level of the hierarchy is given a bounding volume that contains all child elements of the level. These bounding volumes (represented by the wireframe spheres) are used to perform collision checks against the view frustum to determine drawability. If the object is outside the frustum, it is not drawn. This again demonstrates the usefulness of a hierarchial system in draw optimizations. |
|
| Height Map and Billboards | |
A height map is read in as a raw binary file of height information and is applied to a textured grid to create terrain. The terrain detail is further enhanced by using multi-textures in the Fixed Function Pipeline. Trees are generated at random points on the grid and rendered as oriented and textured quads with alpha for transparency. |
|
| 3DS file loader | |
This assignment taught us how to read a 3D model in from a file and render it correctly. This is a gun from my Team Project, Blood Ritual. The art was done by Keven Penrod, another student at the Guildhall. |
|
| Agent: Automaton | |
Term 1 2D Software Game Project In the first term here at the Guildhall, the first major project is to create a tile-based 2D scrolling game. From scratch. It was the first complete game I have ever written, and I think it turned out pretty cool! In this game, you play a robot, who needs to find his way to the boss on the level, and take him out. There are multilple weapons to get, and other robots to shoot. This game was inspired by Robotron 2084, so you may notice some similarities, like the independant movement and firing controls. Download it here
|
|
| Pinball on Titan | |
Our final exam was to create a pinball game using our Dynamic Particle simulator. Very simple and ugly, I added the image of the landscape of Saturn's moon Titan...cause I'm a geek.
|
|
| Dynamic Particle Simulation | |
This assignment was to simulate particles in a system with different variables. The variables are: mass, material, gravity, air resistance, friction and a force field. Different methods of numerical integration are also demonstrated, Euler, Velocity Verlet and 4th order Runge-Kutta. This is kind of fun to play with. Download it here Keys:
|
|
| Agent: Automaton Level Editor | |
An assignment in software dev class was to create a level editor for our game project. This was done in C# as a personal excercise. This editor proved invaluable in creating the game.
|
|
| Dynamic Collisions | |
This assignment was written on the spot in class, using our existing collision-detection functions. The collisions are dynamic in that they are evaluated using the Minkowski Sum, in Configuration Space. This is a precursor to the Dynamic Particle assignment, and the collisions do not behave realistically since mass is not figured into the equation.
|
|
| Bilinear Filtering | |
In addition to all of our other image processing functions, we were to also implement Bilinear Filtering. This function was used in Agent: Automaton to resize the parallax layers dynamically on load.
|
|
| WMD Sweeper | |
Our first assignment in software development, meant as a crash course in Win32 programming, was to re-create Mine Sweeper, verbatim. The art concept credit goes to: David Vargo.
|
|