This document describes the contents of some data files "Re-Volt" uses. It is intended for those who are interested in creating Re-Volt cars of their own.
Re-Volt is a game by Acclaim (www.acclaim.com). This is no publication from Acclaim, so don't expect them to answer to questions.
If you have questions, corrections or additions, feel free to write an e-mail to ali. Updated versions of this document can be found here. If you are willing to correct my bad english, please do so.
Data structures are given in C++-stylish pseudo-syntax.
The above picture shows a visualization for the hull of Mouse. The faces aren't drawn, but it should be clear where there are. A small program to create such images by converting hulls to POV-Ray source is available here as hul2pov.cpp. (But be warned that it sometimes fails. Some cars, like Panga, contain degenerated edges and faces.)
struct HullFile { rvshort chull_count; ConvexHull chulls[chull_count]; Interior interior; };
On my installation Candy Pebbles has a zero-length hull.hul. Either I screwed something up, or that car is strange.
Maybe there may be more than one interior part: All cars except for Mouse have one. Mouse has three. WTF? More strange, the second and third interior are same, but different to the first.
struct ConvexHull { rvshort vertex_count; rvshort edge_count; rvshort face_count; rvfloat bbox_xlo, bbox_xhi; rvfloat bbox_ylo, bbox_yhi; rvfloat bbox_zlo, bbox_zhi; Vector unknown_vector; Vector vertices[vertex_count]; Edge edges[edge_count]; Face faces[face_count]; };
This is basically a simplicial complex, although I hardly see a reason why faces must consist of three vertices, arbitrary shaped polygons should be possible.
The purpose of unknown_vector is, well, unknown.
struct Edge { rvshort verts[2]; };
struct Face { Vector normal; rvfloat distance; };
This is just a plane (and the main reason why hull parts are convex)
struct Interior { rvshort sphere_count; Sphere spheres[sphere_count]; };
This seems to be the main thing used for collision detection. It is a set of spheres that fill the car's interior. (Ever knew you are driving a bunch of bubbles around?)
struct Sphere { Vector center; rvfloat radius; };