Jump to content
Sign in to follow this  
opteryx

Clutter not working.. can't spot error in cpp

Recommended Posts

Hey, I'm making a map and not getting any errors when packing or starting ArmA, but there's only one p3d model showing up on the surface as clutter (clutter_grass_desert.p3d).

I'm no config wizard so I can't spot any errors.

Also, the Grass overlay which I talked about in THIS thread is working for no apparent reason.

huh.gif

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">/*

Generated by `Laza`(c)Flea 2007

mailto: flea_jump`at`mail.ru

*/

class CfgPatches

{

class ramira

{

units[] = {

"ramira"

};

worlds[] = {

"ramira"

};

requiredVersion = 0.100000;

requiredAddons[] = {

"CAData", "CABuildings", "CAMisc", "CAPlants", "CARoads", "CARocks"

};

};

};

class DefaultLighting;

class DefaultLighting_CA : DefaultLighting

{

};

class CfgSurfaces

{

class Default

{

};

class water

{

};

class grass1 : Default

{

access = 2;

files = "d2trava_*";

rough = 0.010000;

dust = 0.800000;

soundEnviron = "grass";

character = "grass1Clutter";

};

class grass2 : Default

{

access = 2;

files = "d2trava_*";

rough = 0.010000;

dust = 0.800000;

soundEnviron = "grass";

character = "grass2Clutter";

};

class sand1 : Default

{

access = 2;

files = "d2mesto_*";

rough = 0.010000;

dust = 0.800000;

soundEnviron = "sand";

character = "sand1Clutter";

};

class sand2: Default

{

access = 2;

files = "d2pisek_*";

rough = 0.010000;

dust = 0.800000;

soundEnviron = "sand";

character = "sand2Clutter";

};

};

class CfgSurfaceCharacters

{

class grass1Clutter

{

probability[] = {

0.980000

};

names[] = {

"grass1Clutter"

};

};

class grass2Clutter

{

probability[] = {

0.540000

};

names[] = {

"grass2Clutter"

};

};

class sand1Clutter

{

probability[] = {

1.990000

};

names[] = {

"sand1Clutter"

};

};

class sand2Clutter

{

probability[] = {

1.560000

};

names[] = {

"sand2Clutter"

};

};

};

class CfgWorlds

{

class DefaultClutter

{

scaleMin = 0.900000;

scaleMax = 1.400000;

};

class DefaultWorld;

class Intro : DefaultWorld

{

};

class ramira : Intro

{

access = 3;

cutscenes[] = {

""

};

description = "Ramira";

icon = "";

worldName = "\ramira\ramira.wrp";

pictureMap = "";

pictureShot = "";

plateFormat = "ML$ - #####";

plateLetters = "ABCDEGHIKLMNOPRSTVXZ";

longitude = -40.020000;

latitude = -39.950001;

class Grid

{

offsetX = 0;

offsetY = 0;

class Zoom0

{

zoomMax = 0.200000;

format = "XY";

formatX = "Aa";

formatY = "00";

stepX = 100;

stepY = 100;

};

class Zoom1

{

zoomMax = 1.000000;

format = "XY";

formatX = "A-";

formatY = "0-";

stepX = 1000;

stepY = 1000;

};

};

startTime = "06:00";

startDate = "07/07/2007";

startWeather = 0.100000;

startFog = 0.000000;

forecastWeather = 0.300000;

forecastFog = 0.000000;

seagullPos[] = {

1272.839966, 150.000000, 14035

};

centerPosition[] = {

2500, 2500, 300

};

ilsPosition[] = {

4292, 4773

};

ilsDirection[] = {

0, 0, 1

};

ilsTaxiIn[] = { };

ilsTaxiOff[] = { };

drawTaxiway = "false";

class ReplaceObjects

{

};

class Sounds

{

sounds[] = { };

};

class Animation

{

vehicles[] = { };

};

class Lighting : DefaultLighting

{

};

clutterGrid = 1.110000;

clutterDist = 55;

noDetailDist = 40;

fullDetailDist = 5;

minTreesInForestSquare = 3;

minRocksInRockSquare = 4;

class clutter

{

class grass1Clutter : DefaultClutter

{

model = "ca\hotfix\clutterfix_grass_long.p3d";

affectedByWind = 0.300000;

swLighting = 1;

scaleMin = 0.900000;

scaleMax = 1.300000;

};

class grass2Clutter : DefaultClutter

{

model = "ca\plants\clutter_grass_desert.p3d";

affectedByWind = 0.300000;

swLighting = 1;

scaleMin = 0.30000;

scaleMax = 0.9700000;

};

class sand1Clutter : DefaultClutter

{

model = "ca\rocks\clutter_stone_small.p3d";

affectedByWind = 0.200000;

scaleMin = 0.9300000;

scaleMax = 1.200000;

};

class sand2Clutter : DefaultClutter

{

model = "ca\rocks\clutter_stone_small.p3d";

affectedByWind = 0.200000;

scaleMin = 0.500000;

scaleMax = 0.900000;

};

class GrassGeneral : DefaultClutter

{

model = "ca\plants\clutter_grass_general.p3d";

affectedByWind = 0.300000;

swLighting = 1;

scaleMin = 0.750000;

scaleMax = 1.000000;

};

};

class Subdivision

{

class Fractal

{

rougness = 5;

maxRoad = 0.020000;

maxTrack = 0.500000;

maxSlopeFactor = 0.050000;

};

class WhiteNoise

{

rougness = 2;

maxRoad = 0.010000;

maxTrack = 0.050000;

maxSlopeFactor = 0.002500;

};

minY = 0.000000;

minSlope = 0.020000;

};

class Ambient

{

class BigBirds

{

radius = 300;

cost = "((1 + forest + trees) - ((2 * rain)) - houses) * (1 - night) * (1 - sea)";

class Species

{

class Hawk

{

probability = 0.200000;

cost = 1;

};

};

};

class Birds

{

radius = 170;

cost = "(1 - night) * ((1 + (3 * sea)) - (2 * rain))";

class Species

{

class Seagull

{

probability = 0.200000;

cost = 1;

};

};

};

class BigInsects

{

radius = 20;

cost = "(5 - (2 * houses)) * (1 - night) * (1 - rain) * (1 - sea) * (1 - windy)";

class Species

{

class ButterFly

{

probability = "0.4 + (meadow * 0.5) - (forest * 0.4)";

cost = 1;

};

};

};

class WindClutter

{

radius = 10;

cost = "((20 - 5 * rain) * (3 * (windy factor [0.2, 0.5]))) * (1 - sea)";

class Species

{

class FxWindGrass1

{

probability = "0.4 - 0.2 * hills - 0.2 * trees";

cost = 1;

};

class FxWindGrass2

{

probability = "0.4 - 0.2 * hills - 0.2 * trees";

cost = 1;

};

class FxWindRock1

{

probability = "0.4 * hills";

cost = 1;

};

class FxWindLeaf1

{

probability = "0.2 * trees";

cost = 1;

};

class FxWindLeaf2

{

probability = "0.1 * trees + 0.2";

cost = 1;

};

class FxWindLeaf3

{

probability = "0.1 * trees";

cost = 1;

};

};

};

class NoWindClutter

{

radius = 15;

cost = "(20 * (windy factor [0.1, 0.2])) * meadow * (1 - rain) * (1 - sea) * (1 - forest) * (1 - houses)";

class Species

{

class FxWindPollen1

{

probability = 1;

cost = 1;

};

};

};

class SmallInsects

{

radius = 3;

cost = "(12 - 8 * hills) * (1 - night) * (1 - rain) * (1 - sea) * (1 - windy)";

class Species

{

class HouseFly

{

probability = "deadBody + (1 - deadBody) * (0.5 - forest * 0.1 - meadow * 0.2)";

cost = 1;

};

class HoneyBee

{

probability = "(1 - deadBody) * (0.5 - forest * 0.1 + meadow * 0.2)";

cost = 1;

};

class Mosquito

{

probability = "(1 - deadBody) * (0.2 * forest)";

cost = 1;

};

};

};

class NightInsects

{

radius = 3;

cost = "(9 - 8 * hills) * night * (1 - rain) * (1 - sea) * (1 - windy)";

class Species

{

class Mosquito

{

probability = 1;

cost = 1;

};

};

};

};

class Names

{

class Veg_1

{

name = "";

position[] = {

356, 333

};

type = "vegetationBroadleaf";

radiusA = 50;

radiusB = 50;

};

};

};

};

class CfgWorldList

{

class ramira

{

};

};

See anything wrong?

Share this post


Link to post
Share on other sites

I'm no config wizard either smile_o.gif but here's my own config for you to examine that has working custom clutter:

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">#define ReadAndWrite 0

#define ReadAndCreate 1

#define ReadOnly 2

#define ReadOnlyVerified 3

class CfgPatches {

class SavineVode {

units[] = {};

worlds[] = {SavineVode};

requiredVersion = 0.1;

requiredAddons[] = {"CAData", "CABuildings", "CAMisc", "CAPlants", "CARoads", "CARocks"};

};

};

class DefaultLighting; // External class reference

class DefaultLighting_CA : DefaultLighting {};

class cfgSurfaces

{

class Default {};

class LowGrass : Default

{

access = 2;

files = "dmlowgrass_*";

rough = 0.1;

dust = 0.2;

soundEnviron = "drygrass";

character = "LowGrassClutter";

};

class HighGrass : Default

{

access = 2;

files = "dmhighgrass_*";

rough = 0.1;

dust = 0.2;

soundEnviron = "drygrass";

character = "HighGrassClutter";

};

class NoPlants : Default

{

access = 2;

files = "dmnoplants_*";

rough = 0.1;

dust = 0.2;

soundEnviron = "drygrass";

character = "RocksClutter";

};

class ForestFloor : Default

{

access = 2;

files = "dmforestfloor_*";

rough = 0.1;

dust = 0.2;

soundEnviron = "forest";

character = "ForestFloorClutter";

};

class ForestGrass : Default

{

access = 2;

files = "dmforestfloor_*";

rough = 0.1;

dust = 0.2;

soundEnviron = "drygrass";

character = "ForestGrassClutter";

};

class Stream : Default

{

access = 2;

files = "dmstream_*";

rough = 0.1;

dust = 0.2;

soundEnviron = "drygrass";

character = "StreamClutter";

};

};

class cfgSurfaceCharacters

{

/*

class LowGrassClutter

{

probability[] = {0.54,0.14};

names[] = {GrassLong_Short,SmallRocks};

};

*/

class LowGrassClutter

{

probability[] = {0.54,0.08};

names[] = {GrassLong_short,SmallRocks};

};

class HighGrassClutter

{

probability[] = {0.75,0.15, 0.04};

names[] = {GrassLong,SmallRocks,BrokenBranches};

};

class RocksClutter

{

probability[] = {0.14};

names[] = {Rocks};

};

class ForestFloorClutter

{

probability[] = {0.84,0.1,0.5};

names[] = {GrassLong_short,GrassFlowers,ForestFern};

};

class ForestGrassClutter

{

probability[] = {0.99,0.2};

names[] = {GrassForest,SmallRocks};

};

class StreamClutter

{

probability[] = {0.2,0.2,0.06};

names[] = {StreamPlant1,Rocks,BrokenBranches};

};

};

class CfgWorlds {

class DefaultClutter {

scaleMin = 0.9;

scaleMax = 1.4;

};

class DefaultWorld; // External class reference

class Intro : DefaultWorld {};

class SavineVode : Intro {

access = 3;

cutscenes[] = {"DesertIntro1"};

description = "SavineVode";

icon = "";

worldName = "\SavineVode\SavineVode.wrp";

pictureMap = "";

pictureShot = "";

plateFormat = "ML$ - #####";

plateLetters = ABCDEGHIKLMNOPRSTVXZ;

longitude = 20; // positive is east

latitude = -42; // positive is south

//New 6-figure grid system

class Grid {

offsetX = 245250;

offsetY = 799400;

class Zoom1 {

zoomMax = 0.2;

format = "XY";

formatX = "000";

formatY = "000";

stepX = 100;

stepY = -100;

};

class Zoom2 {

zoomMax = 1e+030;

format = "XY";

formatX = "00";

formatY = "00";

stepX = 1000;

stepY = -1000;

};

};

/*

class Grid //OFP style Aa00 - JJ99

{

//colorGrid[]={0,0,1,1};

//colorGridMap[]={0,0,1,1};

offsetX=0;

offsetY=0;

class Zoom0

{

zoomMax=0.2;

format="XY";

formatX="Aa";

formatY="00";

stepX=256;

stepY=256;

};

class Zoom1

{

zoomMax=1.0;

format="XY";

formatX="A-";

formatY="0-";

stepX=2560;

stepY=2560;

};

};

*/

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;

class clutter {

class GrassGeneral : DefaultClutter {

model = "ca\plants\clutter_grass_general.p3d";

affectedByWind = 0.3;

swLighting = 1;

scaleMin = 0.75;

scaleMax = 1.0;

};

class StreamPlant1 : GrassGeneral {

model = "ca\plants\DD_bush02.p3d";

scaleMin = 0.15;

scaleMax = 0.25;

};

class GrassFlowers : GrassGeneral {

model = "ca\plants\clutter_grass_flowers.p3d";

};

class GrassLong : GrassGeneral {

model = "ca\plants\clutter_grass_long.p3d";

affectedByWind = 0.6;

scaleMin = 0.6;

scaleMax = 1.1;

};

class GrassLong_Short : GrassGeneral {

model = "ca\plants\clutter_grass_long.p3d";

affectedByWind = 0.6;

scaleMin = 0.5;

scaleMax = 0.7;

};

class GrassForest : GrassGeneral {

model = "ca\plants\clutter_trava_dlouha.p3d";

affectedByWind = 0.6;

scaleMin = 0.6;

scaleMax = 1.1;

};

class GrassSevenbeauty : GrassGeneral {

model = "ca\plants\clutter_grass_sevenbaeuty.p3d";

affectedByWind = 0.2;

scaleMin = 0.7;

scaleMax = 1.1;

};

class GrassYellow : GrassGeneral {

model = "ca\plants\clutter_grass_yellow.p3d";

affectedByWind = 0.2;

scaleMin = 0.7;

scaleMax = 1.1;

};

class GrassDesert : GrassGeneral {

model = "ca\plants\clutter_grass_desert.p3d";

};

class ForestFern : GrassGeneral {

model = "ca\plants\clutter_forest_fern.p3d";

affectedByWind = 0.1;

scaleMin = 0.9;

scaleMax = 1.3;

};

class SmallRocks : GrassGeneral {

model = "ca\rocks\clutter_stone_small.p3d";

affectedByWind = 0;

scaleMin = 0.9;

scaleMax = 1.1;

};

class Rocks : GrassGeneral {

model = "ca\rocks\clutter_stone_small.p3d";

affectedByWind = 0;

scaleMin = 2.0;

scaleMax = 2.5;

};

class BrokenBranches : GrassGeneral {

model = "ca\plants\vetev_3_borovice.p3d";

affectedByWind = 0;

scaleMin = 0.9;

scaleMax = 1.1;

};

class FlowersColor : GrassGeneral {

model = "ca\plants\clutter_smetanka.p3d";

};

class FlowersWhite : GrassGeneral {

model = "ca\plants\clutter_white_flower.p3d";

};

class MushroomsHorcak : GrassGeneral {

model = "ca\plants\clutter_horcak.p3d";

affectedByWind = 0;

scaleMin = 0.85;

scaleMax = 1.25;

};

class MushroomsPrasivka : MushroomsHorcak {

model = "ca\plants\clutter_prasivky.p3d";

};

class MushroomsBabka : MushroomsHorcak {

model = "ca\plants\clutter_babka.p3d";

};

class MushroomsMuchomurka : MushroomsHorcak {

model = "ca\plants\clutter_muchomurka.p3d";

};

};

class Subdivision {

class Fractal {

rougness = 5;

maxRoad = 0.02;

maxTrack = 0.5;

maxSlopeFactor = 0.05;

};

class WhiteNoise {

rougness = 2;

maxRoad = 0.01;

maxTrack = 0.05;

maxSlopeFactor = 0.0025;

};

minY = 0.0;

minSlope = 0.02;

};

class Ambient {

class BigBirds {

radius = 300;

cost = "((1 + forest + trees) - ((2 * rain)) - houses) * (1 - night) * (1 - sea)";

class Species {

class Hawk {

probability = 0.2;

cost = 1;

};

};

};

class Birds {

radius = 170;

cost = "(1 - night) * ((1 + (3 * sea)) - (2 * rain))";

class Species {

class Seagull {

probability = 0.2;

cost = 1;

};

};

};

class BigInsects {

radius = 20;

cost = "(5 - (2 * houses)) * (1 - night) * (1 - rain) * (1 - sea) * (1 - windy)";

class Species {

class DragonFly {

probability = "0.6 - (meadow * 0.5) + (forest * 0.4)";

cost = 1;

};

class ButterFly {

probability = "0.4 + (meadow * 0.5) - (forest * 0.4)";

cost = 1;

};

};

};

class BigInsectsAquatic {

radius = 20;

cost = "(3 * sea) * (1 - night) * (1 - rain) * (1 - windy)";

class Species {

class DragonFly {

probability = 1;

cost = 1;

};

};

};

class WindClutter {

radius = 10;

cost = "((20 - 5 * rain) * (3 * (windy factor [0.2, 0.5]))) * (1 - sea)";

class Species {

class FxWindGrass1 {

probability = "0.4 - 0.2 * hills - 0.2 * trees";

cost = 1;

};

class FxWindGrass2 {

probability = "0.4 - 0.2 * hills - 0.2 * trees";

cost = 1;

};

class FxWindRock1 {

probability = "0.4 * hills";

cost = 1;

};

class FxWindLeaf1 {

probability = "0.2 * trees";

cost = 1;

};

class FxWindLeaf2 {

probability = "0.1 * trees + 0.2";

cost = 1;

};

class FxWindLeaf3 {

probability = "0.1 * trees";

cost = 1;

};

};

};

class NoWindClutter {

radius = 15;

cost = "(20 * (windy factor [0.1, 0.2])) * meadow * (1 - rain) * (1 - sea) * (1 - forest) * (1 - houses)";

class Species {

class FxWindPollen1 {

probability = 1;

cost = 1;

};

};

};

class SmallInsects {

radius = 3;

cost = "(12 - 8 * hills) * (1 - night) * (1 - rain) * (1 - sea) * (1 - windy)";

class Species {

class HouseFly {

probability = "deadBody + (1 - deadBody) * (0.5 - forest * 0.1 - meadow * 0.2)";

cost = 1;

};

class HoneyBee {

probability = "(1 - deadBody) * (0.5 - forest * 0.1 + meadow * 0.2)";

cost = 1;

};

class Mosquito {

probability = "(1 - deadBody) * (0.2 * forest)";

cost = 1;

};

};

};

class NightInsects {

radius = 3;

cost = "(9 - 8 * hills) * night * (1 - rain) * (1 - sea) * (1 - windy)";

class Species {

class Mosquito {

probability = 1;

cost = 1;

};

};

};

};

class Names {

class Veg_1 {

name = "";

position[] = {2713.62, 2140.92};

type = "VegetationPalm";

radiusA = 50;

radiusB = 50;

};

class Veg_2 {

name = "";

position[] = {2446.09, 3038.29};

type = "VegetationPalm";

radiusA = 50;

radiusB = 50;

};

class Veg_3 {

name = "";

position[] = {2940.52, 2923.19};

type = "VegetationPalm";

radiusA = 50;

radiusB = 50;

};

};

};

};

class CfgWorldList {

class SavineVode {};

};

Share this post


Link to post
Share on other sites

Thanks, I'll have a look. The weird thing though is that I have a nearly identical config for another map where all the clutter works, I just can't spot anything wrong.

Share this post


Link to post
Share on other sites

hmm, i don't know if you made it correct at this point:

Quote[/b] ]class grass1 : Default

{

access = 2;

files = "d2trava_*";

rough = 0.010000;

dust = 0.800000;

soundEnviron = "grass";

character = "grass1Clutter";

};

class grass2 : Default

{

access = 2;

files = "d2trava_*";

rough = 0.010000;

dust = 0.800000;

soundEnviron = "grass";

character = "grass2Clutter";

};

you defined the same ground texture for 2 different type of clutters, while you should only have one clutter class for one ground texture.

Share this post


Link to post
Share on other sites

I'm not sure where is the problem, nor im an expert..

have you tried "swLighting = true" instead 1?

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE"> class BCGrassShort: BCGrassGeneral

{

model=ca\plants\clutter_grass_desert.p3d;

affectedByWind = 0.2

swLighting = true; //relativeColor[]={0.8,0.8,0.8,0};

colorByGround=0.9;

scaleMin = 0.75;

scaleMax = 1.0;

};

edit: i also thought about what Linker Split refered.. you may wanna recheck that too.

Share this post


Link to post
Share on other sites
hmm, i don't know if you made it correct at this point:
Quote[/b] ]class grass1 : Default

{

access = 2;

files = "d2trava_*";

rough = 0.010000;

dust = 0.800000;

soundEnviron = "grass";

character = "grass1Clutter";

};

class grass2 : Default

{

access = 2;

files = "d2trava_*";

rough = 0.010000;

dust = 0.800000;

soundEnviron = "grass";

character = "grass2Clutter";

};

you defined the same ground texture for 2 different type of clutters, while you should only have one clutter class for one ground texture.

Yeah I think that's it. Will try to fix it and we'll see.

Share this post


Link to post
Share on other sites

can you tell me why you use

access = 2;

instead of

access = ReadOnly; ?

Share this post


Link to post
Share on other sites
can you tell me why you use

access = 2;

instead of

access = ReadOnly; ?

Well, it's the same tounge2.gif

Quote[/b] ]#define ReadAndWrite 0

#define ReadAndCreate 1

#define ReadOnly 2

#define ReadOnlyVerified 3

but i think you mean why you have a number instead of the word... well, it's the same too, numbers are used when you are gonna binarize it. ArmA binarize prefers much more numbers instead of words to define.

Share this post


Link to post
Share on other sites

Did you get clutters working Opteryx? at first glance your CfgSurfaceCharacters doesn't have any clutter objects listed.

Also what exactly does it do for each definition you set in the config? Example, what does access = 3 do and why would I use it? Does it effect the source files in any way?

Also random question to toss out. Is there a limit to how many clutters you can have on one texture? I noticed that only some of my clutters will show up when I am using.. lets say 7 clutters.

Share this post


Link to post
Share on other sites
hmm, i don't know if you made it correct at this point:
Quote[/b] ]class grass1 : Default

{

access = 2;

files = "d2trava_*";

rough = 0.010000;

dust = 0.800000;

soundEnviron = "grass";

character = "grass1Clutter";

};

class grass2 : Default

{

access = 2;

files = "d2trava_*";

rough = 0.010000;

dust = 0.800000;

soundEnviron = "grass";

character = "grass2Clutter";

};

you defined the same ground texture for 2 different type of clutters, while you should only have one clutter class for one ground texture.

Yeah I think that's it. Will try to fix it and we'll see.

Didn't work, I still get only one clutter object. hmmmm

Did you get clutters working Opteryx? at first glance your CfgSurfaceCharacters doesn't have any clutter objects listed.

What do you mean exactly? I thought they were supposed to be listed in CfgSurfaces.

Also what exactly does it do for each definition you set in the config? Example, what does access = 3 do and why would I use it? Does it effect the source files in any way?

I don't know, but I think Linker does.

Share this post


Link to post
Share on other sites

i think i have the similar problem you have Opteryx...

(was mentioned this thread)

As if that specific code is not even working for a undetected reason. Its a bummer because it slows thing down abit.

Been trying to find this issue for some weeks now.. hope we can find the problem.

Share this post


Link to post
Share on other sites

Have a look at DMarkwick's config. I am no expert at configs but I have gotten clutters to work. So let me try and explain this as best I can and hopefully it will help.

class cfgSurfaces

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">class Stream : Default

{

access = 2;

files = "dmstream_*";

rough = 0.1;

dust = 0.2;

soundEnviron = "drygrass";

character = "StreamClutter";

};

The texture dmstream_* is given a name StreamClutter.

class cfgSurfaceCharacters

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">class StreamClutter

{

probability[] = {0.2,0.2,0.06};

names[] = {StreamPlant1,Rocks,BrokenBranches};

};

StreamClutter is assigned clutter that is designated in class clutter below.

If you notice in cfgSurfaceChartacters the actual clutters that are assigned to the texture dmstream_* are listed in names.

class clutter

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">class StreamPlant1 : GrassGeneral {

model = "ca\plants\DD_bush02.p3d";

scaleMin = 0.15;

scaleMax = 0.25;

};

The amount of clutters that can be assigned for use in an island are defined in class clutter. Each clutters object is placed here.

So if you want to add clutter to dmstream_* then just change class cfgSurfaceCharacters like this.

class cfgSurfaceCharacters

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">class StreamClutter

{

probability[] = {0.2,0.2,0.06};

names[] = {StreamPlant1,Rocks,BrokenBranches,ForestFern,MushroomsBabka,GrassDesert,GrassSevenbeauty}

;

};

In your posted config you have only one listed in names.

class cfgSurfaceCharacters

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE"> class grass1Clutter

{

probability[] = {

0.980000

};

names[] = {

"grass1Clutter"

};

Share this post


Link to post
Share on other sites

@Opteryx: just a "dumb" question, does your mask_lco have more then 1 layers? If you have one above other you might be hiding the one you want.. ( i think it already happened to me once )

Share this post


Link to post
Share on other sites

Continue here with my question since it seems most topic related. I finished my config file and basicly it has 2 things in it concerning sound to texture. The odd thing is i get only the sound from the snow. First some code and then i try explain happens. Maybe this rings a bell to somebody cause i dont understand this.

I simplified the character to none so i dont need to bother any clutter problems. I just want the sound to be correct.

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">

class sneeuw : Default

{

access = 2;

files = "sneeuw*";

rough = 0.010000;

dust = 0.800000;

soundEnviron = "snow";

character = "Empty";

};

class rots : Default

{

access = 2;

files = "rots*";

rough = 0.010000;

dust = 0.800000;

soundEnviron = "rock";

character = "Empty";

};

There is 3 rvmats and corresponding textures with it. Namely:

- sneeuw

- rots

- rots2

They show up fine on in the game (its the watkins map incase ya saw it). Now i would expect for indeed snow to get snow sound and rock (rots*) to get rock sound.

However the rock gets the snow sound. If i change the snow round to water then everywhere i walk i get water sound. How can it be it picks up the snow sound "sneeuw*" while i am walking on "rots*".  I realy dont understand it.

The rvmate and all the corresponding textures all have the correct name. Does this ring any bell to somebody?

Share this post


Link to post
Share on other sites
@Opteryx: just a "dumb" question, does your mask_lco have more then 1 layers? If you have one above other you might be hiding the one you want.. ( i think it already happened to me once )

I also just double checked that and it is one layer.

Share this post


Link to post
Share on other sites

Crap that costed me a whole evening and still no solution. I go make pics and lists of all i have. Maybe some of you guys can see the prob cause i am becoming blind for it i gues.

Did rename all the textures to good names, checked all sizes, checked the config file, reloaded the mask and sat. Check all paths. Checked the config for the rigt files (* shit) and still only snow works. Double double double double checked the number of layers, no antialiasing.

Man it probably is something major stupid and small but i am getting blind for it gues.

Share this post


Link to post
Share on other sites

Keep in mind: Each texture cell (16 per segment) can only have one surface, based upon the first terrain type in that cell. This means you'll only be likely to get a few surfaces over an entire island.

And whats your detail textures call?

sneeuw_detail_co.paa?

And change

old: files = "sneeuw*";

new: files = "sneeuw_*";

Share this post


Link to post
Share on other sites

My config content at the moment.

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">

class CfgSurfaces

{

class Default {};

class water {};

class sneeuw : Default

{

access = ReadOnly;

files = "s*";

rough = 0.01;

dust = 0.0;

soundEnviron = "snow";

character = "Empty";

};

class rots : Default {

access = ReadOnly;

files = "r*";

rough = 0.005;

dust = 0.01;

soundEnviron = "rock";

character = "Empty";

};

};

So i would expect any to start with s and r to get their sound. The list of my data dir:

rotson_detail_co

rotson_detail_nohq

rotson_mco

rotstw_detail_co

rotstw_deteail_nohq

rotstw_mco

sneeuw_detail_co

sneeuw_detail_nohq

sneeuw_mco

rvmats (text not binairy)

rotson.rvmat

rotstw.rvmat

sneeuw.rvmat

Content rvmats:

Rotson.rvmat:

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">

ambient[] = {0.9,0.9,0.9,1};

diffuse[] = {0.9,0.9,0.9,1};

forcedDiffuse[] = {0.02,0.02,0.02,1};

specular[] = {0.0,0.0,0.0,0};

specularPower = 1; // specular interpolator must be enabled

emmisive[] = {0,0,0,0};

PixelShaderID = "NormalMapDiffuse";

VertexShaderID = "NormalMapDiffuseAlpha";

//surfaceInfo = "landtext\bumps.bisurf";

class Stage1

{ // normal map

texture="WATKINS\DATA\rotson_detail_nohq.paa";

uvSource="tex";

class uvTransform

{

aside[] = {10,0,0};

up[] = {0,10,0};

dir[] = {0,0,10};

pos[] = {0,0,0};

};

};

class Stage2

{

texture="WATKINS\DATA\rotson_detail_co.paa";

uvSource="tex";

class uvTransform

{

aside[] = {10,0,0};

up[] = {0,10,0};

dir[] = {0,0,10};

pos[] = {0,0,0};

};

};

Rotstw.rvmat

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">

ambient[] = {0.9,0.9,0.9,1};

diffuse[] = {0.9,0.9,0.9,1};

forcedDiffuse[] = {0.02,0.02,0.02,1};

specular[] = {0.0,0.0,0.0,0};

specularPower = 1; // specular interpolator must be enabled

emmisive[] = {0,0,0,0};

PixelShaderID = "NormalMapDiffuse";

VertexShaderID = "NormalMapDiffuseAlpha";

//surfaceInfo = "landtext\bumps.bisurf";

class Stage1

{ // normal map

texture="WATKINS\DATA\rotstw_detail_nohq.paa";

uvSource="tex";

class uvTransform

{

aside[] = {10,0,0};

up[] = {0,10,0};

dir[] = {0,0,10};

pos[] = {0,0,0};

};

};

class Stage2

{

texture="WATKINS\DATA\rotstw_detail_co.paa";

uvSource="tex";

class uvTransform

{

aside[] = {10,0,0};

up[] = {0,10,0};

dir[] = {0,0,10};

pos[] = {0,0,0};

};

};

sneeuw.rvmat

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">

ambient[] = {0.9,0.9,0.9,1};

diffuse[] = {0.9,0.9,0.9,1};

forcedDiffuse[] = {0.02,0.02,0.02,1};

specular[] = {0.0,0.0,0.0,0};

specularPower = 1; // specular interpolator must be enabled

emmisive[] = {0,0,0,0};

PixelShaderID = "NormalMapDiffuse";

VertexShaderID = "NormalMapDiffuseAlpha";

//surfaceInfo = "landtext\bumps.bisurf";

class Stage1

{ // normal map

texture="watkins\Data\Sneeuw_detail_nohq.paa";

uvSource="tex";

class uvTransform

{

aside[] = {10,0,0};

up[] = {0,10,0};

dir[] = {0,0,10};

pos[] = {0,0,0};

};

};

class Stage2

{

texture="watkins\Data\Sneeuw_detail_co.paa";

uvSource="tex";

class uvTransform

{

aside[] = {10,0,0};

up[] = {0,10,0};

dir[] = {0,0,10};

pos[] = {0,0,0};

};

};

The content of my layers file:

<table border="0" align="center" width="95%" cellpadding="0" cellspacing="0"><tr><td>Code Sample </td></tr><tr><td id="CODE">

class Layers

{

class sneeuw

{

texture = "WATKINS\DATA\sneeuw_mco.paa";

material="WATKINS\DATA\sneeuw.rvmat";

};

class rotson

{

texture = "WATKINS\DATA\rotson_mco.paa";

material="WATKINS\DATA\rotson.rvmat";

};

class rotstw

{

texture = "WATKINS\DATA\rotstw_mco.paa";

material="WATKINS\DATA\rotstw.rvmat";

};

};

class Legend

{

picture="WATKINS\mapLegend.png";

class Colors

{

/// color names should correspond to surface layer names

sneeuw[]={{255,0,0}};

rotson[]={{0,255,0}};

rotstw[]={{0,0,255}};

};

};

Share this post


Link to post
Share on other sites

Just to add that my png files are 512x512 and indeed were made paa files after it.

I do not have multiple layers in my mask.

Share this post


Link to post
Share on other sites

Realy nobody has a clue? I have only one texture that works and when i put it on files=* then indeed all i go i hear sound. Now strange enough i only hear it when on the defaulted mask area. I saw the visitor picks the most common color in the mask and makes it black right? It is that one that works, no other. I dont mind sharing the source if somebody wants take a look. There is no secret in it:)

Share this post


Link to post
Share on other sites

Did an ingame test with the console.

Used the command: surfaceType (getPos player)

Standing in snow gives : #sneeuw. In other words, the correct surface type as defined. Now it might be that my sound mod does not have a sound to snow attached right or even worse arma doesnt. Who knows.

Now the odd part. Standing on rotstwo it returns #sneeuw. In other words the major surface type there is snow. Crap how can that be?

Standing onr rotsone give back #rotsone and indeed returns rock sound.

Now my question remain (if i assume snow sound is obscured by sound mod of even arma) how can it be that it return #sneeuw as major surface at location rotstwo?

Mmmmmm

Share this post


Link to post
Share on other sites

Is there anybody out here that might give a hint on why a surface can be dominant to another? Its close to the last thing i need to do for finishing my island and i realy am totaly clueless .... sad_o.gif

All of the above i have already made according to standards so no conflicts occur with anybody else. Still the sound of the snow surface keeps coming up with one of the rock surfaces. I realy dont get it.

Share this post


Link to post
Share on other sites

Sorry i didn't see this earlier...

Although the engine is rendering the terrain as per the mask layer in the .pew I believe that it is incorrectly allocating only 1 CfgSurface soundEnviron parameter to an entire 'section/segment' of terrain. Remember a 'segment' is 12x12 terrain texture grids. A very large area.

This would possibly explain why, when you run the in-game scripting command 'surfaceType' you are getting a differing return value than what you'd expect.

Whether this is a 'feature' or a 'bug' is subjective I guess.

Share this post


Link to post
Share on other sites
Sorry i didn't see this earlier...

Although the engine is rendering the terrain as per the mask layer in the .pew I believe that it is incorrectly allocating only 1 CfgSurface soundEnviron parameter to an entire 'section/segment' of terrain. Remember a 'segment' is 12x12 terrain texture grids. A very large area.

This would possibly explain why, when you run the in-game scripting command 'surfaceType' you are getting a differing return value than what you'd expect.

Whether this is a 'feature' or a 'bug' is subjective I guess.

Cheers for the answer mate. What i dont udnerstand is that rock type one always starts to sound like rock when ya walk on it. Its only the other rock part that has the problem. I go update my mask to only one color of rock and see if it then works. If it works its not a segment limimation but something else. Strange stuff.

Share this post


Link to post
Share on other sites
Sorry i didn't see this earlier...

Although the engine is rendering the terrain as per the mask layer in the .pew I believe that it is incorrectly allocating only 1 CfgSurface soundEnviron parameter to an entire 'section/segment' of terrain. Remember a 'segment' is 12x12 terrain texture grids. A very large area.

This would possibly explain why, when you run the in-game scripting command 'surfaceType' you are getting a differing return value than what you'd expect.

Whether this is a 'feature' or a 'bug' is subjective I guess.

Cheers for the answer mate. What i dont udnerstand is that rock type one always starts to sound like rock when ya walk on it. Its only the other rock part that has the problem. I go update my mask to only one color of rock and see if it then works. If it works its not a segment limimation but something else. Strange stuff.

Is 'the other rock part' in the same segment as the 'rock part' that is working?

What I suspect is that the engine has loaded the segment... seen say 4 different types of 'rock' texture and properly assigned those textures to where you want them as per your mask layer in your .pew... but I believe it is incorrectly assigning 1 and only one soundEnviron to the whole segment... Or maybe this is by design...

I do know one thing for sure... the z-order of texture models laid upon terrain needs to be fortified by the devs... it's a bit flakey...

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  

×