Skip to content

4.0.0 Release Notes

Alwarren edited this page Nov 15, 2023 · 1 revision

Arma Toolbox for Blender Release Notes

Version 4.0.0

What's new in this release

Many things. As a matter of fact, this release overhaults almost everything within the Toolbox. The following is a top-level view on what is new. I try to keep it short but still useful. Documentation is sorely missing, I know, but this is all I can do for the time being.

Join Object Functions

armatoolbox.join is a direct replacement for the default join operation and can be safely put on the default shortcut for Join selected object with active object. For non-Arma objects, it works exactly like the previous iteration of the built-in join command, however, for objects with the Arma flag set, this will join the objects into one but it will also

  • Renumber ComponentXX on all Geometry and similar objects to make sure that the numbering of components is consecutive.
  • Renumber @armaproxy.xxx to make sure that the proxy numbers fit with the object data. Note that it does not renumber the indices, so two Cargo proxies with index 1 on both will result in two Cargo proxies with both index 1.

New Export Dialog Options

  • Export: This is a combo box with options for the export. The default is All, meaning export everything that is contained in the file. Selected Only will only export the selected items. Finally, if your file defines Export Configs (see below), each of them will appear here and can be exported separately.

  • Apply Modifiers: If checked, all modifiers on objects will be applied during export. Note that the original object will be untouched, the process is non-destructive. For this purpose, it is for example a good practice to put a triangulate modifier on all of your objects.

  • Merge Same LODs: Up to now, having e.g. to View Cargo LODS in a file would result in two View Cargo lods in the resulting P3D file, which isn't very useful. If this box is checked, all LODs of the same level (.e.g all Memory, all Geometry, all Custom 1.0, Custom 2.0 etc) will be merged into a single Memory, Geometry, Custom 1.0, Custom 2.0 etc. in the resulting P3D file. There isn't really a good reason to disable this.

  • Re-number Components: When Geometry, PhysX and other similar LODS are merged, if this box is checked, then Components will be renumbered to fit. That means that two Geometry objects with a Component01 each will result in a p3d that has Component01 and Component02. The same is true for merging objects with Proxies... However, the index of proxies is not modified, so this must be taken into account

  • Apply all transforms: Ever ended up with a 10 foot rifle? You probably forgot to apply transforms. Checking this box will do that for you on export.

Again, it has to be mentioned that all of these options are non-destructive, the original objects in your file will stay unaffected.

Batch Export

Batch Export is a new function that only works with Export Configs. As with normal export, you will find it in the export file menu.

The batch export dialog only lets you chose a folder, not a file to export to (that is part of the config, see below). You will be presented with a list of all configs defined, and you can check or uncheck them as required. Only checked configs will be exported.

The options have the same meaning as the ones in the normal export dialog.

Export Configs

Export configs is a new concept that allows you to generate more than one p3d file from a single blend file.

imagine you have a weapon like an assault rifle, and you want to make different versions out of it, for example

  • A marksman rifle TAG_Rifle_Mark.p3d
  • A default config TAG_Rifle_Default.p3d
  • A short carbine TAG_Rifle_Carbine.p3d

Normally, you would have to have three .blend files, with one of them in each, and if there is a problem with, let's say, the selector lever, you will have to make the required changes in all three files, even though it would be much easier if you only had to do it once.

This is what export configs are used for. Export configs are defined on the Scene tab, in the Arma 3 Export Configs panel.

Each export config consists of a name (free form, no syntax is enforced) and a .p3d file name. The file name should be a plain file name, with no folder, and should contain the .p3d suffix.

In the above example, we would need 3 Export Configs:

  1. Marksman -> TAG_Rifle_Mark.p3d
  2. Default -> TAG_Rifle_Default.p3d
  3. Carbine -> TAG_Rifle_Carbine.p3d

On the Arma 3 tab you will now find, if Arma 3 Object is enabled, a new panel "Export Config" that says "included in config", a checkbox "Include in every config", and a list of the three configs we defined earlier (all unchecked).

Now, for this example, let's assume your weapon has three parts:

  1. The receiver with pistol grip, magazine well and buttstock
  2. The barrel
  3. The handguard.

Furhtermore, let's assume that you have three different barrels, but the markman and default config will use the same handguard, and you only have a shorter one for the carbine.

Let's assume your parts are named

  • Receiver
  • Barrel_20inch
  • Barrel_14inch
  • Barrel_10inch
  • Handguard_Normal
  • Handguard_Short

This means that your carbine version will be composed of the Receiver, the Barrel_10inch and the Handguard_Short. The Marksman rifle will use the receiver, Barrel_20inch and the Handguard_normal. Finally, the default config will use the Receiver, Barrel_14inch and the Handguard_normal.

As we see above, the receiver is part of all configs, so we can check the "include in all configs" box. We could also check all the configs, but that is a matter of taste.

The Barrels are only used in one config each, so we check the Marksman config in Barrel_20inch, the Default config in Barrel_14inch and the Carbine config in Barrel_10inch.

The Handguard_Normal will be used in two configs, so we check the Marksman and Default config.

Finally, the Handguard_Short will only be used in the Carbine config, so we check that accordingly.

You can now go to the Batch export to export all or any number of configs as once, or use the normal export and chose the approriate config in the Export combo box. Either way works, Batch Export is obviously preferrable when you have a lot of exports at once.

Obviously, the same works for other LOD types. You can have e.g. fire geometry, geometry, memory, shadow lods, all exported the same way. For simplicity we have left them out in this example.

Export Configs are a powerful tool to free yourself of repetitive task and allow you to have a more organized, centralized workflow.

Below the Export Configs panel in the Scene tab you will also find a batch operations panel that allows you to modify export configs based on rules.

Mesh Collectors (WIP Feature)

Mesh collectors are another new feature that is meant to simplyfy your work. At its core, a mesh collector is an object that "borrows" the mesh data from other objects and integrates them into its own.

Let me give an example. You are making a car. The car has a specific interior, but parts of the exterior model need to appear in the cargo view as well, for example, the hood, roof, and basically everything that is visible from the inside.

So far, you would make copies of the outside LOD and then delete/modify them to accomodate the interior. That works, but is not optimal. For example, if you e.g. adjust the proxy for the gunner position on the Custom 1.0 LOD, you will want to adjust that in the same way on the inside. Or, you have found out that you had forgotten to include certain geometry in a selection, so you have to do the same steps in the copy.

Mesh collectors can ease this task. What it basically does is, you point it to a number of other Arma objects, and it will collect these meshes on export and use them for itself. The mesh collector can have a different LOD setting than the collected meshes - for example, you can collect meshes from the Custom 1.0 view and use them on a mesh collector that has View Cargo 0.0 itself.

Any object can be a mesh collector by enabling its Mesh Collector checkbox. The list of objects can be manipulated with the buttons/menu. The 'Add' button will add all selected to the active object's list. Just select all the objects you want to add and then shift-click on the receiver, and press the Plus sign.

The popup menu has more functions, among others it can add objects by config. What gets added depends on your selection. If only the mesh collector is selected, then it goes through all of the objects in the file, otherwise, it will only consider the selected ones. There are currently three "levels" of matching configs:

  1. Exact match will match all objects (selected or file-wide) that have exactly the same configs and no other.
  2. One common config will add all objects (selected or file-wide) that have at least one config in common.
  3. At least all common configs works like exact match, but it will also include objects that have configs that the collector does not have, i.e. it will be a requirement for the object to have at least the same configs as the collector, but it can have more (but not less)

Note that on export, the mesh collector is handled like any other object with the exception of "collecting" the meshes. It will also collect vertex groups, named selections, material assignments, proxies and every other item from the borrowed meshes. Upon export, the mesh collector can also apply its own set of modifiers (beyond those that are already on the originals). That way it is e.g. possible to generate level-of-detal LODS (I am aware that level of detail and LOD are the same, but saying LOD LODs sounds weird) using a decimate modifier, for example.

In the future the concept will be extended. What I plan to add is a way to specify a number of vertex groups that will be deleted before exporting the mesh collector, in order to make LOD LODS (there I said it) easier to handle. You can have e.g. a "-Details" selection in your meshes that contain those details you don't want to carry over to other, lower resolution lods. Together with the decimate modifier, this allows for relatively efficient LOD generation.

Clone this wiki locally