Jump to content
Vespa

Arma3 Characters Modding Tutorial

Recommended Posts

Would someone be able to make an updated guide/video on setting up BITOOLS for A3? I tried following Gnats A2 tutorials but am confused because he is referring to A2. Also If you could be as specific as possible because many of the current tutorials [on bohemia forums] are so vague and expect everyone to have already been modding in A2. Thanks a lot.

Share this post


Link to post
Share on other sites
Its seem like the skin attaches automaticly to the section that refers to lower arm, hand, fingers. e.g. forearmroll and hand ...

Is there anyway to make the model not use the skinning?

Theres a selection called HL and Camo. The HL selection includes the parts that will automatically replaced with the skin texture. The Camo is the rest of the Body. I deleted HL and selelected all and called it Camo. worked for me

Share this post


Link to post
Share on other sites

@Roykingtree - do you have Arma 2? I spent a long time trying to figure this stuff out, I don't know if there is an A3 setup yet, but the A2 setup works - with some changes. Been doing helmets in Blender, painting with Blender/Gimp, porting to Oxygen to get the .p3d. Seems to work. Need to learn Shadowlod and lods in general...

What units is the mass in? Helmets are a 100 what.. grams? herrings? I'm sure this is going to be an issue later.

Share this post


Link to post
Share on other sites

Hello to all you intelligent people!

I'm sorry if this is a silly question but i'm a complete noob to modding, so far i'v grabbed all the nessesary files and software to get started.

Heres my question.

When i open the A3_character_example (3dsMax scene file) into "3ds Max 2014" I get the following message...

****************************************************

Missing External Files

P:\A3\Characters_F\Data\basicbody_grey_co.tga

P:\A3\Characters_F\Heads\Data\hl_white_bald_co.tga

P:\A3\Characters_F\Heads\Data\m_white_01_co.tga

P:\ca\Characters_F\data\visors_ca.tga

P:\ca\Characters_F\Common\Data\nvg_co.tga

P:\ca\Characters_F\OPFOR\Data\clothing_rus_co.tga

P:\ca\Characters_F\OPFOR\Data\tech_rus_CO.tga

P:\ca\Characters_F\BLUFOR\Data\clothing1_co.tga

P:\ca\Characters_F\Civil\Data\poor_co.tga

P:\ca\Characters_F\Common\Data\TEST_hair_co.tga

P:\ca\characters2\usmc\marines\data\usmc_marpatsfgb_co.tga

P:\ca\characters2\usmc\marines\data\usmc_marpatsfgs_co.tga

P:\ca\characters2\usmc\marines\data\usmc_marpatdgb_co.tga

*****************************************************

Is this normal? and should I just ignore it? or do I need to get those files from somewhere else?

I have the virtual p: drive that was created by the bohemia tools 2.5 but of course, none of those files exist in there.

Also another noobish question (im sorry) but when the A3 model has loaded, there are six bodies all placed ontop of eachother, that gradually increase in quality and polygon count, is this how all Arma 3 models are supposed to be made? what is the purpose of this?

I have read through this whole thread and was surprised to see that no one else has mentioned this, seems no one else has this problem?

Thankyou to whomever may be able to answer these simple and quite possibly noobtacular questions.

Chu

Ah never mind, I recently found that I need to extract all the .pbo files from ArmA 3 and place them all within the p:/ drive lol also now I understand why there are multiple LOD's in the one model.

Edited by The_Mighty_Chu
Figured it out

Share this post


Link to post
Share on other sites
So, is there anyone who has been able to get "wound textures" working ? If so, how ?

Thanks in advance.

Are you trying to add new wound textures?

I have reskinned the BLUFOR soldier (using replacetexture) and default wound textures are working without any adjustments done to in my reskin config.

Share this post


Link to post
Share on other sites

Could anyone give me an example so I could do my own please? I created my own textures and I read all the tutorial but nothing... if I had an example I could replace the pictures...

Share this post


Link to post
Share on other sites

I imported a vest from ArmA1 into A3. It looks like this.

http://imageshack.us/a/img6/4682/799e.png

It's in the same spot as the A3 example vest.

Where did it go wrong?

I have a model.cfg that looks like this:

class CfgSkeletons
{
class Default
{
	isDiscrete = 1;
	skeletonInherit = "";
	skeletonBones[] = {};
};
class OFP2_ManSkeleton
{
	isDiscrete = 0;
	skeletonInherit = "";
	skeletonBones[] =
	{
		"Pelvis","",
		"Spine","Pelvis",
		"Spine1","Spine",
		"Spine2","Spine1",
		"Spine3","Spine2",
		"Camera","Pelvis",
		"weapon","Spine1",
		"launcher","Spine1",
	//Head skeleton in hierarchy
		"neck","Spine3",
		"neck1","neck",
		"head","neck1",
	//New facial features
		"Face_Hub","head",
			"Face_Jawbone","Face_Hub",
				"Face_Jowl","Face_Jawbone",
				"Face_chopRight","Face_Jawbone",
				"Face_chopLeft","Face_Jawbone",
				"Face_LipLowerMiddle","Face_Jawbone",
				"Face_LipLowerLeft","Face_Jawbone",
				"Face_LipLowerRight","Face_Jawbone",
				"Face_Chin","Face_Jawbone",
				"Face_Tongue","Face_Jawbone",
			"Face_CornerRight","Face_Hub",
				"Face_CheekSideRight","Face_CornerRight",
			"Face_CornerLeft","Face_Hub",
				"Face_CheekSideLeft","Face_CornerLeft",
			"Face_CheekFrontRight","Face_Hub",
			"Face_CheekFrontLeft","Face_Hub",
			"Face_CheekUpperRight","Face_Hub",
			"Face_CheekUpperLeft","Face_Hub",
			"Face_LipUpperMiddle","Face_Hub",
			"Face_LipUpperRight","Face_Hub",
			"Face_LipUpperLeft","Face_Hub",
			"Face_NostrilRight","Face_Hub",
			"Face_NostrilLeft","Face_Hub",
			"Face_Forehead","Face_Hub",
				"Face_BrowFrontRight","Face_Forehead",
				"Face_BrowFrontLeft","Face_Forehead",
				"Face_BrowMiddle","Face_Forehead",
				"Face_BrowSideRight","Face_Forehead",
				"Face_BrowSideLeft","Face_Forehead",
			"Face_Eyelids","Face_Hub",
			"Face_EyelidUpperRight","Face_Hub",
			"Face_EyelidUpperLeft","Face_Hub",
			"Face_EyelidLowerRight","Face_Hub",
			"Face_EyelidLowerLeft","Face_Hub",
			"EyeLeft","Face_Hub",
			"EyeRight","Face_Hub",			
	//Left upper side
		"LeftShoulder","Spine3",
		"LeftArm","LeftShoulder",
		"LeftArmRoll","LeftArm",
		"LeftForeArm","LeftArmRoll",
		"LeftForeArmRoll","LeftForeArm",
		"LeftHand","LeftForeArmRoll",
		"LeftHandRing","LeftHand",
		"LeftHandRing1","LeftHandRing",
		"LeftHandRing2","LeftHandRing1",
		"LeftHandRing3","LeftHandRing2",
		"LeftHandPinky1","LeftHandRing",
		"LeftHandPinky2","LeftHandPinky1",
		"LeftHandPinky3","LeftHandPinky2",
		"LeftHandMiddle1","LeftHand",
		"LeftHandMiddle2","LeftHandMiddle1",
		"LeftHandMiddle3","LeftHandMiddle2",
		"LeftHandIndex1","LeftHand",
		"LeftHandIndex2","LeftHandIndex1",
		"LeftHandIndex3","LeftHandIndex2",
		"LeftHandThumb1","LeftHand",
		"LeftHandThumb2","LeftHandThumb1",
		"LeftHandThumb3","LeftHandThumb2",
	//Right upper side
		"RightShoulder","Spine3",
		"RightArm","RightShoulder",
		"RightArmRoll","RightArm",
		"RightForeArm","RightArmRoll",
		"RightForeArmRoll","RightForeArm",
		"RightHand","RightForeArmRoll",
		"RightHandRing","RightHand",
		"RightHandRing1","RightHandRing",
		"RightHandRing2","RightHandRing1",
		"RightHandRing3","RightHandRing2",
		"RightHandPinky1","RightHandRing",
		"RightHandPinky2","RightHandPinky1",
		"RightHandPinky3","RightHandPinky2",
		"RightHandMiddle1","RightHand",
		"RightHandMiddle2","RightHandMiddle1",
		"RightHandMiddle3","RightHandMiddle2",
		"RightHandIndex1","RightHand",
		"RightHandIndex2","RightHandIndex1",
		"RightHandIndex3","RightHandIndex2",
		"RightHandThumb1","RightHand",
		"RightHandThumb2","RightHandThumb1",
		"RightHandThumb3","RightHandThumb2",
	//Left lower side
		"LeftUpLeg","Pelvis",
		"LeftUpLegRoll","LeftUpLeg",
		"LeftLeg","LeftUpLegRoll",
		"LeftLegRoll","LeftLeg",
		"LeftFoot","LeftLegRoll",
		"LeftToeBase","LeftFoot",
	//Right lower side
		"RightUpLeg","Pelvis",
		"RightUpLegRoll","RightUpLeg",
		"RightLeg","RightUpLegRoll",
		"RightLegRoll","RightLeg",
		"RightFoot","RightLegRoll",
		"RightToeBase","RightFoot"
	};
	// location of pivot points (local axes) for hierarchical animation
	pivotsModel="A3\anims_f\data\skeleton\SkeletonPivots.p3d";
 	};
};

class CfgModels
{
class Default
{
	sectionsInherit="";
	sections[] = {};
	skeletonName = "";
};
class ArmaMan : Default
{
	htMin = 60;          // Minimum half-cooling time (in seconds)
	htMax = 1800;        // Maximum half-cooling time (in seconds)
	afMax = 30;          // Maximum temperature in case the model is alive (in celsius)
	mfMax = 0;           // Maximum temperature when the model is moving (in celsius)
	mFact = 1;           // Metabolism factor - number from interval <0, 1> (0 - metabolism has no influence, 1 - metabolism has full influence (no other temperature source will be considered)).
	tBody = 37;  // Metabolism temperature of the model (in celsius)

	sections[] =
	{
		"osobnost","Head_Injury","Body_Injury","l_leg_injury","l_arm_injury","r_arm_injury","r_leg_injury","injury_body", "injury_legs", "injury_hands",
		"clan","clan_sign","Camo","CamoB","Camo1","Camo2","personality","hl", "injury_head"
	};
	skeletonName = "OFP2_ManSkeleton";
};
	class NVG_anpvs7 : ArmaMan {};
	class NVG_anpvs7_off : ArmaMan {};
	class arma1vest : ArmaMan {};
};

Edited by AlexVestin

Share this post


Link to post
Share on other sites

ok so I Have no idea what I'm doing after making the template using Scarecrow398's tutorial. I got the unit ingame just not the texture, it says cant load texture. someone please help

Edited by UNSC LEADER
I'm a massive idiot

Share this post


Link to post
Share on other sites
ok so I Have no idea what I'm doing after making the template using Scarecrow398's tutorial. I got the unit ingame just not the texture, it says cant load texture. someone please help
Have a look at some of the threads here http://forums.bistudio.com/forumdisplay.php?170-ARMA-3-BETA-ADDONS-Configs-amp-Scripting, if your still stuck ask for help there.

Share this post


Link to post
Share on other sites

Hey guys... I have, like UNSC LEADER, managed to get the item into the game. However I do not get "Cannot Load Texture" but an invisible man. Any Ideas.

P.s. sorry if this has been answered before but I could not spot anything

Thank

CC

Share this post


Link to post
Share on other sites
Hey guys... I have, like UNSC LEADER, managed to get the item into the game. However I do not get "Cannot Load Texture" but an invisible man. Any Ideas.

P.s. sorry if this has been answered before but I could not spot anything

Thank

CC

Double check your texture paths.

Share this post


Link to post
Share on other sites

yeah the texture paths are right

class CfgVehicles {

class B_Soldier_base_F;

class Example_Soldier_F : B_Soldier_base_F {

_generalMacro = "B_Soldier_F"; //unsure what this does

scope = 2;

displayName = "REF Soldier";

nakedUniform = "U_BasicBody"; //class for "naked" body

uniformClass = "REF_Uniform"; //the uniform item

hiddenSelections[] = {"Camo"};

hiddenSelectionsTextures[] = {"Data\REF_co.paa"};

};

Thats what I have and the paa is in the folder called data

Share this post


Link to post
Share on other sites

What is the name of your pbo? if its Data then your path is fine, if not you need to add it to your texture path.

hiddenSelectionsTextures[] = {"pboName\Data\REF_co.paa"};

Share this post


Link to post
Share on other sites

your absolutely right surpher thank you so much

Can't believe i never noticed that

My Clan will sacrifice opfor in your name

CC

Share this post


Link to post
Share on other sites

Why is it that when I pick "clothing1" out of the blufor folder then retexture it, put it into game as code only, it wont work on blufor units :S only on the opfor and green and it looks all wrong

Edited by KDK11

Share this post


Link to post
Share on other sites

Hey, I have a question regarding normal mapping and special maps in general.

I am just experimenting for myself atm and since characters_f.pbo have too many things inside it, and I didn't want to screw around with the class names atm etc..

I decided to try and retexture a simple blufor unit I download from Armaholic. (I am not releasing anything just trying for myself atm, I will ask permission if I actually do anything public)

So I managed to get a texture unit ingame and it works! (I was very surprised it did)

but all the addons I looked at have only the color texture and none have an rvmat so they all seem to have the deafault blufor normal map baked into them.

How would I go about changing the normal map to my own normal map?

Also, I can't seem to look at the rvmat from the characters_f.pbo, and i don't see any hidden selection in the config.cpp with normal maps, they all have only the color texture.

Thank you in advance.

-EDIT-

OK, so I managed to take a look inside the RVMAT of characters_f.pbo

in characters_f\a3\characters_f\BLUFOR\Data\clothing1.rvmat using eliteness,

and it seems that I understand more or less what is going on there.

I also found in config.cpp of characters_f.pbo inside characters_f\a3\characters_f\BLUFOR\

this:

mat[] = {"A3\Characters_F\BLUFOR\Data\clothing1.rvmat"

which is under class Wounds.

But the thing is, that all the other addons I looked at have no RVMAT inside the pbo and have no reference to any RVMAT in their config.cpp,

so where do they get the the normal maps, wounding textures etc?

I am really confused

Edited by bez

Share this post


Link to post
Share on other sites
But the thing is, that all the other addons I looked at have no RVMAT inside the pbo and have no reference to any RVMAT in their config.cpp,

so where do they get the the normal maps, wounding textures etc?

The default .rvmat is usually assigned directly to the model in the Oxygen 2 modelling software so there's been no need for BIS to make reference to it in the config.cpp since they're only using the default one assigned to the model. Strictly speaking, the default colour textures are also assigned directly in O2 rather than via config - hiddenselectionstextures is used to reference additional colour texture variants that can be swapped onto the model in place of the default ones applied directly to the .p3d model.

BIS have made a hiddenSelectionsMaterials parameter that can be used in the config in order to assign a new .rvmat to models with hiddenselections (so you can change the normal map, specular map etc.). However, assigning a new .rvmat via hiddenselectionsmaterials/setobjectmaterial currently stops the wound textures from working when the unit is injured. BIS are aware of this problem (might be why BIS haven't used hiddenSelectionsMaterials on any of their own configs) and pettka has said that he'd like the programmers to have a look at finding a solution.

hiddenSelectionsMaterials is implemented in exactly the same way you use hiddenSelectionsTextures in the config (but obviously uses a path to a .rvmat instead of to a _co.paa texture), and the setObjectMaterial command can be used in the editor exactly the same was as setObjectTexture.

Share this post


Link to post
Share on other sites
The default .rvmat is usually assigned directly to the model in the Oxygen 2 modelling software so there's been no need for BIS to make reference to it in the config.cpp since they're only using the default one assigned to the model. Strictly speaking, the default colour textures are also assigned directly in O2 rather than via config - hiddenselectionstextures is used to reference additional colour texture variants that can be swapped onto the model in place of the default ones applied directly to the .p3d model.

BIS have made a hiddenSelectionsMaterials parameter that can be used in the config in order to assign a new .rvmat to models with hiddenselections (so you can change the normal map, specular map etc.). However, assigning a new .rvmat via hiddenselectionsmaterials/setobjectmaterial currently stops the wound textures from working when the unit is injured. BIS are aware of this problem (might be why BIS haven't used hiddenSelectionsMaterials on any of their own configs) and pettka has said that he'd like the programmers to have a look at finding a solution.

hiddenSelectionsMaterials is implemented in exactly the same way you use hiddenSelectionsTextures in the config (but obviously uses a path to a .rvmat instead of to a _co.paa texture), and the setObjectMaterial command can be used in the editor exactly the same was as setObjectTexture.

Hey da12thMonkey, thanks for the replay.

I don't get something,

you say that even BI don't use the rvmat in their configs and everything is baked on the models directly from Oxygen2?

but I clearly see in their config.cpp for bluefor that they call the rvmat under class Wounds

OK this code is probably very wrong, it's only an example and NOT the retextured unit I have in game.

But If I could add a brand new RVMAT how would I go about doing it?

#define _ARMA_
class CfgPatches
{
class my_class
{
	units[] = {};
	weapons[] = {};
	requiredVersion = 0.1;
	requiredAddons[] = {"A3_Data_F","A3_Weapons_F","A3_Characters_F","A3_Characters_F_BLUFOR"};
};
};
class CfgVehicleClasses
{
class my_class
{
	displayName = "Bez";
};
};
class CfgVehicles
{
class B_Soldier_F;
class BEZ_rifleman: B_Soldier_F
{
	scope = 2;
	displayName = "Bez rifleman";
	vehicleClass = "my_class";
	attendant = "true";
	uniformAccessories[] = {};
	nakedUniform = "U_BasicBody";
	uniformClass = "U_B_CombatUniform_mcam";
	model = "\A3\characters_F\BLUFOR\b_soldier_01.p3d";
	hiddenSelections[] = {"Camo"};
	hiddenSelectionsTextures[] = {"Bez_Unit\data\bez_texture_co.paa"};
};
};

Thank you

Edited by bez

Share this post


Link to post
Share on other sites

Class wounds references the blood-covered .rvmats used when the unit is injured - the model is supposed to switch to one of the listed .rvmats when the unit reaches a certain amount of damage (there are normally two or three wound stages to represent different severities of injury). Vehicles have the same sort of thing under class Damage (this is what makes them use the rusty, charred textures when they're blown up).

The paths in class wounds have no bearing on which .rvmats are used when the unit is initialised in an undamaged state - the .rvmat assigned to the .p3d itself is used to determine the initial .rvmat rendered on the model, unless hiddenSelectionsMaterials/setObjectMaterial is used to overwrite it (and unfortunately the class wounds/class damage stages too).

Your config would need to be as shown below:

#define _ARMA_
class CfgPatches
{
class my_class
{
	units[] = {};
	weapons[] = {};
	requiredVersion = 0.1;
	requiredAddons[] = {"A3_Data_F","A3_Weapons_F","A3_Characters_F","A3_Characters_F_BLUFOR"};
};
};
class CfgVehicleClasses
{
class my_class
{
	displayName = "Bez";
};
};
class CfgVehicles
{
class B_Soldier_F;
class BEZ_rifleman: B_Soldier_F
{
	scope = 2;
	displayName = "Bez rifleman";
	vehicleClass = "my_class";
	attendant = "true";
	uniformAccessories[] = {};
	nakedUniform = "U_BasicBody";
	uniformClass = "U_B_CombatUniform_mcam";
	model = "\A3\characters_F\BLUFOR\b_soldier_01.p3d";
	hiddenSelections[] = {"Camo"};
	hiddenSelectionsTextures[] = {"Bez_Unit\data\bez_texture_co.paa"};
	hiddenSelectionsMaterials[] = {"Bez_Unit\data\mymaterials.rvmat"};
};
};

Notice, the added hiddenSelectionsMaterials parameter at the bottom - that's all you do. However, as I explained, this will prevent the game from being able to change from your custom.rvmat when the unit is damaged, so they will have no visible damage textures when shot; even if you write your own class Wounds with paths to custom wound .rvmats. That's an issue that BIS needs to look at before it will work properly.

Edited by da12thMonkey

Share this post


Link to post
Share on other sites
Class wounds references the blood-covered .rvmats used when the unit is injured - the model is supposed to switch to one of the listed .rvmats when the unit reaches a certain amount of damage (there are normally two or three wound stages to represent different severities of injury). Vehicles have the same sort of thing under class Damage (this is what makes them use the rusty, charred textures when they're blown up).

The paths in class wounds have no bearing on which .rvmats are used when the unit is initialised in an undamaged state - the .rvmat assigned to the .p3d itself is used to determine the initial .rvmat rendered on the model, unless hiddenSelectionsMaterials/setObjectMaterial is used to overwrite it (and unfortunately the class wounds/class damage stages too).

Your config would need to be as shown below:

#define _ARMA_
class CfgPatches
{
class my_class
{
	units[] = {};
	weapons[] = {};
	requiredVersion = 0.1;
	requiredAddons[] = {"A3_Data_F","A3_Weapons_F","A3_Characters_F","A3_Characters_F_BLUFOR"};
};
};
class CfgVehicleClasses
{
class my_class
{
	displayName = "Bez";
};
};
class CfgVehicles
{
class B_Soldier_F;
class BEZ_rifleman: B_Soldier_F
{
	scope = 2;
	displayName = "Bez rifleman";
	vehicleClass = "my_class";
	attendant = "true";
	uniformAccessories[] = {};
	nakedUniform = "U_BasicBody";
	uniformClass = "U_B_CombatUniform_mcam";
	model = "\A3\characters_F\BLUFOR\b_soldier_01.p3d";
	hiddenSelections[] = {"Camo"};
	hiddenSelectionsTextures[] = {"Bez_Unit\data\bez_texture_co.paa"};
	hiddenSelectionsMaterials[] = {"Bez_Unit\data\mymaterials.rvmat"};
};
};

Notice, the added hiddenSelectionsMaterials parameter at the bottom - that's all you do. However, as I explained, this will prevent the game from being able to change from your custom.rvmat when the unit is damaged, so they will have no visible damage textures when shot; even if you write your own class Wounds with paths to custom wound .rvmats. That's an issue that BIS needs to look at before it will work properly.

I see, so basically we need to wait if we want custom normal maps and materials... shame.

I would take it that if you didn't say anything about "my" code it's more or less ok :) (I hope)

Thanks allot for your help da12thMonkey,

greatly appreciated!

Share this post


Link to post
Share on other sites

If I'm honest I didn't check over your config properly, but nothing jumps out at me as being really wrong.

There is a way to edit the .rvmats assigned to the model by editing the .p3d, which I think still allows you to have working wound textures. But you need BIS' permission to do this because it involves modifying and redistributing BIS's models - something that breaches their EULA unless you have their expressed permission to do it.

Share this post


Link to post
Share on other sites

Please sign in to comment

You will be able to leave a comment after signing in



Sign In Now

×