User Tools

Site Tools


arma:modeling

3D Modeling in ArmA

The Armed Assault 3D modeling.

Overview

Modeling in ArmA is not going to be an easy as in OFP, a lot have changed and you need to know more than before. In ArmA the rumor is that it can handle any poly count you create, even like 25,000 polys, but you don’t need to have that many polys as you can use normal maps to create the small details, so just do 2000 poly model with good normal maps.

All models should have 7 LODs, the last one being 100 polys. And all LODs need to be modeled down, not deleting part of the model (you can do that to some of the model) but its much cleaner if you were to properly modeled them down for much cleaner and better looking LOD. You don't want to see a box at 1500 view do you? I don't think so, that’s why taking the time to make proper LODs is the way to go.

ArmA now supports a wide verity of textures (normal map, ambient shadow, specular map) for all the eye candy, and can take a fair bit of time to understand what they mean, and how they work, what models needs what AND how to apply the materials.

Max texture size is an easy one, thanks to ATI its 2048×2048. Now does that mean you can texture every model you make at 2048×2048? Hell no! You'd kill us all, why? you have to think about all the materials you are applying, you have normal map, ambient shadow and specular all at the same res. on top of the shaders, having a texture size rule may come in handy, but at the end of the day its just more rules? As long as you think before you do, none of us will have to bitch about lag in mp.

One rules is that the amount of texture used per model, you can not have 70 or 80 textures for a tank model, ArmA has come a long way and mass importing of unoptimized addons would set us all back years.

Ebud said in BIS forum: The weapons are nice, but don't have proper LODs for ARMA. They're not actually modeled down and just go from a high poly model to a billboard rather than model down each lod by 50%, and billboards for far LODs shouldn't be used anymore.

Skaven said in BIS forum: All LODs modeled down, so it means the plain texture is over, I will wright a tutorial later explaining how I did it, basically I used p2m tool, LithUnwrap, 3D Studio Max and polygon cruncher in terms of polys/faces it's more or less as BIS's values in most I even used less, basically, I made a 50% decrease of poly/faces per LOD. All weapons now use one texture only, I used the merge textures feature in O2, it's actually very simple I may also wright a tutorial about it, although Jackal already wrote once some time ago.

About texture merge: I've been checking your textures carefully and I think probably just one 2048×2048 file will do for all the tank however, if you decide to do merge them you should do it in steps and not all at the same time since you have two problems, 1 there are away too many texture files and 2 they have many different sizes. If you decide to merge them I think you should merge them by groups (sizes) first and than in the end join all of them.

ArmA doesn't require the zbran and LODNoShadows property no more. You must also learn how to make normal maps and to map your models using 1/2 textures only or learn how to use the merge texture tool instead.

Once you normal map 1 or 2 models the rest is all the same you may increase or decrease the filter effect darken or lighter some spots but in reality it's really really easy, merging textures is also a piece of cake some code and a larger photoshop texture file is all you need in here.

Solus with XMS/Beretta example weapons release: The XMS has a simulation of a red dot sight and both have animated triggers, magazines, and bolt/slide. Both weapons have normal maps, specular maps, and detail maps and have shadow volume LODs.

Armored_Sheep (BIS dev) about pilot proxy: Triangle that is placed in the model and represents the position of animated character is always relative to specific animation. Animations (RTM file, animation state) are defined in config. RTM files can be made in Oxygen using simple “puppet” rigid model of character (no skinning). For ArmA we tried to use basic rule that the bottom point is where the character has main contact with floor or chair. With releasing Oxygene2 we plan to publish also example character and skeleton models.

Armored_Sheep (BIS dev) about suspension/animations: Suspension and also all other animations are defined in model.cfg. Because this file is processed with p3d during binarization, you cannot find it in PBO. Documentation about model.cfg is at model config.

Error: Warning: <addon>\<model>.p3d:1 Error while trying to generate ST for points: 888, 887, 886
Armored_Sheep (BIS dev): Engine calculates Tangent space for each face. It is needed for Normal maps shading. This warning message is logged for each face that has mapping (UV coordinates) and orientation of normals that cannot be used for this calculation. If you don’t use normal map on reported faces you don’t have to bother with those warnings.

Characters that are scope private (are not present in editor) don’t have full functionality as regular models.

[APS]Gnat in BIS forums: Tip for bombs and missiles, when you make bomb and missile 3d models, give the GEO lod some weight (in KGs) but do not do Structure → Topology → Find Components. ie defining “Component01”, “Component02” etc in O2.

The “Find Components” option in O2 typically makes it so other objects are able to impact the geometry LOD, and vice versa. The problem is this means when a 100kg object doing 900km/h hits another static object, ArmA has a habit of making the static object fly off, especially ships. It also avoids problems like dropping bombs from a plane and having them “bump” into the plane itself.

Armored_Sheep (BIS Dev): ArmA engine does autocentering. The center of object in game is than affected by all vertices and all lods the p3d has. For proxies, such as weapons we use property Autocenter to prevent this. But be aware that if you place your model (for example building or car) far away off the 0.0.0 point in O2 and disable autocentering, you can brake for example AI path finding.

Binarisation does the autocentering automatically for all objects except the ones with autocenter=0 property in geometry. Don't use autocenter=0, except for proxies or when you really have no other choice.

Armored_Sheep (BIS Dev): Strange convex can be that it has no volume, probably it is double sided plane.

Geometry

You can read still valid information about geometry from OFP: Modeling: Geometry LOD page.

Misc Stuff

In roads, bridges or for example Vietnam rice paddy trails, you need to add geometry LOD property name entry of class = road and map = road if you wish them to appear in-game map. Otherwise your terrain might look bit pale.

If you wish to use 50m x 50m forest/bush/canopy objects in ArmA, if you want to display them properly here is the scheme of map:
forest = nothing.
forest square = nothing.
forest border = nothing.
forest triangle = nothing.
bush = single small bush.
tree = diamond shape, but small, not same size as geometry model.

If your arma.rpt gives a lot of “<addon>\<model>.p3d: house, config class missing” errors, you can fix this by adding the class = building to your object, instead of house.

BIS MLOD Models

BIS Example MLOD models was released with the official tools, read our analysis of them here

Model Config

Never ever put cfgSkeleton and cfgModels into config.cpp, always use model.cfg file for them!

Check out more details here.

Model Conversions

Converting 3DS Max or OFP model to ArmA, you need to read here

Shadows

Shadows LOD tutorial here

Damage Model

Vehicle damage model information here

Adding Damage to your addon - Tutorial, Damage Textures and Animation by Gnat.

Vehicle wheels damage help located here.

Trigger Animation

Personal weapon trigger animation information can be found here

Machine gun belt animation

Tutorial for Machine gun belt animation by Skaven.

Static object animation

Selections

Selections information can be found here

Token Names

Token name value types can be found here

Turrets

Basic understanding how to create multiple gunners (turrets) in helicopters is here

Muzzle Flash

Muzzle flash information can be found here

Lights

Vehicle lights information can be found here

Proxy

Proxys on the BIS vehicles is listed here

Making Big Ships

We still have the 50m geometry limit. Read more here

Grass Tutorial

Grass Tutorial by Linker Split.

Section Fixing

How to fix / merge sections tutorial by feersum.endjinn

How To Import 3DS Model

How To Import 3DS Model tutorial by Panda[PL]

Glass Tutorial

How to make transparent alpha channel glass texture and modeling to your addon. Read Glass tutorial.

Glass Damage Tutorial

Glass Damage tutorial by Obmar

Destroyed Building

How to create animation for destroyed building when it collapses. Read destroyed building page.

Forest 50m Block

How to model 50m x 50m forest/jungle blocks or grass so it wont float in the air? geometry placement values is the solution. HOWEVER THIS DOES NOT WORK, WELL IT WORKS BUT CAUSES HUGE FPS LOSS.

Creating Low Res LOD in Modo 302

How to create lower resolution LOD for your model in Modo 302 software? Please read Modo 302 Polygon Reducer tutorial by Snake Man.

Normals, how are they calculated?

There are two edge types: Smooth edges and sharp edges. The normals are calculated, depending on what edges a Quad/Triangle has. Basically: The normals for the vertices that are on a smooth edge are the average of the normals in case of sharp edges.

Let's assume you have a _double sided_ quad, that has smooth edges. Now a double sided Quad has the normal (1,0,0) on one side, and the normal (-1,0,0) on the other side. Now the average of (1,0,0) and (-1,0,0) is? Right, it's (0,0,0).

So the solution is either: Detach all vertices for double sided faces, so that both sides are independent of each other; or make sharp edges for double sided faces.

1. Solution:
Take all double sided faces and remove one side. Then copy and paste those and reverse normals. Do not merge vertices!

2. Solution:
I don't know if this works 100%: Select all Vertices that make up the double sided faces. Press 'U' for sharp edges, then F5 for recalculate normals.

Of course the 2. solution is easier, and you may test this, before you try the first.

A normal for a triangle is calculated that way: Take one of the vertices as the base. From this base calculate the two vectors to the other two vertices. Now calculate the cross product of those two vectors and you have the 'sharp' normal (of course you have to normalize that vector).

If the base vertex is shared between more faces, and you have smooth edges around that vertex, then you calculate the average of all those 'sharp' normals.

And in case of two exactly opposing normals, you get a (0/0/0) normal for smooth edges.

Tracked Vehicle sinks to ground

If your tracked vehicle (tank) sinks to the ground so that the tracks are well below ground level, then you need to edit the damper points in Memory LOD.

Specifically you need to add the damper vertices 0.15 underneath the tracks, then your tank aligns properly to the ground surface.

ST Errors

ST error on arma.rpt file.

Suma (BIS Dev): it is caused by p3d which was not binarized. ST coordinates are needed for normal maps. Normally it is Binarize which computes them. With non-binarized model they must be created by the game, which is slow.

Tutorial: Weapon Optimizing

You can read tutorial of weapon optimizing, which is also sort of development story at the same time. See step by step how to reduce point/poly count and sections in your weapon. This tutorial uses Synide's Move UV's method and Modo 302.

Low Resolution LOD

Description what is and why is low resolution LODs so important in a model. Read Modeling Low RES LOD.

How to create low res LOD

How to create low resolution LODs, read about it Howto Make Low RES LODs.

UV unwrap tutorial

Quick UV unwrap tutorial UV unwrap Tutorial and UV unwrap tutorial 2.

O2 Propertys

List of few Oxygen 2 Propertys for models like fences, fortresses and tents.

arma/modeling.txt · Last modified: 2015-08-22 03:41 (external edit)