hull.hul breakdown

[Mouse's hull]

Introduction / Disclaimer

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 ( 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.)

Basic Types


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.

Convex Hull

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;

Alexander Kröller; Last modified: Fri Sep 8 16:41:25 CEST 2000