====== ArmA 1 Grass Tutorial ======
[[https://www.pmctactical.org/forum/viewforum.php?f=42|ArmA 1 Forum]], [[:arma|ArmA 1 Home]], [[arma:config|ArmA 1 Config]], [[arma:tools|ArmA 1 Tools]], [[arma:file_formats|ArmA 1 File Formats]], [[arma:missions|ArmA 1 Missions]], [[arma:modeling|ArmA 1 3D Modeling]], [[arma:terrain|ArmA 1 Terrain]], [[arma:texturing|ArmA 1 Texturing]], [[arma:scripting|ArmA 1 Scripting]]
**ArmA 1** aka Armed Assault (ArmA)
**Grass Tutorial** by Linker Split
Create a little 3x3m grass block, something like this:
{{ https://pmc.editing.wiki/images/grass_tutorial1.jpg }}
The model must only have some res LODs and Geometry LOD empty, with property names
damage no
shadow hybrid
====== Config.cpp ======
Here I'll post an example of what should be to have your own clutters:
class DefaultLighting;
class DefaultLighting_CA : DefaultLighting {};
//+++++++++++++++++++++++++++\\
///the definition of my own ground textures\\\
//+++++++++++++++++++++++++++\\
class CfgSurfaces
{
class Default {};
class water {};
class citysand : Default
{
access = ReadOnly;
files = "citysand_*";
rough = 0.01;
dust = 0.8;
soundEnviron = "road";
character = "citysandClutter";
};
class desertsand : Default
{
access = ReadOnly;
files = "desertsand_*";
rough = 0.03;
dust = 0.9;
soundEnviron = "sand";
character = "desertsandClutter";
};
class grassdry : Default
{
access = ReadOnly;
files = "grassdry_*";
rough = 0.01;
dust = 0.09;
soundEnviron = "drygrass";
character = "grassdryClutter";
};
};
//+++++++++++++++++++++++++++\\
///////the definition of my own clutters\\\\\\\\\
//+++++++++++++++++++++++++++\\
class CfgSurfaceCharacters
{
class citysandClutter
{
probability[] = {0.0005000,0.001,0.004};
names[] = {"grassdryLong","cityrocksmall","Cityrockbig"};
};
class desertsandClutter
{
probability[] = {0.010015,0.005001,0.003001,0.000670,0.00050,0.0002};
names[] = {"grassdryShort","Desertrockssmall", "Desertrocksbig",
"Desertrockbig", "Desertrockbig2", "Desertrockbig3"};
};
class grassdryClutter
{
probability[] = {0.0500,0.0100};
names[] = {"grassgreenLong","grassgreenShort"};
};
};
//+++++++++++++++++++++++++++\\
/////////--island simple definition part--\\\\\\\\\
//+++++++++++++++++++++++++++\\
class CfgWorlds
{
class DefaultClutter
{
scaleMin = 0.9;
scaleMax = 1.4;
};
class DefaultWorld;
class BHD_mogadishu : DefaultWorld
{
access = 3;
cutscenes[] = {"DesertIntro1"};
description = "-Mogadishu-";
icon = "";
worldName = "\BHD_mogadishu\BHD_mogadishu.wrp";
pictureMap = "";
pictureShot = "";
plateFormat = "ML$ - #####";
plateLetters = ABCDEGHIKLMNOPRSTVXZ;
longitude = +20; // positive is east
latitude = +30; // positive is south
landGrid = 20;
class Grid //OFP style Aa00 - JJ99
{
//colorGrid[]={0,0,1,1};
//colorGridMap[]={0,0,1,1};
offsetX=0;
offsetY=0;
class Zoom1
{
zoomMax = 0.5;
format = "XY";
formatX = "Aa";
formatY = "00";
stepX = 200;
stepY = 200;
};
class Zoom2
{
zoomMax = 1e030;
format = "XY";
formatX = "A";
formatY = "0";
stepX = 2000;
stepY = 2000;
};
};
startTime = 8:30;
startDate = 07/06/2007;
startWeather = 0.1;
startFog = 0.0;
forecastWeather = 0.3;
forecastFog = 0.0;
seagullPos[] = {1272.84, 150.0, 14035};
centerPosition[] = {2500, 2500, 300};
ilsPosition[] = {2545, 3000};
ilsDirection[] = {0, 0.08, 1};
ilsTaxiIn[] = {
2495, 2725, 2495, 2850, 2508, 2860, 2508,
3000, 2520, 3010, 2545, 3000
};
ilsTaxiOff[] = {2545, 2445, 2520, 2425, 2495, 2445, 2495, 2725};
drawTaxiway = 0;
class ReplaceObjects {};
class Sounds
{
sounds[] = {};
};
class Animation
{
vehicles[] = {};
};
class Lighting : DefaultLighting {};
clutterGrid = 1.11;
clutterDist = 55;
noDetailDist = 40;
fullDetailDist = 5;
minTreesInForestSquare = 3;
minRocksInRockSquare = 4;
//+++++++++++++++++++++++++++\\
/////the real definition of my own clutters\\\\\\
//+++++++++++++++++++++++++++\\
class clutter
{
class GrassGeneral: DefaultClutter //main BI grass clutter
{
model = "ca\plants\clutter_grass_general.p3d";
affectedByWind = 0;
swLighting = 1;
scaleMin = 0.75;
scaleMax = 1.0;
};
class grassdryLong: GrassGeneral //my first definition of grass clutters,
// see the first part, and find the corrispondence of these classes
{
model="BHD_m\vege\grassdry.p3d";
affectedByWind = 0.01;
scaleMin = 1.0;
scaleMax = 1.50;
};
class grassdryShort: GrassGeneral //same goes for this class
{
model="BHD_m\vege\grassdry.p3d";
affectedByWind = 0.001;
scaleMin = 0.70;
scaleMax = 1.0;
};
class grassgreenLong: GrassGeneral //same goes for this class
{
model="BHD_m\vege\grassgreen.p3d";
affectedByWind = 0.5;
scaleMin = 1.0;
scaleMax = 1.50;
};
class grassgreenShort: GrassGeneral //same goes for this class
{
model="BHD_m\vege\grassgreen.p3d";
affectedByWind = 0.05;
scaleMin = 0.70;
scaleMax = 1.00;
};
class Desertrockssmall: GrassGeneral //main BI configuration for rocks
{
model = "ca\rocks\clutter_stone_small.p3d";
affectedByWind = 0;
scaleMin = 0.2;
scaleMax = 0.4;
};
class Desertrockssbig: GrassGeneral //main BI configuration for rocks
{
model = "ca\rocks\stone3_clutter.p3d";
affectedByWind = 0;
scaleMin = 0.2;
scaleMax = 0.4;
};
class Desertrockbig: GrassGeneral //main BI configuration for rocks
{
model = "ca\rocks\stone4_invert.p3d";
affectedByWind = 0;
scaleMin = 0.4;
scaleMax = 0.8;
};
class Desertrockbig2: GrassGeneral //main BI configuration for rocks
{
model = "ca\rocks\stone3a.p3d";
affectedByWind = 0;
scaleMin = 0.2;
scaleMax = 0.4;
};
class Desertrockbig3: GrassGeneral //main BI configuration for rocks
{
model = "ca\rocks\stone4.p3d";
affectedByWind = 0;
scaleMin = 0.2;
scaleMax = 0.4;
};
class Cityrocksmall: GrassGeneral //main BI configuration for rocks
{
model = "ca\rocks\clutter_stone_small.p3d";
affectedByWind = 0;
scaleMin = 0.1;
scaleMax = 0.26;
};
class Cityrockbig: GrassGeneral //main BI configuration for rocks
{
model = "ca\rocks\stone3_clutter.p3d";
affectedByWind = 0;
scaleMin = 0.1;
scaleMax = 0.3;
};
};
};
};
class CfgWorldList
{
class BHD_Mogadishu {};
};
Ok, let's take a look at our Mod config for Mogadishu in descending order:\\
The first part has been dedicated to define my own ground textures, with my own names (city_dust.paa, grassdry.paa and so on) then I defined the class CfgSurfaceCharacters (where you can also change the probability that indicates the amount of objects placed) to add in a second part of the config my own clutters.
So, take a look at the Clutter class part of the config:\\
There you will define your own models to be placed randomly all over the island.
====== Notes ======
Hope it will be a good explanation, for any problems, [[https://www.pmctactical.org/forum/privmsg.php?mode=post&u=2318|send Linker Split a private message]].