It's free to join Gamasutra!|Have a question? Want to know who runs this site? Here you go.|Targeting the game development market with your product or service? Get info on advertising here.||For altering your contact information or changing email subscription preferences.
Registered members can log in here.Back to the home page.

Search articles, jobs, buyers guide, and more.

By Alex Ferrier
Gamasutra
August 27, 1999

Printer Friendly Version

Letters to the Editor:
Write a letter
View all letters


Features

 

Contents

Introduction

Objects and Coordinate Systems

Mathematical Definition of Bezier Curves

A Review of Bezier Surfaces

Introducing Bezier Volumes

The FFD Operation

Bringing all the Theory Together

Bringing all the Theory Together

So far, we’ve talked about FFDs deforming the vertices of an object as if the object had to be polygonal. In practice, there is no reason for this to be the case. In fact, FFDs are particularly useful when combined with objects represented by Bezier patches. There are two reasons for this:

  1. An object defined by Bezier patches will normally require fewer control points than a polygonal object would require vertices. The FFD only needs to be applied to the control points of the object, and therefore saves calculations.
  2. A polygonal object requires a high polygon resolution to prevent the object from becoming faceted or self-intersecting where there are strong FFD influences. A Bezier object can avoid these problems to a greater extent (although not completely if its resolution is too low.)

In practice, Bezier objects not only look better when used with FFDs, but they also require fewer calculations. If you’re already using Bezier objects in your game, there’s no reason not to implement FFDs, especially since they are so cheap.

Another way to reduce the number of calculations is to reduce the degree of the FFD block. While a cubic FFD requires 64 iterations of the function’s main loop per vertex to calculate the deformed positions, a quadratic FFD block, represented by a 3x3x3 array of control points, would only require 27 iterations. Linear FFDs, defined by a 2x2x2 grid of points can be used to quickly apply shear or taper to objects.

The sample application (deformation.zip) demonstrates the classic Utah Teapot, represented here as a Bezier-patch model, undergoing constant real-time deformation by a single FFD block. There is a readme.txt file describing the most interesting classes in the project to help you work out what’s going on in the code.

References

Watt, A. and Watt, M., Advanced animation and Rendering Techniques, Addison-Wesley, 1992.

Sederburg, T. W., Free-form Deformation of Solid Geometric Models, Proceedings from SIGGRAPH, 1985.

Bio

Alex Ferrier left Scotland at the tender age of 19 to go to work for Gremlin Interactive. There, he programmed for PlayStation titles such as Judge Dredd and Acuta Soccer 2 before moving on to PlayStation 3D engine programming with Actua Soccer 3. He's currently debating going back to university. He has lots of thoughts, but most of them are badly deformed. You can email him your straight ones at alex@alexferrier.freeserve.co.uk


[Back to] Introduction


join | contact us | advertise | write | my profile
news | features | companies | jobs | resumes | education | product guide | projects | store



Copyright © 2003 CMP Media LLC

privacy policy
| terms of service