Web hosting fees are now paid, but domain registration fees are due in start of October 2024, PMC web sites will go down without your help, please Support PMC so these web sites can stay online.

Without your support there will be web site down time, so please Support PMC, thank you.

You can find more detailed information about PMC web site domains issue from PMC Tactical Forum "PMC websites from shared hosting to Virtual Private Server" topic.

If you enjoyed this content please help with web site domain fees, head over to Support PMC page, much appreciated.

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)