[Note: This document is viewed best with Netscape Navigator 4]
3DICA v2.21
 
- The Ultimate 3D Coding Tutorial (C) Ica /Hubris 1996,1997,1998
- Over 150k of pure sh...er, 3d coding power!

This version of 3DICA is dedicated to the memory of Tapio Hytonen who was killed in a fierce train accident in Jyvaskyla, Finland, 6th March 1998.


Table of Contents

    * A C source treating the subject included

    0 General Things

      0.0 LICENSE AGREEMENT

        0.0.1 DISCLAIMER
        0.0.2 LIMITED WARRANTY
        0.0.3 Seriously
        0.0.4 3dica careware -- what does that mean?

      0.1 Authors, Greets, etc.

        0.1.1 Ica
        0.1.2 Chem
        0.1.3 Hubris Productions
        0.1.4 Thanks for help
        0.1.5 Greets
        0.1.6 Thanks for support

      0.2 About the Document

        0.2.1 Where can I get the newest version of 3dica?
        0.2.2 What has happened since the last version?
        0.2.3 Features to be added

      0.3 3D Terms etc.

      0.4 FAQ

      0.5 Recommended References

      0.6 A Quick Introduction to Radians

    1 Vector and Matrix Algebra

      1.1 Vectors

        1.1.1 General
        1.1.2 Vector equation
        1.1.3 Vector length *
        1.1.4 Vector addition
        1.1.5 Dot product *
        1.1.6 Vector projection
        1.1.7 Cross product *
        1.1.8 Scalar triple product

      1.2 Matrices

        1.2.1 General
        1.2.2 Matrix operations
          1.2.2.1 Addition
          1.2.2.2 Multiplying by a scalar *
          1.2.2.3 Multiplication *
          1.2.2.3.1 Multiplying by a vector *
          1.2.2.4 Transponation

    2 3D Geometry

      2.1 The Context Between 2D and 3D Worlds *

      2.2 The Matrix Technique -- Foreword

      2.3 Rotating the Object Matrix*

        2.3.1 Rotating about an arbitrary vector

      2.4 The Camera *

        2.4.1 Deriving the camera matrix from a vector
        2.4.2 B-Splines

      2.5 Transforming a Vertex by the Object Matrix*

      2.6 Hierarchical Transformations

      2.7 Inverse Transformations

    3 Polygon Fillers

      3.1 Flat Triangle *

        3.1.1 Fixed point *

      3.2 Gouraud Triangle *

      3.3 Texture Triangle *

        3.3.1 The idea of perspective correction *
        3.3.2 Fitting a texture onto an object *
        3.3.3 Bilinear filtering

      3.4 Texturing + Shading *

      3.5 The Idea of Convex Polygons

    4 Sorting

      4.1 Z-Sorting *

      4.2 Z-Buffer *

      4.3 BSP-Tree

        4.3.1 The main idea
        4.3.2 Required formulas
        4.3.3 Hints

      4.4 S-Buffer

    5 Shading

      5.1 Flat Shading

        5.1.1 Z-Flat
        5.1.2 Lambert Flat *

      5.2 Gouraud Shading

        5.2.1 Z-Gouraud
        5.2.2 "Real" Gouraud *

      5.3 Phong Shading

        5.3.1 Phong Illumination *
        5.3.2 Environment mapping *
        5.3.3 "Real" Phong *

      5.4 Light Source Handling

        5.4.1 Freely moving light sources
        5.4.2 Spotlights
        5.4.3 Light attenuation

    6 Hidden Face Removal

      6.1 Backface Culling *

      6.2 View Cone *

        6.2.1 3D clipping

      6.3 Portals

    7 Some Other Nice Things

      7.1 Frame skipping

      7.2 Optimizing in Assemby

      7.3 Palette Quantisizing

        7.3.1 What is it actually?
        7.3.2 Local K Mean
          7.3.2.1 An abstract approach
          7.3.2.2 A more technical approach
        7.3.3 Median Cut
          7.3.3.1 The definition
          7.3.3.2 The algorithm
          7.3.3.3 Implementation hints