Table of Contents
ArmA 1 Grass Tutorial
ArmA 1 Forum, ArmA 1 Home, ArmA 1 Config, ArmA 1 Tools, ArmA 1 File Formats, ArmA 1 Missions, ArmA 1 3D Modeling, ArmA 1 Terrain, ArmA 1 Texturing, ArmA 1 Scripting
ArmA 1 aka Armed Assault (ArmA)
Grass Tutorial by Linker Split
Create a little 3x3m grass block, something like this:
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, send Linker Split a private message.