Jump to content
mrmerkaholik

Getting a 3D Model/Object into Arma 3 || Arma 3 Modeling Tut For NOOBS

Recommended Posts

This is a very basic tutorial showing how to get a basic model into Arma 3.

*Required Programs*

Arma 3 (Obviously...)

Arma 3 Tools

If you don't know how to get Arma 3 tools then open Steam, go to the library tab and go down to tools. The tools are alphabetical so it should be at the top of the list.

*Recommenced Programs*

Notepad++ - Notepad++ is a free (as in "free speech" and also as in "free beer") source code editor and Notepad replacement that supports several languages. DOWNLOAD AND ALWAYS USE FOR EVERTHING!!!!!!!

3DS Max - 3DS Max is a professional 3D computer graphics program for making 3D animations, models, games and images. You can get the free version by going to http://www.autodesk.com/ and signing up for a student version of 3DS Max.

Blender - Blender is a professional free and open-source 3D computer graphics software product used for creating animated films, visual effects, art, 3D printed models, interactive 3D applications and video games. Basically it's the free version of 3DS Max just with a more simple interface.

SketchUp - (formerly: Google Sketchup) is a 3D modeling program for applications such as architectural, interior design, civil and mechanical engineering, film, and video game design. This is the most simple and cheapest 3D modeling program. Highly recommended for those just starting and need to get a feel for things.

To get the best modeling experience use 3DS Max or Blender.

To get started we are going to need a couple of files. Make a new folder called "A3_Projects" (Without the "" duhhh). Inside that folder make another folder called "Mailbox". Inside Mailbox make four files. basicDefines_A3.hpp, cfgPatches.hpp, config.cpp, and config_macros_glass.hpp. To open, right click any of the files and either click "edit", for those without NotePad++. For those who have NotePad++ right click and select edit with NotePad++.

Now for the fun stuff. The code you see below start putting that into the files.

basicDefines_A3.hpp

#define true 1
#define false 0

#define VSoft 0
#define VArmor 1
#define VAir 2

// type scope
#define private 0
#define protected 1
#define public 2

#define CanSeeRadar 1
#define CanSeeEye 2
#define CanSeeOptics 4
#define CanSeeEar 8
#define CanSeeCompass 16
#define CanSeeRadarC CanSeeRadar+CanSeeCompass
#define CanSeeAll 31
#define CanSeePeripheral 32

//lock acquiring
#define manualLA      0
#define automaticLA   1

//lockable target type
#define lockGroundTT      0
#define lockAirGroundTT   1
#define lockAirTT         2
#define lockGround      0
#define lockAirGround   1
#define lockAir         2

//missile lock type
#define fireAndForgetLT   0
#define keepLockedLT      1
#define manualLT          2

#define SPEED_STATIC 1e10

#define LockNo		0
#define LockCadet	1
#define LockYes		2

enum {StabilizedInAxesNone,StabilizedInAxisX,StabilizedInAxisY,StabilizedInAxesBoth, StabilizedInAxesXYZ};

#define StabilizedInAxesNone 0
#define StabilizedInAxisX 1
#define StabilizedInAxisY 2
#define StabilizedInAxesBoth 3
#define StabilizedInAxesXYZ 4

#define CM_none        0
#define CM_Lock_Visual 1
#define CM_Lock_IR     2
#define CM_Lock_Laser  4
#define CM_Lock_Radar  8
#define CM_Missile     16


#define CMImmunity_GOOD 0.9
#define CMImmunity_MIDDLE 0.65
#define CMImmunity_BAD    0.5

#define mag_xx(a,b) class _xx_##a {magazine = a; count = b;}
#define weap_xx(a,b) class _xx_##a {weapon = a; count = b;}
#define item_xx(a,b) class _xx_##a {name = a; count = b;}
#define bag_xx(a,b) class _xx_##a {backpack = a; count = b;}

#define DEFAULT_SLOT 0
#define MUZZLE_SLOT 101
#define OPTICS_SLOT 201
#define FLASHLIGHT_SLOT 301
#define NVG_SLOT 602
#define GOGGLE_SLOT 603
#define HEADGEAR_SLOT 605
#define UNIFORM_SLOT 801

#define HMD_SLOT       616
#define BINOCULAR_SLOT 617
#define MEDIKIT_SLOT   619
#define RADIO_SLOT    611

#define VEST_SLOT      701
#define BACKPACK_SLOT  901

#define LOAD(weight,capacity) maximumLoad = ##capacity##; \
						  mass = ##weight##;

#define HeadArmourCoef 2.5
#define BodyArmourCoef 10
#define HandArmourCoef 5
#define LegArmourCoef 5

cfgPatches.hpp

class CfgPatches
{
class Mailbox 
{
	requiredAddons[] = {"A3_Structures_F"};
	requiredVersion = 0.1;
	units[] =
	{
		"Mailbox"
	};
	weapons[] = {};
};
};

config.cpp

#include "basicdefines_A3.hpp"
#include "config_macros_glass.hpp"
#include "cfgPatches.hpp"

class CfgVehicles
{

class House;
class House_F: House
{
	class DestructionEffects;
};
class Ruins_F;


class Mailbox: House_F
{
	scope = 2; 
	displayName = "Mailbox"; 
	model = Mailbox\Mailbox.p3d; // filepath
	vehicleClass = Structures; // Object in the in-game editor
	mapSize = 20.27; 
	cost = 40000;

	class DestructionEffects: DestructionEffects
	{
	};
	class HitPoints 
	{
	};
	class Damage
	{
	};

	class UserActions
	{
	};

};
};




config_macros_glass.hpp

#define DOOR_GLASS_HITPOINT(glassID,arm,rad) \
		class Glass_##glassID##_hitpoint \
		{ \
			armor = arm; \
			material = -1; \
			name = Glass_##glassID; \
			visual = Glass_##glassID##_hide; \
			passThrough = 0; \
			radius = rad; \
			convexComponent = Glass_##glassID##_hide; \
			class DestructionEffects \
			{ \
				class BrokenGlass1 \
				{ \
					simulation = "particles"; \
					type = "BrokenGlass1ND"; \
					position = Glass_##glassID##_effects; \
					intensity = 0.15000001; \
					interval = 1; \
					lifeTime = 0.05; \
				}; \
				class BrokenGlass2: BrokenGlass1 \
				{ \
					type = "BrokenGlass2ND"; \
				}; \
				class BrokenGlass3: BrokenGlass1 \
				{ \
					type = "BrokenGlass3ND"; \
				}; \
				class BrokenGlass4: BrokenGlass1 \
				{ \
					type = "BrokenGlass4ND"; \
				}; \
				class BrokenGlass5: BrokenGlass1 \
				{ \
					type = "BrokenGlass5ND"; \
				}; \
				class BrokenGlass6: BrokenGlass1 \
				{ \
					type = "BrokenGlass6ND"; \
				}; \
				class BrokenGlass7: BrokenGlass1 \
				{ \
					type = "BrokenGlass7ND"; \
				}; \
				class BrokenGlass1S: BrokenGlass1 \
				{ \
					type = "BrokenGlass1SD"; \
				}; \
				class BrokenGlass2S: BrokenGlass1 \
				{ \
					type = "BrokenGlass2SD"; \
				}; \
				class BrokenGlass3S: BrokenGlass1 \
				{ \
					type = "BrokenGlass3SD"; \
				}; \
				class BrokenGlass4S: BrokenGlass1 \
				{ \
					type = "BrokenGlass4SD"; \
				}; \
				class BrokenGlass5S: BrokenGlass1 \
				{ \
					type = "BrokenGlass5SD"; \
				}; \
				class BrokenGlass6S: BrokenGlass1 \
				{ \
					type = "BrokenGlass6SD"; \
				}; \
				class BrokenGlass7S: BrokenGlass1 \
				{ \
					type = "BrokenGlass7SD"; \
				}; \
			}; \
		};

#define BIG_GLASS_HITPOINT(glassID,arm,rad) \
		class Glass_##glassID##_hitpoint \
		{ \
			armor = arm; \
			material = -1; \
			name = Glass_##glassID; \
			visual = Glass_##glassID##_hide; \
			passThrough = 0; \
			radius = rad; \
			convexComponent = Glass_##glassID##_hide; \
			class DestructionEffects \
			{ \
				class BrokenGlass1 \
				{ \
					simulation = "particles"; \
					type = "BrokenGlass1NB"; \
					position = Glass_##glassID##_effects; \
					intensity = 0.15000001; \
					interval = 1; \
					lifeTime = 0.05; \
				}; \
				class BrokenGlass2: BrokenGlass1 \
				{ \
					type = "BrokenGlass2NB"; \
				}; \
				class BrokenGlass3: BrokenGlass1 \
				{ \
					type = "BrokenGlass3NB"; \
				}; \
				class BrokenGlass4: BrokenGlass1 \
				{ \
					type = "BrokenGlass4NB"; \
				}; \
				class BrokenGlass5: BrokenGlass1 \
				{ \
					type = "BrokenGlass5NB"; \
				}; \
				class BrokenGlass6: BrokenGlass1 \
				{ \
					type = "BrokenGlass6NB"; \
				}; \
				class BrokenGlass7: BrokenGlass1 \
				{ \
					type = "BrokenGlass7NB"; \
				}; \
				class BrokenGlass1S: BrokenGlass1 \
				{ \
					type = "BrokenGlass1SB"; \
				}; \
				class BrokenGlass2S: BrokenGlass1 \
				{ \
					type = "BrokenGlass2SB"; \
				}; \
				class BrokenGlass3S: BrokenGlass1 \
				{ \
					type = "BrokenGlass3SB"; \
				}; \
				class BrokenGlass4S: BrokenGlass1 \
				{ \
					type = "BrokenGlass4SB"; \
				}; \
				class BrokenGlass5S: BrokenGlass1 \
				{ \
					type = "BrokenGlass5SB"; \
				}; \
				class BrokenGlass6S: BrokenGlass1 \
				{ \
					type = "BrokenGlass6SB"; \
				}; \
				class BrokenGlass7S: BrokenGlass1 \
				{ \
					type = "BrokenGlass7SB"; \
				}; \
			}; \
		};

#define NORMAL_GLASS_HITPOINT(glassID,arm,rad) \
		class Glass_##glassID##_hitpoint \
		{ \
			armor = arm; \
			material = -1; \
			name = Glass_##glassID; \
			visual = Glass_##glassID##_hide; \
			passThrough = 0; \
			radius = rad; \
			convexComponent = Glass_##glassID##_hide; \
			class DestructionEffects \
			{ \
				class BrokenGlass1 \
				{ \
					simulation = "particles"; \
					type = "BrokenGlass1NN"; \
					position = Glass_##glassID##_effects; \
					intensity = 0.15000001; \
					interval = 1; \
					lifeTime = 0.05; \
				}; \
				class BrokenGlass2: BrokenGlass1 \
				{ \
					type = "BrokenGlass2NN"; \
				}; \
				class BrokenGlass3: BrokenGlass1 \
				{ \
					type = "BrokenGlass3NN"; \
				}; \
				class BrokenGlass4: BrokenGlass1 \
				{ \
					type = "BrokenGlass4NN"; \
				}; \
				class BrokenGlass5: BrokenGlass1 \
				{ \
					type = "BrokenGlass5NN"; \
				}; \
				class BrokenGlass6: BrokenGlass1 \
				{ \
					type = "BrokenGlass6NN"; \
				}; \
				class BrokenGlass7: BrokenGlass1 \
				{ \
					type = "BrokenGlass7NN"; \
				}; \
				class BrokenGlass1S: BrokenGlass1 \
				{ \
					type = "BrokenGlass1SN"; \
				}; \
				class BrokenGlass2S: BrokenGlass1 \
				{ \
					type = "BrokenGlass2SN"; \
				}; \
				class BrokenGlass3S: BrokenGlass1 \
				{ \
					type = "BrokenGlass3SN"; \
				}; \
				class BrokenGlass4S: BrokenGlass1 \
				{ \
					type = "BrokenGlass4SN"; \
				}; \
				class BrokenGlass5S: BrokenGlass1 \
				{ \
					type = "BrokenGlass5SN"; \
				}; \
				class BrokenGlass6S: BrokenGlass1 \
				{ \
					type = "BrokenGlass6SN"; \
				}; \
				class BrokenGlass7S: BrokenGlass1 \
				{ \
					type = "BrokenGlass7SN"; \
				}; \
			}; \
		};

Now that you have those files ready we can begin the modeling phase.

*SketchUp*

To being we are going to start off the most easy to use program.

Step 1 - Creating Your Object

First, open sketup and delete the man. With sketchup you can make the models your self and you can go to the 3D warehouse and download models that people have made and uploaded for your use.

We're going to make a basic model, a square. So first, select the rectangle tool and click and drag on the ground. Try not to make it to big as we are just testing our model. Next use the "push/pull" tool to raise your modeling. Make sure to hold shift and click on top of your model. Also make sure the model is white and not gray. If the model is gray you'll be able to see through the model in-game. To fix this right click on the part that's gray and click reverse face. Great! We have a basic object created! With the object finished we can now export it to a .3DS file. To do this click "File, Export, 3D Model" and put it in the A3_Projects folder.

Step 2 - Getting Your Modeling into Oxygen 2.

Go to Steam, Tools, and open Arma 3 tools and click Lauch Object Builder.

Once inside object builder click file, import, 3D Studio. This menu should appear : http://gyazo.com/05c6f6a0728fcd4634cd791f88202bff Click the box to the left of where it says "Model". Click No merge. Then click import. There should be a red dot in the middle of the grid. That's the object. Right now it's pretty small so we have to change that. Go to points, Transform 2D, scale. Change it to 20 and check use pin. 20 might be to small or to big for your model so change the number and click preview to make sure it's not to big.

Right now we have a object/model which we can get into game. So let's get it into game! Click file save as and find your A3_Projects folder and inside the folder named Mailbox, save the .p3d file as Mailbox.p3d. (Make sure to delete the .3DS file before moving onto the next step)

Step 3 - Making the .PBO

Close Oxygen 2/Object builder and launch addon builder. In the addon source directory find your "A3_Projects\Mailbox". Make sure you click the Mailbox folder then hit OK. Destination directory set to your desktop (will be moved later). Now for the final thing click options and in the list of files to copy directly put this in the line *.pac;*.paa;*.rtm;*.sqf;*.sqs;*.tga;*.fsm;*.wss;*.ogg;*.wav;*.fxy;*.csv;*.html;*.lip;*.txt;*.cpp;*.hpp;*.p3d

This is to make sure that all the files will be packed into the PBO. Hit PACK and you're DONE!

Find your object in game by entering the editor setting your player down and selecting empty and scroll down to structures and you should see something called "Mailbox".

Here's what my model looked like - http://gyazo.com/e736ba3d2f5654cf5d69eef8fff0751d

Edited by MrMerkaHolik
  • Like 1

Share this post


Link to post
Share on other sites

You don't know my love for you! I will follow your guide and let you know!Thanks!

(might be worth on posting this on arma 3 editing forums (maybe on general or O2)!

Have you considered doing weapon tutorial?

Edited by enex

Share this post


Link to post
Share on other sites

I don't want to knock on your tutorial but there are some issues that need to be corrected now before you have the bad ways ingrained in you. First I would avoid using sketch up. Especially when as you said yourself that more professional tools are available for free such as blender and 3dsmax. There's issues with sketch up and it's ability to create certain lods.

Second , and most importantly when creating addons for this game , are the proper use of tags.

A tag would be this. tag_mailbox.

And you use it for everything. Class names in the model cfg and main config and in the name of the p3s itself. Register your unique tag at ofpec.com. It's unique tag is now your tag you will release your addons with and will stop your addons from overwriting anyone else's ***since arma can have only ONE p3d name, in your case , mailbox.p3d, at any one time***

Third.(and my opinion) If your going to be releasing addons I would suggest you drop the pos addonbuilder and use pboproject. It can be found on the same site you used to download arma3p(hopefully) by mikero. It will save you hours and hours of frustration trying to figure out why your addon doesn't work because it will not let you make a pbo if there are any errors AND it will tell you where your error lies. Just look in the tools channel and see all the addonbuilder users and their constant threads over how it doesn't work. Do the smart thing and yourself a favor and use the smarter tool

Ps. This is in the wrong forum section.

Edited by M1lkm8n
  • Like 2

Share this post


Link to post
Share on other sites
Ps. This is in the wrong forum section.

Indeed. Thread moved.

Share this post


Link to post
Share on other sites

more on the choice of your 3d software package: It can be anything from the 3 autodesk(max, maya, xsi) options that allow a 3 year student (non-commercial) license, foundry(modo), newtek(lightwave) or anything inbetwen + the obvious blender (that is actually a very robust 3d software package in itself, that has no relation to max, nor it is a similar downgraded version - it can do everything max does, and some more in some areas |sculping in particular|. If anything, it is closer to maya than max).

Out of everything that is out there on the market, sketchup and some of the similar products (including the 123 product range from autodesk for instance, or things that works with nurbs tech - rhino, solidworks etc) are NOT really modelling software, or in fact are not intended for game content. Why: because they do not really work with topology, nor do they work with UVW workspace correctly. The output is more or less wrong each time (unless you create a simple cube like you did). For instance, for sketchup there is no real option for an unwrap. There are some mapping tools but are simply not suitable for anything more than a few boxes.

To end the rant here: you want a modelling software for games, have a look of what it is being used in this industry. That revolves more or less around a few products: max / maya(lt or not) / modo. Blender is really cool mainly because it is free and because of that it's got quite an impressive (freelance mostly) userbase.

  • Like 1

Share this post


Link to post
Share on other sites

This thread is just a base for people to get into modeling. SketchUp is not what people should use for proper modeling. SketchUp was just to show how easy it can be with little effort to get a object/model into game. In my opinion, look up tutorials for 3DS Max. I personally love 3DS Max. I've been using it for two years now and cant get away from it. Blender is just as good but it comes down to personally preference really.

Share this post


Link to post
Share on other sites
This thread is just a base for people to get into modeling. SketchUp is not what people should use for proper modeling. SketchUp was just to show how easy it can be with little effort to get a object/model into game.

Then you shouldn't have used sketchup at all in your example. It is just as simple to create a box in any software out there as in sketchup.

Share this post


Link to post
Share on other sites

SketchUp was used because it's the easiest to download and to show an example. And hey douche bag, did you not read the part where I said "SketchUp is not what people should use for PROPER MODELING"? If you have a problem with the way my thread is made then well, go suck a dick. Plain and simple.

Share this post


Link to post
Share on other sites

Wow. Relax. We read the thread. He is trying to explain that it is best to start out and learn the correct way. When you teach someone the wrong way first what happens? They continue down that path.

PuFu has been modding for a long time. Try to learn from the pros rather then insult them, which by the way is not tolorated on these forums.

Share this post


Link to post
Share on other sites

Hi

 

I used this tutorial to get a file into arma 3, While there are parts missing the only issue i have now is when i try and preview it in the editor it comes up with the following.

no entry

"bin/config.bin/cfgvehicles/mailbox/damage.tex"

Share this post


Link to post
Share on other sites

 

 

Destination directory set to your desktop (will be moved later). 

 

where do you move the pbo files too?

 

 

Share this post


Link to post
Share on other sites

where do you move the pbo files too?

 

Coudnt quite follow the last part, on how/where to place what file so i can load it in editor.

C:\Program Files (x86)\Steam\SteamApps\common\Arma 3\Addons

Share this post


Link to post
Share on other sites

C:\Program Files (x86)\Steam\SteamApps\common\Arma 3\Addons

BAD IDEA!!

You should never put user made addons into the main game directory.

 

1. Create a new folder and call it @Myaddon(or whatever your addon is called)

2.Inside that folder create another one called addons

3. once you've binarised and created your pbo, place it into the folder in step 3.

That's the very basic way.

Share this post


Link to post
Share on other sites

C:\Program Files (x86)\Steam\SteamApps\common\Arma 3\Addons

 

 

never ever put addons in this folder

  • Like 1

Share this post


Link to post
Share on other sites

AS other people have said-do not use the main game folder for addons.

 

If you go to your Documents there should be a folder there called Arma3-use that instead.

  • Like 1

Share this post


Link to post
Share on other sites
On 14.2.2016 at 8:33 PM, LordBRandy said:

no entry

"bin/config.bin/cfgvehicles/mailbox/damage.tex"

I have the exact same error. I believe it has something to do with one of the config files we created, probably a error in config.cpp. Ingame the error means I can walk trough objects.

Share this post


Link to post
Share on other sites
6 hours ago, Mohammad Wazzan said:

Hello guys .. thanks to all of you 

does anyone knows how to get zil 130 for arma 3 ? Thanks 

 

sure, you model it yourself from scratch

  • Like 2
  • Sad 1

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

×