---------------------------------------------------------------------------- | Wing Commander Prophecy / Secret Ops - 3D File Format | | by Mario "HCl" Brito | ---------------------------------------------------------------------------- I finally found the time to write this down... it's not an extense file at all, i just get lazy when gathering my old notes. The info on the Prophecy file format may be useful, should people want to convert other formats directly to WCP format, or even make a model editor. Note that this info file only describes how the model info are stored. Other info will be needed for stats editing. The way capship collisions are defined is not known yet (help would be appreciated on this). - VERT - Not much to say about this: it holds all the vertexes used by the model (although other objects can be added, like the Vampire engines). Each vert has 3 floats: float x; float y; float z; - VTNM - Not much to say about this: it holds all the normal vectors used by the model. NOTE: These are all unit vectors. Each vector has 3 floats: float x; float y; float z; - FVRT - The FVRT segment, along with the FACE segment, is used to define polygons. Each FVRT holds polygon info: long vert; (vertex reference from VERT) long light_normal; (vertex reference from VTNM) float x_texture; (must be between 0 and 1) float y_texture; (must be between 0 and 1) NOTE: Repeat the above structure according to the number of sides the polygon has (a hexagon would need 6 structures like this one) - FACE - The FACE segment, along with the FVRT segment, is used to define polygons. Each FACE is a polygon, and has 28 bytes: long normal_vector; (VTNM reference) long/float unknown1; (i have no idea) long MAT_file; (it goes fetch the texture here) long fvrt_ref; (reference to the appropriate FVRT segment) long sides; (number of sides of the poly: Vega Strike models use up to 6, although they may slow down WCP a bit) long unknown2; (no idea) long end; (it's always 0x7f0096ff) NOTE: I always set the unknown values to 0 in my model converters. Also, fvrt_ref always starts at 0, and the way it's handled, can be expressed as: fvrt_ref[k+1]=fvrt_ref[k]+sides[k]; CREDITS: Thanks go out to Origin INC for creating such wonderful games. ------------------------------------------------------------------------------ Mario "HCl" Brito mop23404@mail.telepac.pt http://www.geocities.com/Area51/Vault/6483/WC.HTM