Voxel
A voxel, or volumetric pixel, is a three-dimensional analogy of a pixel. Voxel files end in ".VXL".Voxels may be virtually any colour (assuming the colour is utilised in the palette of the game or voxel editor)and can use surface normals. Voxels may also be animated with the use of an HVA file, but there are limits in the Tiberian Sun and Red Alert 2 engines as to what unit types may use certain types of animations. For example, in Tiberian Sun, an aircraft type may not utilise a turret animation.
Voxels are usually used to render vehicles and turrets in the Tiberian Sun and Red Alert 2 engines, whereas SHP files are generally used for infantry units and buildings. This is due to hard-coded restrictions in the game engines, and also because SHPs are usually of a higher in-game quality than voxels.
It is worth noting that units which are comprised of voxels will tilt while walking up a slope in the aforementioned engines, whereas an SHP unit, such as the Titan or Wolverine, will not. Voxels are generally used for the turrets of SHP buildings such as the Sentry Gun or Grand Cannon, because they allow 360 degree rotation of the turret, without the need for the facings that would be used in an SHP.
Format
[insert more info here, re: sections and stuff]
The individual voxels (in terms of volumetric pixels) are stored as a series of five values in WW's voxel format: The X, Y and Z position of the voxel, the color index, and the normal index.
The what color which the color index stands for depends on the palette the voxel is displayed with; what angle a normals value indicates depends on the normals generation and the normals array value for the index.
Voxels cannot be larger than 255x255x255, and have severe graphical problems, such as artifacting and palette errors at such a length on any axis1. This could be a major setback for some types of voxel, such as especially long ships or aircraft, but not a big problem with most voxels which are generally no larger than 100 on the z axis.
In addition to the .VXL file, all voxels must have a .HVA file, which defines the location the voxel occupies in 3 dimensional space relative to 0 on the X,Y,Z axes. THe HVA is also used to line up turrets and barrels vertically and change the point around which the voxels rotate, and to animate multi-sectioned voxels. Without an HVA, voxels cause an internal error.
Multi-sectioned voxels are made up of a hierarchy of voxels within on .VXL This is most obvious in Tiberian Sun's Mammoth MK2, which was a singe .VXL file comprising the body, each upper and each lower leg, and each foot, for a total of 13 voxel objects in the file. This was paired with a more involved HVA that usual to give the unit a walking animation. The same process is used on a much smaller scale in the construction of helicopter units for RA2/YR, where the rotors are a separate section but not a separate file, making it easy to animate. There are no other examples in the vanilla games, but there have been a substantial number of multisectioned voxels released in the modding community.
Rendering
In-game, a voxel model has a total of 32,768 possible facings (32 facings per axis). Each facing is rendered only on demand, then cached for future use during the game session. This improves performance and conserves memory, a strategy needed especially at the time the games were made.
See also
Footnotes
1 ↑ Only conclusively tested in Tiberian Sun, but there is no reason to conclude that it is not a problem in RA2 - might require testing