This is an old revision of the document!
Table of Contents
Port OFP addon to ArmA
Overview
To port your OFP addon into ArmA, the p3d model must be in OFP MLOD format for ArmA to read it (by OFP we mean that it wouldn't be much of porting, if it would be already in ArmA MLOD format, now would it heh). All textures must be present, so you need to be careful to collect all those Data\ and O\ textures from CWC and Resistance addon dirs. Configs are the one part that needs “complete” overhaul.
If you just want to get your model ingame, you can use the OFP texturing, but if you want to really optimize it for ArmA then you need to merge the textures to one or perhaps two big texture files and to create normal and specular maps for the model.
Also you could roughly say that porting all p3d models is the same, the backbone of the operation is same, of course configs and individual model selections and such differ, but so far I would summarize my basic porting operation to these important steps:
1) Get the model to MLOD format.
2) In O2PE start by renaming the Res LODs to 1,2,3,4 etc as many as there are.
3) Change proxy names as they most likely are not compatible with ArmA. You can use for example “driver”, “gunner” and “commander”.
Thats the basic backbone which helps to bring your model closer to ArmA compatibility. These three steps are just the beginning of the porting, but in most cases with those edits to the p3d model you should get it ingame with properly made/ported config file (of course with pretty much all features disabled like turrets and animations etc).
Aircraft
This is aircraft port details like cessna and jet aircrafts.
Building
This is building port details like basic houses, gates, piers, bunkers and so on.
1) Use ODOL Explorer to convert the model into MLOD and open it up in O2.
2) Use Structure → Check Textures feature to see what are your missing textures (make sure the ported objects textures are NOT in o2 path). This dialog will show the path (pbo) name and texture name, its already nicely selected so you can just use copy-paste to bring it to text file if you so choose. Organize the textures so they are in proper directory (pbo) path and filename for you to use when the porting is complete and ArmA pbo created.
3) Rename the resolution LODs to 1,2,3 and 4 etc.
4) Use the Tools → Mass Texture & Material Renaming tool to change the paths. This will change the paths to all LODs, so you dont have to worry about individual LODs anymore as in OFP times.
5) Check that there is no bad texturing, ie textures in geometry/memory etc LODs.
6) Add geometry class=building and map=building named properties entrys. You can also use house, but it then requires config.cpp for the model (I think).
7) Add LodNoShadow=1 into all resolution LODs (later you use ShadowVolumes).
8) Do Points → Merge near… and use value 0.0001, for all LODs (just in case, should be no problem with ODOL Explorer converted models).
9) Do Recalculate Normals (F5) for all LODs.
10) Check that all LODs have same Surface (SHIFT-E) setting, this includes geometrys etc.
Thats the basic o2 operation for the models. Then there is of course the config, if there is one for the building in question, but at this point you should be able to place these ported p3ds into WRP file already.
One last tip, go through all your new objects how many are you going to port, systematically. Dont forget any of them, saves you so much time when trying them ingame the first time.
Car
This is car port details like skoda, jeep or truck.
Helicopter
This is helicopter port details like uh60, huey or hind. Here is quick dirty overview.
Completly New cfgBones and cfgModels section.
cfgBones:
class VTE_HueyBones: Helicopter { isDiscrete=1; skeletonInherit=""; skeletonBones[]= { "vrtule staticka","", "vrtule blur","", "vrtule","" }; };
cfgModels:
class VTE_uh101: Helicopter { skeletonName = "VTE_HueyBones"; sectionsInherit=""; sections[]= { "clan","clan_sign","vte_noseart","velka vrtule staticka","velka vrtule blur", "velka vrtule","mala vrtule staticka","mala vrtule blur","mala vrtule","zasleh" }; class Animations { class HRotor { type = "rotation"; source = "rotorH"; selection = "velka vrtule"; axis = "velka osa"; angle0 = 0; angle1 = -2 * 3.1415; }; class VRotor { type = "rotation"; source = "rotorV"; selection = "mala vrtule"; axis = "mala osa"; angle0 = 0; angle1 = 2 * 3.1415; }; }; };
Added in the cfgVehicles:
mainRotorSpeed = -1; rotorBig = vrtule_velka; rotorBigBlend = vrtule_velka_bl_; rotorSmall = vrtule_mala; rotorSmallBlend = vrtule_mala_bl;
Need to change the way vehicles are defined.
1) Rename all LODs to 1, 2, 3, 4 etc.
2) Edit the config to reflect the new cfgBones and cfgModels entries.
3) Add correct proxys from ArmA to all LODs, dont forget fire-geometry.
In all LODs choose zasleh selection, in Face Properties (E) put User Value to 0 and untick Enable Shadow completely. Then in Properties (SHIFT-E) set Lighting (Obsolete) setting to Normal. Its funny that it says obsolete, but if you leave it to for example Shining, then your muzzle flash is blackened out heh.
Tank
This is tank port details like M113, M1A1 or T80.
Soldier
Soldier porting is not possible at the moment, all what we have been reading on forums and in private messages is that too much have been changed and any MLOD models by default arent working because they need brand new animations. Also all soldier models from OFP are just way way too low poly and low detail in other ways that we just need skip them.
Vegetation
This is vegetation port details like trees, bushes, grass, rocks etc.
Porting vegetation objects is quite easy. Here are the steps PMC used when porting over VTE objects.
1) Open model in O2, renumber the LODs to 1, 2, 3, 4, 5 etc.
2) In Geometry change the class to treeSoft, treeHard, bushSoft or bushHard if your object is one of those.
3) If you have forest objects, in Geometry add placement to slope property name.
x) Create shadowVolume LOD (which PMC cannot do at the moment, *crying*. Check out shadow tutorial).
If you do not use geometry class=treeSoft (or bushsoft etc) then your vegetation will not “sway” in the wind.
Also many of our roads had missing geometry value of map=road in them, so they did not display at ingame map view.
Weapon
This is weapon port details like hand guns, rifles and rocket launchers.
Config
Propably the most difficult task is to port the config, while many of the config entries are the same, there is differences enough to cause confusion and many errors if you just try to drop in OFP config into ArmA addon.
WRP Terrain
To port WRP terrains (or islands as they were called back in the OFP times) is somewhat easy. You should read our WRP tutorial first. Main thing is to use this pages information for vegetation and building objects, if those are in order, then the WRP porting itself should run pretty smoothly.