User Tools

Site Tools


ofp:file_formats:odol

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
ofp:file_formats:odol [2007/07/10 09:52] – external edit 127.0.0.1ofp:file_formats:odol [2024/07/31 12:44] (current) – links added. snakeman
Line 1: Line 1:
-====== ODOL ======+====== OFP ODOL ======
  
-OFP ODOL format is called v7 (while ArmA is called v40). This document discusses OFP ODOL.+[[https://www.pmctactical.org/forum/viewforum.php?f=43|OFP Forum]], [[:ofp|OFP Home]], [[ofp:file_formats|OFP File Formats]], [[ofp:tools|OFP Tools]], [[ofp:missions|OFP Missions]], [[ofp:modeling|OFP 3D Modeling]], [[ofp:terrain|OFP Terrain]] 
 + 
 +**Operation Flashpoint (OFP)** aka ArmA: Cold War Assault (CWA) 
 + 
 +OFP ODOL file format is called v7 (while ArmA is called v40). This document discusses OFP ODOL.
  
 **Overall** **Overall**
Line 22: Line 26:
     uint VerticesCount;     uint VerticesCount;
     uint VerticesAttribs[VerticesCount]; // if > 255 then array is compresed     uint VerticesAttribs[VerticesCount]; // if > 255 then array is compresed
- +
     uint VerticesCount; // again same value     uint VerticesCount; // again same value
-    struct UVset[VerticesCount]; // if > 127 then array is compresed  +    struct UVset[VerticesCount]; // if > 127 then array is compresed 
- +
     uint VerticesCount; // again same value     uint VerticesCount; // again same value
     struct VerticesPosition[VerticesCount];     struct VerticesPosition[VerticesCount];
- +
     uint VerticesCount; // again same value     uint VerticesCount; // again same value
     struct VerticesNormal[VerticesCount];     struct VerticesNormal[VerticesCount];
- +
     float fvalue[12];  // unknown values // containts some max/min vertices positions and so far     float fvalue[12];  // unknown values // containts some max/min vertices positions and so far
- +
     uint TexturesCount;     uint TexturesCount;
     char Textures[...]; // zero ended 'C' strings 'd','a','t','a','\','1','.','p','a','a','\0','d','a','t','a','\','2','.','p','a','a','\0'...     char Textures[...]; // zero ended 'C' strings 'd','a','t','a','\','1','.','p','a','a','\0','d','a','t','a','\','2','.','p','a','a','\0'...
     //read until count of founded char('\0') equil TexturesCount;     //read until count of founded char('\0') equil TexturesCount;
- +
     uint Table1stCount;     uint Table1stCount;
-    word Table1st[Table1stCount];// if > 511 array compresed   +    word Table1st[Table1stCount];// if > 511 array compresed
     uint Table2ndCount; // Table2ndCount is same value like VerticesCount     uint Table2ndCount; // Table2ndCount is same value like VerticesCount
     word Table2nd[Table2ndCount];// > 511 then array is compresed     word Table2nd[Table2ndCount];// > 511 then array is compresed
Line 45: Line 49:
     //every vertex is owned only by 1 face     //every vertex is owned only by 1 face
     //mlodvertexindex = Table1st[ Table2nd[ odolvertexindex ] ];     //mlodvertexindex = Table1st[ Table2nd[ odolvertexindex ] ];
- +
     uint FacesCount;     uint FacesCount;
     uint uvalue;  // unknown value     uint uvalue;  // unknown value
     struct Face[FacesCount];     struct Face[FacesCount];
- +
     uint uvalue2; // unknown value     uint uvalue2; // unknown value
     char uchar[18*uvalue2]; // unknown value     char uchar[18*uvalue2]; // unknown value
-  + 
-    uint NamedSelectionCount +    uint NamedSelectionCount
     struct NamedSelection[NamedSelectionCount]     struct NamedSelection[NamedSelectionCount]
- +
     uint NamedPropetiesCount;     uint NamedPropetiesCount;
     struct NamedPropeties[NamedPropetiesCount]     struct NamedPropeties[NamedPropetiesCount]
- +
     uint uvalue7;// unknown value ???     uint uvalue7;// unknown value ???
     struct ustruct[uvalue7]; // unknown value     struct ustruct[uvalue7]; // unknown value
- +
     uint ProxiCount;     uint ProxiCount;
     struct Proxi[ProxiCount];     struct Proxi[ProxiCount];
Line 76: Line 80:
  
 <code> <code>
-  struct Face+struct Face
     {     {
       uint Attribs;       uint Attribs;
Line 91: Line 95:
     {     {
       char name[...]; // zero ended string       char name[...]; // zero ended string
- +
       uint VerticesSelectedCount;       uint VerticesSelectedCount;
       word VerticesSelected[VerticesSelectedCount];// if VerticesSelectedCount > 511 then array is compresed by LZ algorithm. see LZ in ODOL.       word VerticesSelected[VerticesSelectedCount];// if VerticesSelectedCount > 511 then array is compresed by LZ algorithm. see LZ in ODOL.
- +
       uint uvalue3; // unknown value       uint uvalue3; // unknown value
       word uarray[uvalue3];// unknown value       word uarray[uvalue3];// unknown value
- +
       uint uvalue4; // unknown value       uint uvalue4; // unknown value
       uint uarray[uvalue4];// unknown value // if VerticesSelectedCount > 255 then array is compresed by LZ algorithm. see LZ in ODOL.       uint uarray[uvalue4];// unknown value // if VerticesSelectedCount > 255 then array is compresed by LZ algorithm. see LZ in ODOL.
-  + 
-      char uchar; // unknown value  +      char uchar; // unknown value 
-  +
       uint uvalue5; // unknown value       uint uvalue5; // unknown value
       uint uarray[uvalue5];// unknown value       uint uarray[uvalue5];// unknown value
- +
       uint FacesSelectedCount;       uint FacesSelectedCount;
       word FacessSelected[FacesSelectedCount]// if FacesSelectedCount > 511 then array is compresed by LZ algorithm. see LZ in ODOL.       word FacessSelected[FacesSelectedCount]// if FacesSelectedCount > 511 then array is compresed by LZ algorithm. see LZ in ODOL.
- +
       uint uvalue6; // unknown value       uint uvalue6; // unknown value
       char uarray[uvalue6];// unknown value       char uarray[uvalue6];// unknown value
Line 147: Line 151:
     {     {
       char Name[...] // zero ended  string       char Name[...] // zero ended  string
-      struct ustruct {...};// size same as char[56]; // unknown value+      float rotationMatrix[9]; 
 +      float translation[3];
     };     };
 </code> </code>
Line 174: Line 179:
 ====== LZ in ODOL ====== ====== LZ in ODOL ======
  
-Lempel-Ziv compression +Lempel-Ziv compression
  
 Note1. Note1.
Line 292: Line 297:
 } }
 </code> </code>
 +
ofp/file_formats/odol.1184061152.txt.gz · Last modified: 2008/07/17 13:07 (external edit)