Jump to content
Sign in to follow this  
MumboWumbo

Terrain Clutter Issue

Recommended Posts

Hi, first time map maker and poster, so please have mercy.

 

I have been following the PMC Terrain Tutorial, which I find very useful. However, there isn't a super streamlined approach to Clutter and I find Pennyworth's guide sort of hard to follow, but I have done my best. To fill in gaps and files, I have pulled some from The Atlas 

 

Anyway, I have been running into an issue when I am adding clutter to my terrain. After modifying my config with "CfgSurface, Clutter and CfgSurfaceCharacters" I have not been able to find the clutter on bulldozer or in Arma 3. I have also been receiving "no entry 'bin\config.cpp/CfgSurface/CfgSurfaces.rough'. error. When looking for this entry or lack there of) I haven't found anything in my personal config.cpp or the config.cpp within my P drive.

 

As for my config.cpp and project drive: I have already rewrote the config and re-mounted and set up my P Drive, though I may have done either of these incorrectly.

You may note that I have not changed any of the file names for the clutter or clutter group, as I feel that changing these would make things more complicated than they already are and changing them to my own tag didn't solve my problem.  

Here is my config.cpp:

 

Spoiler

class CfgPatches
{
    class mum_rf_terrain
    {
        units[] = {};
        weapons[] = {};
        requiredVersion = 1;
        requiredAddons[] =
        {
            "A3_Map_Stratis"
        };
    };
};
 
class CfgWorldList
{
    class mum_rf_terrain{};
};
 
class CfgWorlds
{
    class Stratis;
    class mum_rf_terrain: Stratis
    {
        cutscenes[] = {};
        description = "Red Fort, New Mexico";
        worldName = "\mum\rf\mum_rf_terrain.wrp";
        author = "Mumbo";
        icon = "";
        previewVideo = "";
        pictureMap = "";
        pictureShot = "";
 
        newRoadsShape = "\mum\rf\data\roads\roads.shp";
 
        centerPosition[] =
        {
            2560, 2560
        };
        ilsDirection[] =
        {
            0, 0.08, 1
        };
        ilsPosition[] =
        {
            0, 0
        };
        ilsTaxiIn[] = {};
        ilsTaxiOff[] = {};
        drawTaxiway = 0;
        class SecondaryAirports{};
        class ReplaceObjects{};
 
        class Sounds
        {
            sounds[] = {};
        };
 
        class Animation
        {
            vehicles[] = {};
        };
 
        minTreesInForestSquare = 2;
        minRocksInRockSquare = 2;
 
        class Subdivision{};
        class Names{};
{
class DefaultClutter;
class Clutter    
{
   class StrBigFallenBranches_pine: DefaultClutter
    {
        model = "A3\Plants_F\Clutter\c_bigFallenBranches_pine.p3d";
        affectedByWind = 0.0;
        swLighting = "false";
        scaleMin = 0.3;
        scaleMax = 0.7;
    };
   class StrBigFallenBranches_pine02: DefaultClutter
    {
        model = "A3\Plants_F\Clutter\c_bigFallenBranches_pine02.p3d";
        affectedByWind = 0.0;
        swLighting = "false";
        scaleMin = 0.3;
        scaleMax = 0.7;
    };
   class StrBigFallenBranches_pine03: DefaultClutter
    {
        model = "A3\Plants_F\Clutter\c_bigFallenBranches_pine03.p3d";
        affectedByWind = 0.0;
        swLighting = "false";
        scaleMin = 0.3;
        scaleMax = 0.7;
    };
   class StrGrassGreenGroup: DefaultClutter
    {
        model = "A3\plants_f\Clutter\c_StrGrassGreen_group.p3d";
        affectedByWind = 0.6;
        swLighting = "true";
        scaleMin = 0.7;
        scaleMax = 1.0;
    };
   class StrGrassDry: DefaultClutter
    {
        model = "A3\plants_f\Clutter\c_StrGrassDry.p3d";
        affectedByWind = 0.5;
        swLighting = "true";
        scaleMin = 0.8;
        scaleMax = 1.2;
    };
   class StrGrassDryGroup: DefaultClutter
    {
        model = "A3\plants_f\Clutter\c_StrGrassDry_group.p3d";
        affectedByWind = 0.65;
        swLighting = "true";
        scaleMin = 0.65;
        scaleMax = 1.0;
    };
   class StrGrassDryMediumGroup: DefaultClutter
    {
        model = "A3\plants_f\Clutter\c_StrGrassDryMedium_group.p3d";
        affectedByWind = 0.7;
        swLighting = "true";
        scaleMin = 0.8;
        scaleMax = 1.0;
    };
   class StrWeedBrownTallGroup: DefaultClutter
    {
        model = "A3\plants_f\Clutter\c_StrWeedBrownTall_group.p3d";
        affectedByWind = 0.3;
        swLighting = "true";
        scaleMin = 0.9;
        scaleMax = 1.25;
    };
   class StrWeedGreenTall: DefaultClutter
    {
        model = "A3\plants_f\Clutter\c_StrWeedGreenTall.p3d";
        affectedByWind = 0.3;
        swLighting = "true";
        scaleMin = 0.8;
        scaleMax = 1.2;
    };
   class StrPlantMullein: DefaultClutter
    {
        model = "A3\plants_f\Clutter\c_StrPlantMullein.p3d";
        affectedByWind = 0.35;
        swLighting = "true";
        scaleMin = 0.7;
        scaleMax = 1.15;
    };
   class StrThistleYellowShrub: DefaultClutter
    {
        model = "A3\plants_f\Clutter\c_StrThistleYellowShrub.p3d";
        affectedByWind = 0.2;
        swLighting = "true";
        scaleMin = 0.7;
        scaleMax = 1.1;
    };
   class StrThistleThornGreen: DefaultClutter
    {
        model = "A3\plants_f\Clutter\c_Thistle_Thorn_Green.p3d";
        affectedByWind = 0.3;
        swLighting = "false";
        scaleMin = 0.3;
        scaleMax = 1.0;
    };
   class StrThistleThornGreenSmall: DefaultClutter
    {
        model = "A3\plants_f\Clutter\c_Thistle_Thorn_Green.p3d";
        affectedByWind = 0.25;
        swLighting = "false";
        scaleMin = 0.4;
        scaleMax = 0.7;
    };
   class StrFlowerLowYellow2: DefaultClutter
    {
        model = "A3\plants_f\Clutter\c_Flower_Low_Yellow2.p3d";
        affectedByWind = 0.4;
        swLighting = "true";
        scaleMin = 0.6;
        scaleMax = 1.0;
    };

 };
        
class CfgSurfaces 
{
    class Default {};
    class mum_rf_dirt_Surface : Default
    {    
         files = "mum_rf_dirt_*";
         rough = 0.09;
         maxSpeedCoef = 0.9;
         dust = 0.5;
         soundEnviron = "dirt";
         character = "Empty";
         soundHit = "soft_ground";
         lucidity = 1;
         grassCover = 0.03;
    };
    class mum_rf_dry_grass_Surface : Default
    {    
         files = "mum_rf_dry_grass_*";
         rough = 0.08;
         maxSpeedCoef = 0.9;
         dust = 0.75;
         soundEnviron = "drygrass";
         character = "mum_rf_dry_grass_Character";
         soundHit = "soft_ground";
         lucidity = 2;
         grassCover = 0.1;
    };
    class mum_rf_forest_pine_Surface : Default
    {    
         files = "mum_rf_forest_pine_*";
         rough = 0.12;
         maxSpeedCoef = 0.8;
         dust = 0.4;
         soundEnviron = "drygrass";
         character = "mum_rf_forest_pine_Character";
         soundHit = "soft_ground";
         lucidity = 3.5;
         grassCover = 0.04;
    };
    class mum_rf_grass_short_Surface : Default
    {    
         files = "mum_rf_grass_green_*";
         rough = 0.08;
         maxSpeedCoef = 0.9;
         dust = 0.15;
         soundEnviron = "grass";
         character = "mum_rf_green_grass_Character";
         soundHit = "soft_ground";
         lucidity = 4;
         grassCover = 0.05;
    };
    class mum_rf_soil_Surface : Default
    {    
         files = "mum_rf_soil_*";
         rough = 0.09;
         maxSpeedCoef = 0.9;
         dust = 0.5;
         soundEnviron = "dirt";
         character = "Empty";
         soundHit = "hard_ground";
         lucidity = 1;
         grassCover = 0.0;
    };
};
class CfgSurfaceCharacters
{
        class mum_rf_forest_pine_Character
    {
        probability[] = {0.05,0.012,0.01,0.1,0.05};
        names[] = {"StrigFallenBranches_pine","StrBigFallenBranches_pine02","StrBigFallenBranches_pine03","StrGrassDryGroup","StrGrassGreenGroup"};
    };
    class mum_rf_grass_short_Character
      {
        probability[] = {0.92,0.07};
        names[] = {"StrGrassGreenGroup","StrFlowerLowYellow2"};
      };
    class mum_rf_dry_grass_Character
      {
        probability[] = {0.21,0.35,0.21,0.09,0.06,0.02};
        names[] = {"StrGrassDryGroup","StrGrassDryMediumgroup","StrWeedBrownTallGroup","StrWeedGreenTall","StrThistleYellowShrub","StrPlantMullein"};
      };
};

 

I really appreciate any help, as I feel like my issue is related to my smooth ass brain.

Share this post


Link to post
Share on other sites

Make sure your rvmat's and textures are named the same, like this

mum_rf_grass_green.rvmat

mum_rf_grass_green_co.paa

mum_rf_grass_green_nopx.paa

 

Make sure the paths (lowercase!) in the rvmat point to your textures (paa) and not A3 textures in map_data. If you have been using map_data files, after changing rvmat, you will need to export mask from TB again to update layers rvmat's

Then surfaces use

files = "mum_rf_grass_green*"; (lowercase!)

always best to remove that _ before *

 

Quote

You may note that I have not changed any of the file names for the clutter or clutter group, as I feel that changing these would make things more complicated

 

wrong, very very wrong! lol

those are default names and are already used by Altis and Tanoa etc. Tag everything you add, clutter and textures etc, this makes stuff unique to YOUR map, so stops conflicts.

 

For config.cpp, take a look at the config in Atlas guide and you will see cfgClutter.hpp is in your cfgworlds, but cfgSurfaces.hpp goes right at the end of the file

 

Also the Arma Discord is a lot more active then the forums for terrain making.

Share this post


Link to post
Share on other sites

Thanks for the information, I made a few changes to no avail. I am still getting the same error and no clutter. Am I supposed to add CfgSurfaceCharacters into my config.cpp or is that for a3 configs? I was a bit confused as to where to make changes within the P drive and where to place each config section, Is it absolutely necessary to have .hpp links, or can I place these sections within my original config? I understand that they link outside information into the config to keep it trim.

 

Share this post


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

Thanks for the information, I made a few changes to no avail. I am still getting the same error and no clutter. Am I supposed to add CfgSurfaceCharacters into my config.cpp or is that for a3 configs? I was a bit confused as to where to make changes within the P drive and where to place each config section, Is it absolutely necessary to have .hpp links, or can I place these sections within my original config? I understand that they link outside information into the config to keep it trim.

 

 

You don't need to add it to buldozer, I never bother tbh.

Just edit your config.cpp for your map. You can do config either way

 

You are using pboproject to pack the map right?

Share this post


Link to post
Share on other sites

Yes, I'm using all of the tools called for in PMC's tutorial. I also checked for the rvmat formatting issues you talked about, but couldn't see any issues. My textures and surfaces  appear where they need to be. I will give the map a try in a bit to see if the p drive is till wonky.

Share this post


Link to post
Share on other sites

Okay, I got into a dark place, drank a little too much and replaced my config with the one in the Atlas. From there I renamed all of my config tags and got the clutter to work in Arma 3! Now I just have to add a new clutter group and outside files for a desert. Thanks for the help RoF.

Share this post


Link to post
Share on other sites

Okay, two steps forward ones step back. I have added two entries for some rocks for desert clutter and am now running into another issue when I attempt to pack my files in pboProject

Quote

In File mum\RF\cfgClutter.hpp: circa Line 4 rap: missing inheritence class(es)
 

 I had this issue before I rewrote everything, now its back. Here is my config, clutter and surface files:

Spoiler

#define _ARMA_

//Class config.bin{
class CfgPatches
{
 class mum_rf_terrain
 {
  units[] = {"mum_rf_terrain"};
  weapons[] = {};
  requiredVersion = 1.0;
  requiredaddons[]={"A3_Map_Stratis"};
  version = "25/01/2015";
  fileName = "RF.pbo";
  author = "Mumbo";
 };
};
class CfgWorlds
{
 class CAWorld;
 class Stratis: CAWorld
 {
  class Grid;
  class DefaultClutter;
 };
 class mum_rf_terrain: Stratis
 {
  cutscenes[] = {};
  author = "Mumbo";
  description = "Red Fort, New Mexico";
  pictureMap = ""; 
  worldName = "mum\rf\mum_rf_terrain.wrp";
  startTime = "11:00";
  startDate = "05/03/2001";
  startWeather = 0.2;
  startFog = 0.0;
  forecastWeather = 0.6;
  forecastFog = 0.0;
  centerPosition[] = {1024,1024,500};
  seagullPos[] = {1024,1024,500};
  longitude = 65;
  latitude = -34;
  elevationOffset = 5;
  envTexture = "";
  minTreesInForestSquare = 2;
  minRocksInRockSquare = 2;
  newRoadsShape = "\mum\rf\data\roads\roads.shp";
  ilsPosition[] = {1024,1024};
  ilsDirection[] = {0.5075,0.08,-0.8616};
  ilsTaxiIn[] = {};
  ilsTaxiOff[] = {};
  drawTaxiway = 0;
 class SecondaryAirports {};
class Sea
  {
   seaTexture = "a3\data_f\seatexture_co.paa";
   seaMaterial = "#water";
   shoreMaterial = "#shore";
   shoreFoamMaterial = "#shorefoam";
   shoreWetMaterial = "#shorewet";
   WaterMapScale = 20;
   WaterGrid = 50;
   MaxTide = 0;
   MaxWave = 0;
   SeaWaveXScale = "2.0/50";
   SeaWaveZScale = "1.0/50";
   SeaWaveHScale = 2.0;
   SeaWaveXDuration = 5000;
   SeaWaveZDuration = 10000;
  };
 };
#include "cfgClutter.hpp"
        class Names
        {
            #include "mum_rf_terrain.hpp"
        };
 };
};
#include "cfgSurfaces.hpp"
};
};
 

Spoiler

class Clutter    
{
   class mum_rf_BigFallenBranches_pine: DefaultClutter
    {
        model = "A3\Plants_F\Clutter\c_bigFallenBranches_pine.p3d";
        affectedByWind = 0.0;
        swLighting = "false";
        scaleMin = 0.3;
        scaleMax = 0.7;
    };
   class mum_rf_BigFallenBranches_pine02: DefaultClutter
    {
        model = "A3\Plants_F\Clutter\c_bigFallenBranches_pine02.p3d";
        affectedByWind = 0.0;
        swLighting = "false";
        scaleMin = 0.3;
        scaleMax = 0.7;
    };
   class mum_rf_BigFallenBranches_pine03: DefaultClutter
    {
        model = "A3\Plants_F\Clutter\c_bigFallenBranches_pine03.p3d";
        affectedByWind = 0.0;
        swLighting = "false";
        scaleMin = 0.3;
        scaleMax = 0.7;
    };
   class mum_rf_GrassGreenGroup: DefaultClutter
    {
        model = "A3\plants_f\Clutter\c_StrGrassGreen_group.p3d";
        affectedByWind = 0.6;
        swLighting = "true";
        scaleMin = 0.7;
        scaleMax = 1.0;
    };
   class mum_rf_GrassDry: DefaultClutter
    {
        model = "A3\plants_f\Clutter\c_StrGrassDry.p3d";
        affectedByWind = 0.5;
        swLighting = "true";
        scaleMin = 0.8;
        scaleMax = 1.2;
    };
   class mum_rf_GrassDryGroup: DefaultClutter
    {
        model = "A3\plants_f\Clutter\c_StrGrassDry_group.p3d";
        affectedByWind = 0.65;
        swLighting = "true";
        scaleMin = 0.65;
        scaleMax = 1.0;
    };
   class mum_rf_GrassDryMediumGroup: DefaultClutter
    {
        model = "A3\plants_f\Clutter\c_StrGrassDryMedium_group.p3d";
        affectedByWind = 0.7;
        swLighting = "true";
        scaleMin = 0.8;
        scaleMax = 1.0;
    };
   class mum_rf_WeedBrownTallGroup: DefaultClutter
    {
        model = "A3\plants_f\Clutter\c_StrWeedBrownTall_group.p3d";
        affectedByWind = 0.3;
        swLighting = "true";
        scaleMin = 0.9;
        scaleMax = 1.25;
    };
   class mum_rf_WeedGreenTall: DefaultClutter
    {
        model = "A3\plants_f\Clutter\c_StrWeedGreenTall.p3d";
        affectedByWind = 0.3;
        swLighting = "true";
        scaleMin = 0.8;
        scaleMax = 1.2;
    };
   class mum_rf_PlantMullein: DefaultClutter
    {
        model = "A3\plants_f\Clutter\c_StrPlantMullein.p3d";
        affectedByWind = 0.35;
        swLighting = "true";
        scaleMin = 0.7;
        scaleMax = 1.15;
    };
   class mum_rf_ThistleYellowShrub: DefaultClutter
    {
        model = "A3\plants_f\Clutter\c_StrThistleYellowShrub.p3d";
        affectedByWind = 0.2;
        swLighting = "true";
        scaleMin = 0.7;
        scaleMax = 1.1;
    };
   class mum_rf_ThistleThornGreen: DefaultClutter
    {
        model = "A3\plants_f\Clutter\c_Thistle_Thorn_Green.p3d";
        affectedByWind = 0.3;
        swLighting = "false";
        scaleMin = 0.3;
        scaleMax = 1.0;
    };
   class mum_rf_ThistleThornGreenSmall: DefaultClutter
    {
        model = "A3\plants_f\Clutter\c_Thistle_Thorn_Green.p3d";
        affectedByWind = 0.25;
        swLighting = "false";
        scaleMin = 0.4;
        scaleMax = 0.7;
    };
   class mum_rf_FlowerLowYellow2: DefaultClutter
    {
        model = "A3\plants_f\Clutter\c_Flower_Low_Yellow2.p3d";
        affectedByWind = 0.4;
        swLighting = "true";
        scaleMin = 0.6;
        scaleMax = 1.0;
    };
   class mum_rf_c_rock_stones: DefaultClutter
    {    
        model ="A3\vegetation_f_exp\clutter\cliff\c_rock_stones.p3d";
        affectedByWind = 0.0;
        swLighting = "true";
        scaleMin = 0.6;
        scaleMax = 1.0;
     };
    class mum_rf_c_red_dirt_small_stones: DefaultClutter
    {    
        model ="A3\vegetation_f_exp\clutter\red_dirt\c_red_dirt_small_stones.p3d";
        affectedByWind = 0.0;
        swLighting = "true";
        scaleMin = 0.6;
        scaleMax = 1.0;
     };
};

Spoiler

class CfgSurfaces 
{
    class Default {};
    class rf_desert_Surface : Default
    {    
         files = "rf_desert*";
         rough = 0.01;
         maxSpeedCoef = 0.9;
         dust = 0.90;
         soundEnviron = "sand";
         character = "mum_rf_desert_Character";
         soundHit = "soft_ground";
         lucidity = 1;
         grassCover = 0.00;
    };
    class rf_dry_grass_Surface : Default
    {    
         files = "rf_dry_grass*";
         rough = 0.08;
         maxSpeedCoef = 0.9;
         dust = 0.75;
         soundEnviron = "drygrass";
         character = "mum_rf_dry_grass_Character";
         soundHit = "soft_ground";
         lucidity = 2;
         grassCover = 0.1;
    };
    class mum_rf_forest_pine_Surface : Default
    {    
         files = "mum_rf_forest_pine*";
         rough = 0.12;
         maxSpeedCoef = 0.8;
         dust = 0.4;
         soundEnviron = "drygrass";
         character = "mum_rf_forest_pine_Character";
         soundHit = "soft_ground";
         lucidity = 3.5;
         grassCover = 0.04;
    };
    class rf_grass_short_Surface : Default
    {    
         files = "rf_grass_short*";
         rough = 0.08;
         maxSpeedCoef = 0.9;
         dust = 0.15;
         soundEnviron = "grass";
         character = "mum_rf_grass_short_Character";
         soundHit = "soft_ground";
         lucidity = 4;
         grassCover = 0.05;
    };
    class mum_rf_soil_Surface : Default
    {    
         files = "mum_rf_soil*";
         rough = 0.09;
         maxSpeedCoef = 0.9;
         dust = 0.5;
         soundEnviron = "dirt";
         character = "Empty";
         soundHit = "hard_ground";
         lucidity = 1;
         grassCover = 0.0;
    };
};

class CfgSurfaceCharacters
{
        class mum_rf_desert_Character
    {
        probability[] = {0.10,0.45,0.45};
        names[] = {"mum_rf_GrassDryGroup","mum_rf_c_rock_stones","mum_rf_c_red_dirt_small_stones"};
    };
    class mum_rf_grass_short_Character
      {
        probability[] = {0.95,0.05};
        names[] = {"mum_rf_GrassGreenGroup","mum_rf_FlowerLowYellow2"};
      };
    class mum_rf_dry_grass_Character
      {
        probability[] = {0.21,0.35,0.21,0.09,0.06,0.02};
        names[] = {"mum_rf_GrassDryGroup","mum_rf_GrassDryMediumgroup","mum_rf_WeedBrownTallGroup","mum_rf_WeedGreenTall","mum_rf_ThistleYellowShrub","mum_rf_PlantMullein"};
      };
};
 

I also have an issue with Stratis Map Markers being placed on my map. I haven''t gotten to this step yet, so I'm not super worried about it.

 

Thanks for any help

Share this post


Link to post
Share on other sites

For anyone coming across this post, the issue was 2  }; at the end of class Sea

 

class Sea
  {
   seaTexture = "a3\data_f\seatexture_co.paa";
   seaMaterial = "#water";
   shoreMaterial = "#shore";
   shoreFoamMaterial = "#shorefoam";
   shoreWetMaterial = "#shorewet";
   WaterMapScale = 20;
   WaterGrid = 50;
   MaxTide = 0;
   MaxWave = 0;
   SeaWaveXScale = "2.0/50";
   SeaWaveZScale = "1.0/50";
   SeaWaveHScale = 2.0;
   SeaWaveXDuration = 5000;
   SeaWaveZDuration = 10000;
  };
 }; <-- this

 

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
Sign in to follow this  

×