User Tools

Site Tools


arma3:port-arma2-to-arma3-tutorial-varanon

Differences

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

Link to this comparison view

arma3:port-arma2-to-arma3-tutorial-varanon [2018/06/10 22:29] – created initial page. snakemanarma3:port-arma2-to-arma3-tutorial-varanon [2024/08/03 12:22] (current) – links added. snakeman
Line 1: Line 1:
 ====== Porting From ArmA 2 to ArmA 3 ====== ====== Porting From ArmA 2 to ArmA 3 ======
 +
 +[[https://www.pmctactical.org/forum/viewforum.php?f=68|ArmA 3 Forum]], [[:arma3|ArmA 3]], [[arma3:config|ArmA 3 Config]], [[arma3:missions|ArmA 3 Missions]], [[arma3:modeling|ArmA 3 3D Modeling]], [[arma3:scripting|ArmA 3 Scripting]], [[arma3:terrain|ArmA 3 Terrain]], [[arma3:texturing|ArmA 3 Texturing]], [[arma3:tools|ArmA 3 Tools]]
  
 **Porting Models from ArmA 2 to ArmA 3 Tutorial** by Varanon, Community Upgrade Project (CUP). **Porting Models from ArmA 2 to ArmA 3 Tutorial** by Varanon, Community Upgrade Project (CUP).
Line 6: Line 8:
 ====== Introduction ====== ====== Introduction ======
  
-CUP's goal is to take Arma 2 assets released by Bohemia Interactive, and bring them into Arma 3, adding specific Arma 3 features to the assets along the way.+CUP's goal is to take ArmA 2 assets released by Bohemia Interactive, and bring them into ArmA 3, adding specific ArmA 3 features to the assets along the way.
  
 For a lot of people, this seems to be a scary thought at first. Where to start ? What to do ? People feel lost. For a lot of people, this seems to be a scary thought at first. Where to start ? What to do ? People feel lost.
Line 15: Line 17:
 ====== About this Guide ====== ====== About this Guide ======
  
-This guide will walk you through all the steps required to get a model into Arma 3, including the associated config work and model modifications. To make this as practical as possible, we will take an existing Arma 2 asset, the armed Pickup used by the NAPA and ChDKZ.+This guide will walk you through all the steps required to get a model into ArmA 3, including the associated config work and model modifications. To make this as practical as possible, we will take an existing ArmA 2 asset, the armed Pickup used by the NAPA and ChDKZ.
  
  
 ====== What we need... ====== ====== What we need... ======
  
-First of all, make sure the Arma 3 Tools are installed. You can get them from Steam's Tools tab. Secondly, you will also need Mikero's tools. Additionally, if you (like me) don't want to work in ObjectBuilder, you should install Blender and Alwarren's Blender toolbox. See the appendix for links to all these tools. You might be able to do all of this in ObjectBuilder, or another 3d Modeler if you want to, but I use Blender because the Arma Toolbox offers some additional functionality which will come in handy later. The guide will assume you use Blender.+First of all, make sure the ArmA 3 Tools are installed. You can get them from Steam's Tools tab. Secondly, you will also need Mikero's tools. Additionally, if you (like me) don't want to work in ObjectBuilder, you should install Blender and Alwarren's Blender toolbox. See the appendix for links to all these tools. You might be able to do all of this in ObjectBuilder, or another 3d Modeler if you want to, but I use Blender because the Arma Toolbox offers some additional functionality which will come in handy later. The guide will assume you use Blender.
  
  
 ====== Gathering the files ====== ====== Gathering the files ======
  
-The first thing we always do when starting a new asset is classifying it and creating an appropriate directory. The Pickup (PK) from Arma 2 is a Datsun. To find out the exact model name, we search for Pickup_PK_Ins (the class name from Arma 2) and look for the line "//model=//". The string after this is the name of the model.+The first thing we always do when starting a new asset is classifying it and creating an appropriate directory. The Pickup (PK) from ArmA 2 is a Datsun. To find out the exact model name, we search for Pickup_PK_Ins (the class name from ArmA 2) and look for the line "//model=//". The string after this is the name of the model.
  
-**WARNING: Some models from Arma 2 have been updated in Arma 2: Operation Arrowhead. This means that there might be an overriding config entry in the expansion’s configs.**+**WARNING: Some models from ArmA 2 have been updated in ArmA 2: Operation Arrowhead. This means that there might be an overriding config entry in the expansion’s configs.**
  
 The Pickup (PK) is called Datsun_Armed, and it's model is located in //Wheeled_E\Datsun_Armed//. The Pickup (PK) is called Datsun_Armed, and it's model is located in //Wheeled_E\Datsun_Armed//.
Line 35: Line 37:
 First, we copy the model, //datsun_pk.p3d//, to the output folder. Rename it to //CUP_datsun_pk.p3d//. First, we copy the model, //datsun_pk.p3d//, to the output folder. Rename it to //CUP_datsun_pk.p3d//.
  
-**VERY IMPORTANT**: Renaming the model with a CUP_ prefix is an important step. Models are later on referenced by file name in the //model.cfg//. These might clash with existing models in Arma 3. For example, the SUV in Arma 3 is called //suv.p3d//, the same name as the SUV in Arma 2. Depending on whether the Arma 3 or the ported Arma 2 model is loaded first, skeletons might get mixed up and you will get strange animations on one or both of the similar named models.+**VERY IMPORTANT**: Renaming the model with a CUP_ prefix is an important step. Models are later on referenced by file name in the //model.cfg//. These might clash with existing models in ArmA 3. For example, the SUV in ArmA 3 is called //suv.p3d//, the same name as the SUV in ArmA 2. Depending on whether the ArmA 3 or the ported ArmA 2 model is loaded first, skeletons might get mixed up and you will get strange animations on one or both of the similar named models.
  
 Next, copy the Data folder. This usually contains the //.rvmat// files that are used to determine surface characteristics and textures of the model. Finally, copy the **'model.cfg'**. We first deal with the model and the textures, so we skip //config.cpp// for now. Next, copy the Data folder. This usually contains the //.rvmat// files that are used to determine surface characteristics and textures of the model. Finally, copy the **'model.cfg'**. We first deal with the model and the textures, so we skip //config.cpp// for now.
Line 42: Line 44:
 ====== Importing into Blender ====== ====== Importing into Blender ======
  
-Start up Blender and select "//File – Import - Arma 2/3 .p3d//", and select the //CUP_datsun_pk.p3d// file to import. It's a good idea to immediately safe the file under a different directory outside of the CUP tree (I keep all my //.blend// files in one directory).+Start up Blender and select "//File – Import - ArmA 2/3 .p3d//", and select the //CUP_datsun_pk.p3d// file to import. It's a good idea to immediately safe the file under a different directory outside of the CUP tree (I keep all my //.blend// files in one directory).
  
  
Line 49: Line 51:
 If you loaded the model into ObjectBuilder and subsequently Buldozer, you would notice that the model is white and no textures are shown. This is because the model references textures by their full path relative to the P:\ drive. If you loaded the model into ObjectBuilder and subsequently Buldozer, you would notice that the model is white and no textures are shown. This is because the model references textures by their full path relative to the P:\ drive.
  
-The //.p3d// file references textures and materials (//.rvmat// files). The latter are included in the official released data. The former are not. Luckily, the texture files can be extracted from the Arma 2 data files. If you set up a P:\ drive via mikero's tools for Arma 2, it will already have extracted them.+The //.p3d// file references textures and materials (//.rvmat// files). The latter are included in the official released data. The former are not. Luckily, the texture files can be extracted from the ArmA 2 data files. If you set up a P:\ drive via mikero's tools for ArmA 2, it will already have extracted them.
  
-Which textures we need is determined by two sources: The model will reference texture files and .rvmat files, and the .rvmat files in turn will reference texture files. Remember that the data folder we copied earlier already contained most of the specific .rvmats for the model. Some will be in general directories (like for example //ca\ca_e\data\car_flare2.tga//) and might or might not have Arma 3 equivalents. Refer to the CUP Wiki page ([https://dev.withsix.com/projects/cup/wiki/Common_Files_between_A3_and_CA here]) for more details.+Which textures we need is determined by two sources: The model will reference texture files and .rvmat files, and the .rvmat files in turn will reference texture files. Remember that the data folder we copied earlier already contained most of the specific .rvmats for the model. Some will be in general directories (like for example //ca\ca_e\data\car_flare2.tga//) and might or might not have ArmA 3 equivalents. Refer to the CUP Wiki page ([https://dev.withsix.com/projects/cup/wiki/Common_Files_between_A3_and_CA here]) for more details.
  
 We start with the model itself: In Blender, make sure the right side toolbar is open (press the 'T' key if not), and select the 'Arma' tab. In the Arma Tools rollout, you will see an item called "Path Rename". Click on what you want to rename, and then enter a new name in the lower of the two string gadgets, then click on "Path Rename" to rename it. Go through the list and rename everything. If you hit a model specific texture, it will tell you where to copy it from. Copy the texture from the //p:\ca// tree to the data directory. We start with the model itself: In Blender, make sure the right side toolbar is open (press the 'T' key if not), and select the 'Arma' tab. In the Arma Tools rollout, you will see an item called "Path Rename". Click on what you want to rename, and then enter a new name in the lower of the two string gadgets, then click on "Path Rename" to rename it. Go through the list and rename everything. If you hit a model specific texture, it will tell you where to copy it from. Copy the texture from the //p:\ca// tree to the data directory.
Line 61: Line 63:
 **Note:** ObjectBuilder has a similar functionality. Select Tools – Mass Texture & Material renaming. **Note:** ObjectBuilder has a similar functionality. Select Tools – Mass Texture & Material renaming.
  
-Next up, rvmat files. These are text files which in turn reference texture files again. Luckily, relocating them is relatively easy: Either use MoveObject, or use the appropriate function in the Arma 3 Toolbox within Blender. Since the Blender Toolbox uses an internal list of textures that are specific to CUP, we'll use that one. Select the output folder, then select the rvmats one by one and click on Relocate RVMat.+Next up, rvmat files. These are text files which in turn reference texture files again. Luckily, relocating them is relatively easy: Either use MoveObject, or use the appropriate function in the ArmA 3 Toolbox within Blender. Since the Blender Toolbox uses an internal list of textures that are specific to CUP, we'll use that one. Select the output folder, then select the rvmats one by one and click on Relocate RVMat.
  
 Once you're done with this, it's a good time to check if your model works correctly. Export from Blender as a //.p3d// and open the model in ObjectBuilder. Then, start buldozer. If you get any errors at this point complaining about missing textures or rvmat, go back and correct them. You either have a wrong path somewhere, or did not copy the texture/rvmat. Once you're done with this, it's a good time to check if your model works correctly. Export from Blender as a //.p3d// and open the model in ObjectBuilder. Then, start buldozer. If you get any errors at this point complaining about missing textures or rvmat, go back and correct them. You either have a wrong path somewhere, or did not copy the texture/rvmat.
Line 80: Line 82:
 Open the properties panel (press N if it's closed). Now, shift-select all Layers in Blender. The p3d importer puts each LOD on a different layer as a new object. Now, select the object named '1' in the outliner. On the properties panel, you will see a rollout called "Proxies". Some of them have a small "ghost" icon in front: Those are proxies for crew positions (drivers, pilots, gunners, cargo, etc). You can use any of the proxies present in //a3/data_f/proxies//, it doesn't matter which one you chose. The actual pose is determined later by the config.cpp. It will, however, look wrong in Buldozer, but you can safely ignore that. Open the properties panel (press N if it's closed). Now, shift-select all Layers in Blender. The p3d importer puts each LOD on a different layer as a new object. Now, select the object named '1' in the outliner. On the properties panel, you will see a rollout called "Proxies". Some of them have a small "ghost" icon in front: Those are proxies for crew positions (drivers, pilots, gunners, cargo, etc). You can use any of the proxies present in //a3/data_f/proxies//, it doesn't matter which one you chose. The actual pose is determined later by the config.cpp. It will, however, look wrong in Buldozer, but you can safely ignore that.
  
-The others need their paths adapted. Some of the common proxies, like muzzleflashes and Capture-The-Flag type flags have Arma 3 equivalents. Again, refer to the Wiki for an up-to-date list of those.+The others need their paths adapted. Some of the common proxies, like muzzleflashes and Capture-The-Flag type flags have ArmA 3 equivalents. Again, refer to the Wiki for an up-to-date list of those.
  
 To select a new model for a proxy, click on the small file select box next to the path name. Navigate to //P:\a3// or //P:\CUP// to find the correct proxy. Note that the same proxy might appear on more than one LOD including the special LODs like fire geometry etc. To make renaming those easier, copy the path from one proxy, and paste it into the appropriate other proxy paths. Don't mind the p:\ prefix or //.p3d// suffix, it gets stripped outomatically later. To select a new model for a proxy, click on the small file select box next to the path name. Navigate to //P:\a3// or //P:\CUP// to find the correct proxy. Note that the same proxy might appear on more than one LOD including the special LODs like fire geometry etc. To make renaming those easier, copy the path from one proxy, and paste it into the appropriate other proxy paths. Don't mind the p:\ prefix or //.p3d// suffix, it gets stripped outomatically later.
Line 93: Line 95:
 If you preview this in Buldozer, you can see the animations and confirm that they are working. If you preview this in Buldozer, you can see the animations and confirm that they are working.
  
-Arma 2 models don't usually support all the animations present in Arma 3. Some might be missing, like, in our example, the dampers (the wheels can't contract to cope with terrain). Simply inherit those from the base class (check out //wheel_1_1_damper// in the sample data).+ArmA 2 models don't usually support all the animations present in ArmA 3. Some might be missing, like, in our example, the dampers (the wheels can't contract to cope with terrain). Simply inherit those from the base class (check out //wheel_1_1_damper// in the sample data).
  
 We will revisit model.cfg in a later section again. We will revisit model.cfg in a later section again.
Line 151: Line 153:
 For the Datsun, the //config.cpp// is in //ca\wheeled\Datsun_Armed\config.cpp//, but an overriding base class is defined in //ca\wheeled_e\Datsun_Armed\config.cpp//. This redefines some of the damage textures. For the Datsun, the //config.cpp// is in //ca\wheeled\Datsun_Armed\config.cpp//, but an overriding base class is defined in //ca\wheeled_e\Datsun_Armed\config.cpp//. This redefines some of the damage textures.
  
-Going over each config item is way beyond the scope of this document, so I will present the finished //cfgVehicles.h// in the sample data files as //cfgVehicles.h-orig// (this will contain the parts "salvaged" from the Arma 2 config. Along the way, we also created a //sounds.h// which contains just the sound definitions. The easy way for this is to take the one from the sample car and later on rework it. We'll go over this work later.+Going over each config item is way beyond the scope of this document, so I will present the finished //cfgVehicles.h// in the sample data files as //cfgVehicles.h-orig// (this will contain the parts "salvaged" from the ArmA 2 config. Along the way, we also created a //sounds.h// which contains just the sound definitions. The easy way for this is to take the one from the sample car and later on rework it. We'll go over this work later.
  
  
Line 158: Line 160:
 We're now ready to try. Launch Mikero's pboProject (assuming you have it installed), and select as output folder your mod folder where CUP is going to reside (for me //c:\Arma 3 Addons\@CUP-Work//), select the source folder (//p:\CUP\WheeledVehicles\CUP_WheeledVehicles_Datsun//), make sure "Full Build" is ticked, and crunch... We're now ready to try. Launch Mikero's pboProject (assuming you have it installed), and select as output folder your mod folder where CUP is going to reside (for me //c:\Arma 3 Addons\@CUP-Work//), select the source folder (//p:\CUP\WheeledVehicles\CUP_WheeledVehicles_Datsun//), make sure "Full Build" is ticked, and crunch...
  
-If there are any errors, correct them (pboProject should tell you of the nature of the error). Then load up Arma 3 with the //@CUP-Work// mod added, open the editor, and try to place the Datsun.+If there are any errors, correct them (pboProject should tell you of the nature of the error). Then load up ArmA 3 with the //@CUP-Work// mod added, open the editor, and try to place the Datsun.
  
 Of course, you will notice that the thing handles like it's made from rubber, but we're going to fix that soon. Also, the crew animations are wrong. This is our next step. Of course, you will notice that the thing handles like it's made from rubber, but we're going to fix that soon. Also, the crew animations are wrong. This is our next step.
Line 182: Line 184:
 You will also notice that there are multiple instances of references to animations from other vehicles, like the MH6 bench sitting pose, or the HMMWV gunner dead pose, or the Stryker dead pose... unfortunately, we need those as well, so we copy them over. The files are relatively small, so usually it's not a big concern if they aren't shared with their respective original vehicles. You will also notice that there are multiple instances of references to animations from other vehicles, like the MH6 bench sitting pose, or the HMMWV gunner dead pose, or the Stryker dead pose... unfortunately, we need those as well, so we copy them over. The files are relatively small, so usually it's not a big concern if they aren't shared with their respective original vehicles.
  
-The MH6 animations will be found in the air directory of your Arma 2 data release, or, if you checked out the git repository, in //cup-airvehicles/ca/air/data/anim//.+The MH6 animations will be found in the air directory of your ArmA 2 data release, or, if you checked out the git repository, in //cup-airvehicles/ca/air/data/anim//.
  
 After you copied over the files, we need to create //CfgMoves.h// (remember to uncomment it from/add it to the //config.cpp// file). The final result can be found in the sample data released with this guide. After you copied over the files, we need to create //CfgMoves.h// (remember to uncomment it from/add it to the //config.cpp// file). The final result can be found in the sample data released with this guide.
Line 195: Line 197:
 ====== Turrets: Adding the gunner ====== ====== Turrets: Adding the gunner ======
  
-So we got the passengers working now, but we still need to deal with the gunner position. This is handled by //class Turret//. For a discussion of //class Turret//, see the biki. We'll only discuss the parts that are in need of adaption for Arma 3.+So we got the passengers working now, but we still need to deal with the gunner position. This is handled by //class Turret//. For a discussion of //class Turret//, see the biki. We'll only discuss the parts that are in need of adaption for ArmA 3.
  
-Copy the original turret description into the //CfgVehicles.h//, into the (up to now) empty //CUP_Datsun_PK_Base class//. Several things need changing. The optics model needs to be either copied over (if the optics are specific to the vehicle), or a default Arma 3 optics is used. In this case, the optics is the empty model, so we replace it with the Arma 3 empty model at //\a3\weapons_f\Reticle\optics_empty//. The gunner actions need to be renamed to our own actions, //CUP_Datsun_Gunner01//. Finally, we need to adapt the weapon. This might be very complex, or simple. Most of the time, chances are the weapon already exists in the CUP dataset, in which case it's simply replaced with the CUP weapon equivalent (plus the ammo, of course). In other instances, you might need to create the weapon first. The latter case is covered elsewhere, and luckily, we already have a vehicle PKT. Also, for correct animation, we also need to copy over the AnimSources from the original config file.+Copy the original turret description into the //CfgVehicles.h//, into the (up to now) empty //CUP_Datsun_PK_Base class//. Several things need changing. The optics model needs to be either copied over (if the optics are specific to the vehicle), or a default ArmA 3 optics is used. In this case, the optics is the empty model, so we replace it with the ArmA 3 empty model at //\a3\weapons_f\Reticle\optics_empty//. The gunner actions need to be renamed to our own actions, //CUP_Datsun_Gunner01//. Finally, we need to adapt the weapon. This might be very complex, or simple. Most of the time, chances are the weapon already exists in the CUP dataset, in which case it's simply replaced with the CUP weapon equivalent (plus the ammo, of course). In other instances, you might need to create the weapon first. The latter case is covered elsewhere, and luckily, we already have a vehicle PKT. Also, for correct animation, we also need to copy over the AnimSources from the original config file.
  
 We also need to make sure that the gunner can look down the sights of the gun. This is achieved with the config entry //memoryPointGunnerOptics//. In our case, it's "eye", so add //memoryPointGunnerOptics = "eye";// to the turrent's class entry. In some cases, aslo gunBeg and gunEnd must be set to the gun's begin and end memory points (to tell the engine, where the fire from this gun is coming from). We also need to make sure that the gunner can look down the sights of the gun. This is achieved with the config entry //memoryPointGunnerOptics//. In our case, it's "eye", so add //memoryPointGunnerOptics = "eye";// to the turrent's class entry. In some cases, aslo gunBeg and gunEnd must be set to the gun's begin and end memory points (to tell the engine, where the fire from this gun is coming from).
Line 217: Line 219:
 ====== Turret, take 2: Variable muzzle flash ====== ====== Turret, take 2: Variable muzzle flash ======
  
-We're now moving on to our very first Arma 3 specific feature: Currently, if you fire, the muzzle flash is static. We want it to be variable, like in Arma 3 vehicles.+We're now moving on to our very first ArmA 3 specific feature: Currently, if you fire, the muzzle flash is static. We want it to be variable, like in ArmA 3 vehicles.
  
 This requires a slight adaption in both //model.cfg// and //config.cpp// (resp. //CfgVehicles.h//). Let's deal with //model.cfg// first. This requires a slight adaption in both //model.cfg// and //config.cpp// (resp. //CfgVehicles.h//). Let's deal with //model.cfg// first.
Line 302: Line 304:
 ====== Making the model behave: Geometry LOD ====== ====== Making the model behave: Geometry LOD ======
  
-Arma 3 models have the weights of individual components set to zero, and artificial "weight" components added. Basically, you add four weights in the front, rear, left and right of the car to determine the weight and the center of mass.+ArmA 3 models have the weights of individual components set to zero, and artificial "weight" components added. Basically, you add four weights in the front, rear, left and right of the car to determine the weight and the center of mass.
  
 To prepare, remove the weight from all components except the wheels. Then, add cubes to the model and place each into their own selection (name them //ComponentXX//, with XX being continuous numbers). To prepare, remove the weight from all components except the wheels. Then, add cubes to the model and place each into their own selection (name them //ComponentXX//, with XX being continuous numbers).
Line 313: Line 315:
 In Blender, create a copy of the Geometry LOD and move it to a different layer for easier access. Set the LOD type to "Geometry PhysX". Then, remove the wheels. The wheels are later on replaced by the engine. In Blender, create a copy of the Geometry LOD and move it to a different layer for easier access. Set the LOD type to "Geometry PhysX". Then, remove the wheels. The wheels are later on replaced by the engine.
  
-To achieve this, you need to make sure the wheel's boundaries are marked by a memory point. Most Arma 2 vehicles will already have the wheel's axis defined, namely, there will be a selection called "//wheel_x_y_axis//", with x and y being 1 or t. For each of those, we also have to insert a single memory point selection called "//wheel_x_y_bound//", so we add four vertex groups in the Memory LOD, and call them //wheel_1_1_bound//, //wheel_1_2_bound//, //wheel_2_1_bound//, and //wheel_2_2_bound//.+To achieve this, you need to make sure the wheel's boundaries are marked by a memory point. Most ArmA 2 vehicles will already have the wheel's axis defined, namely, there will be a selection called "//wheel_x_y_axis//", with x and y being 1 or t. For each of those, we also have to insert a single memory point selection called "//wheel_x_y_bound//", so we add four vertex groups in the Memory LOD, and call them //wheel_1_1_bound//, //wheel_1_2_bound//, //wheel_2_1_bound//, and //wheel_2_2_bound//.
  
 Also, the axis for damper movements are possibly not in, so we need to add them. They are usually called "//posun wheel_x_y//" (posun is czech for "shift"). They consist of two memory points that are aligned along the axis of the damper (see the example model). Also, the axis for damper movements are possibly not in, so we need to add them. They are usually called "//posun wheel_x_y//" (posun is czech for "shift"). They consist of two memory points that are aligned along the axis of the damper (see the example model).
Line 328: Line 330:
 ===== Lights: Adding reflectors, light cones and more ===== ===== Lights: Adding reflectors, light cones and more =====
  
-Arma 2 vehicles have rather simplistics lights: Most of the time, it's a polygon or a few polygons in front of the actual lights containing a flare texture that is made visible when the lights are turned on. In Arma 3, this has been replaced by several additional features:+ArmA 2 vehicles have rather simplistics lights: Most of the time, it's a polygon or a few polygons in front of the actual lights containing a flare texture that is made visible when the lights are turned on. In ArmA 3, this has been replaced by several additional features:
  
   * Automatically placed lens flares   * Automatically placed lens flares
Line 381: Line 383:
 For tail and brake lights, a special red emmissive material is used, either with a red color texture, or you can even use the body texture of the car if you can re-use polygons from the car model itself. Note that this will require some minor modeling experience. For tail and brake lights, a special red emmissive material is used, either with a red color texture, or you can even use the body texture of the car if you can re-use polygons from the car model itself. Note that this will require some minor modeling experience.
  
-What you basically do is to use polygons shaped like the actual light source but offset a tiny bit in front of the actual light, and give it a special material. In fact, this is similar to what the original Arma 2 models did.+What you basically do is to use polygons shaped like the actual light source but offset a tiny bit in front of the actual light, and give it a special material. In fact, this is similar to what the original ArmA 2 models did.
  
 We'll walk through one example of "re-using" and one example of creating a new light. We'll walk through one example of "re-using" and one example of creating a new light.
Line 439: Line 441:
 </code> </code>
  
-The problem in our case is that the animation looks rather awkward due to the position of the hands. A better solution in this case would be to replace the driver animation with a default driver anim from Arma 3.+The problem in our case is that the animation looks rather awkward due to the position of the hands. A better solution in this case would be to replace the driver animation with a default driver anim from ArmA 3.
  
 This, however, requires some adaption. Mostly because the driver proxy is not in the correct position. You will need to move it so it fits. You might want to try different versions (//driver_low01//, //driver_mid01//, //driver_high01//), and if none of them works, adjust the proxy. **Tip:** if you want to try different actions quickly, load Object Builder, select the Cargo view, then click on the driver's proxy and click "Rename"... you can pop up a file requester from there and try the different versions found in //P:\a3\data_f\proxies//, quickly checking the fit in Buldozer. This, however, requires some adaption. Mostly because the driver proxy is not in the correct position. You will need to move it so it fits. You might want to try different versions (//driver_low01//, //driver_mid01//, //driver_high01//), and if none of them works, adjust the proxy. **Tip:** if you want to try different actions quickly, load Object Builder, select the Cargo view, then click on the driver's proxy and click "Rename"... you can pop up a file requester from there and try the different versions found in //P:\a3\data_f\proxies//, quickly checking the fit in Buldozer.
Line 448: Line 450:
 ===== Some special effects: Exhaust effects ===== ===== Some special effects: Exhaust effects =====
  
-Every car has one or more exhaust pipes, which spew out black, toxic vapor when the car is burning fuel. In Arma 3, the effect is handled by class Exhausts in //config.cpp//:+Every car has one or more exhaust pipes, which spew out black, toxic vapor when the car is burning fuel. In ArmA 3, the effect is handled by class Exhausts in //config.cpp//:
  
 <code cpp> <code cpp>
Line 520: Line 522:
 ===== Reflections and more: Picture-in-Picture ===== ===== Reflections and more: Picture-in-Picture =====
  
-Mirrors are an exiting new feature for Arma 3, and require some modeling work to set up the appropriate mirror surfaces. Don't be alarmed, though, all you need to do is duplicate polygons, much like you already did for the lights.+Mirrors are an exiting new feature for ArmA 3, and require some modeling work to set up the appropriate mirror surfaces. Don't be alarmed, though, all you need to do is duplicate polygons, much like you already did for the lights.
  
-For performance reasons, Arma 3's mirrors are only visible from within the vehicle, not from third person view. For that reason, the mentioned modifications will only be carried out on inside views. These might include View – Cargo, View – Pilot, or View – Gunner. Note that for this specific case (our Datsun) we are only doing rear view mirrors. Other vehicles might require different kinds of PIP views. For example, the BTR-90 has several internal periscopes that are PIP surfaces, allowing the turned-in driver and commander to see the outside world.+For performance reasons, ArmA 3's mirrors are only visible from within the vehicle, not from third person view. For that reason, the mentioned modifications will only be carried out on inside views. These might include View – Cargo, View – Pilot, or View – Gunner. Note that for this specific case (our Datsun) we are only doing rear view mirrors. Other vehicles might require different kinds of PIP views. For example, the BTR-90 has several internal periscopes that are PIP surfaces, allowing the turned-in driver and commander to see the outside world.
  
 So in the Datsun case, we have three mirrors, one inside, and two outside. They will only be visible in View – Cargo. First of all, we need to "cut out" the polygons that make up the actual reflecting surface. Select the appropriate polygons, and press CTRL+D to duplicate, click right immediately and use the handles to pull out the surface a tiny bit. So in the Datsun case, we have three mirrors, one inside, and two outside. They will only be visible in View – Cargo. First of all, we need to "cut out" the polygons that make up the actual reflecting surface. Select the appropriate polygons, and press CTRL+D to duplicate, click right immediately and use the handles to pull out the surface a tiny bit.
Line 543: Line 545:
 ===== Doing some damage: Hit points ===== ===== Doing some damage: Hit points =====
  
-In essence, hit points work in the same way as they did in Arma 2. However, Arma 3 tends to put them closer together to form a tighter mesh.+In essence, hit points work in the same way as they did in ArmA 2. However, ArmA 3 tends to put them closer together to form a tighter mesh.
  
 Additionally, some internal structures like the engine and fuel tank have quite a number of hit points. Additionally, some internal structures like the engine and fuel tank have quite a number of hit points.
  
-A new feature in Arma 3 is the ability to set the radius for the hitpoints, allowing them to be packed tighter to gain more control over the form used.+A new feature in ArmA 3 is the ability to set the radius for the hitpoints, allowing them to be packed tighter to gain more control over the form used.
  
 The easiest way of creating the dense hitpoint mesh for the engine is to copy the hitpoints from the sample model. Otherwise, create a grid (say, 7 x 5 vertices), remove all the edges and faces, and duplicate it some 5 times at even intervals. Add them to the selection "engine" and place them under the hood of the car. Likewise, create a reasonably size chunk of points for the "fueltank". See the sample model for clarification. The easiest way of creating the dense hitpoint mesh for the engine is to copy the hitpoints from the sample model. Otherwise, create a grid (say, 7 x 5 vertices), remove all the edges and faces, and duplicate it some 5 times at even intervals. Add them to the selection "engine" and place them under the hood of the car. Likewise, create a reasonably size chunk of points for the "fueltank". See the sample model for clarification.
 +
arma3/port-arma2-to-arma3-tutorial-varanon.1528669779.txt.gz · Last modified: 2018/06/10 22:29 by snakeman

Except where otherwise noted, content on this wiki is licensed under the following license: CC Attribution-Share Alike 4.0 International
CC Attribution-Share Alike 4.0 International Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki

All PMC web site download services are temporarily suspended until web site yearly fees have been recovered, want to download addons/mods? Then Support PMC.

If you are grateful for all the work PMC has done in the past 25 years, use Support PMC page.