Realtime Voxel Landscape Engines - Part 1 - Introduction by (21 February 2000) |
Return to The Archives |
Introduction
|
Originally, realtime voxel landscapes had the reputation among programmers of being extremely simple to develop, especially those with limited degree of freedom. However they were not usually associated with high quality graphics, as most engines at the time produced quite blocky images.
More recently, voxel landscapes have become quite popular, featuring in high profile games like Outcast and Delta Force. Their overall quality has also drastically increased, making them potential rivals for the standard polygon engines. Lack of hardware support however has been a serious problem. This tutorial will start by quickly explaining the basics behind volume graphics. We will then move on to voxel landscapes in particular, and consider how they are rendered. The concept of limited degree of freedom will be introduced, and I will show you how this can drastically improve quality and performance. We will then consider texturing and lighting, and various other techniques to improve quality. Possible optimisations will then be explained, and finally I will describe a way of using hardware acceleration to render the landscape. I will assume you have knowledge of general computer graphics, and 3D theory. If you don't think you are up to standards, be sure to check out another of my tutorials on realtime computer graphics called The Art Of Demomaking. Knowledge of a particular programming language is not required to understand the theory, since all pseudo-code provided will be quite generic. The sample source code however will be in C++, so practical knowlege of that language would be an advantage. The main reason for this tutorial was the lack of serious information on realtime voxel landscape engines in general. I've had many requests, and since I consider my knowledge in the area reasonably good, having developed terraVox for about a year, I felt I was the man for the job. If for any particular reason you wish to contact me, I can be reached at alexjc@altavista.com. |