Jump to content
Sign in to follow this  
Evil_Clown

RVMAT Templates!

Recommended Posts

Quote[/b] ]I also believe that the color codes are not soooooo important.

im not sure but i think they are very important.. If you use a color with a little blur you might have an error saying that you missed an rvmat and then everything can be screwed up.

If you use an color you must identify it with the respective paa. There for its important.

edit: typo

Share this post


Link to post
Share on other sites
Thanks MemphisBelle, if that's accurate it will be quite useful.

Are these values hard coded into the engine or something? I cannot get clutter to work using custom RVMAT names. Example I use dmtrava instead of trava and get nothing. I do this so that I can possibly make some new textures without breaking the default maps, but clutter is proving problematic. I haven't seen any yet in my map.

I think so. I am only a little confused about the different ways how to define a color. I also believe that the color codes are not soooooo important. The mapLegend only represence the different ways how to identify a texture in the engine. The most important structures to make the engime identify a texture is the RVMAT file name....Thats only my opinion, I dont know whether I am right or nor...please correct me if it´s needed

The colours used seems to have no effect on performance of textures if all names & paths are correct, but the legend image may be quite important for clutter use. I cannot find how clutter is controlled (other than the settings in the map config), and cannot get clutter to appear on my map. I might have to try using nothing but regular BIS textures & RVMATs etc.

If clutter is hardcoded to use BIS settings then I can work with it, but at the moment I just don't know.

Share this post


Link to post
Share on other sites

If you have Textview2 then you can open the respective paa file, I did and I think theres something like a hardcoded color code for each Texture. Unpbo sarahni and check the textures. What confused was that a rock trexture and a grass texture seems to have the same code.

Share this post


Link to post
Share on other sites
If you have Textview2 then you can open the respective paa file, I did and I think theres something like a hardcoded color code for each Texture. Unpbo sarahni and check the textures. What confused was that a rock trexture and a grass texture seems to have the same code.

Do you mean the 4 colour layer textures? Red blue green & black? Yes they do use the same colours for different materials, but they should all be viewed as discrete textures one by one. One texture may use red as grass and the neighbouring texture may use red as rock, but each texture's corresponding RVMAT file allocates the correct material each time.

Share this post


Link to post
Share on other sites

Hmmmm.....thats pretty funny...So I mustnt paint 5 different colors for may be 5 different kinds of textures?

An example: I am just about to create a small test Island with 3 different kinds of Sand (wetsand close to the coastline, normal Sand and desert Sand (I think the real names are pisek, pisekplaz and pisekplouz (hope thats right))). Additionaly to this I am using 2 further textures, one for grass and 1 for rocks. Now I am wondering why Visitor is always importing the Sat_LCO and Mask_LCO but always crash when Buldozer shall do its work. The layer.cfg is all fine.

I was using my table and the results from Textview and the opened paa files in the unpboed sara Data folder.

Share this post


Link to post
Share on other sites

The colors used have no effect on clutter, and you can use any colors as long as they are defined in the layers.cfg.

Quote[/b] ]I cannot get clutter to work using custom RVMAT names. Example I use dmtrava instead of trava and get nothing

I've managed to alter an existing RVMAT to create a different clutter. First, I copied all the trava files and renamed them:

lawn.rvmat

lawn_detail_co.paa

lawn_detail_nohq.paa

lawn_mco.paa

My layer.cfg looks like this:

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

{

class trava

{

texture = "Schmalfelden\data\trava_mco.paa";

material="Schmalfelden\data\trava.rvmat";

};

class travajih

{

texture = "Schmalfelden\data\travajih_mco.paa";

material="Schmalfelden\data\travajih.rvmat";

};

class lawn

{

texture = "Schmalfelden\data\lawn_mco.paa";

material="Schmalfelden\data\lawn.rvmat";

};

class mesto

{

texture = "Schmalfelden\data\paving_mco.paa";

material="Schmalfelden\data\paving.rvmat";

///texture = "Schmalfelden\data\mesto_mco.paa";

///material="Schmalfelden\data\mesto.rvmat";

};

class lesjeh

{

texture = "Schmalfelden\data\lesjeh_mco.paa";

material="Schmalfelden\data\lesjeh.rvmat";

};

};

class Legend

{

picture="Schmalfelden\Source\mapLegend.png";

class Colors

{

/// color names should correspond to surface layer names

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

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

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

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

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

}

};

My config.cpp file looks like:

<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 Schmalfelden {

units[] = {Schmalfelden};

worlds[] = {Schmalfelden};

requiredVersion = 0.1;

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

};

};

class DefaultLighting; // External class reference

class DefaultLighting_CA : DefaultLighting {};

///Note Change below++++++++++++++++++++++++++++++++++++++++++++++++++

class CfgSurfaces

{

class Default {};

class water {};

class lawn : Default

{

access = ReadOnly;

files = "lawn_*";

rough = 0.01;

dust = 0.8;

soundEnviron = "grass";

character = "lawnClutter";

};

};

class CfgSurfaceCharacters

{

class lawnClutter

{

probability[] = {0.98};

names[] = {"lawnClutter"};

};

};

///Note Change above++++++++++++++++++++++++++++++++++++++++++++++++++

class CfgWorlds {

class DefaultClutter {

scaleMin = 0.9;

scaleMax = 1.4;

};

class DefaultWorld; // External class reference

class Intro : DefaultWorld {};

class Schmalfelden : Intro {

access = 3;

cutscenes[] = {"DesertIntro1"};

description = "Schmalfelden";

icon = "";

worldName = "\Schmalfelden\Schmalfelden.wrp";

pictureMap = "";

pictureShot = "";

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

plateLetters = ABCDEGHIKLMNOPRSTVXZ;

longitude = -03; // positive is east

latitude = -02; // positive is south

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 = 12:00;

startDate = 07/07/2007;

startWeather = 0.1;

startFog = 0.0;

forecastWeather = 0.3;

forecastFog = 0.0;

seagullPos[] = {1272.84, 150.0, 14035};

centerPosition[] = {2500, 2500, 300};

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 {

///Note Change below++++++++++++++++++++++++++++++++++++++++++++++++++

class lawnClutter : DefaultClutter {

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

affectedByWind = 0.3;

swLighting = 1;

scaleMin = 0.2;

scaleMax = 0.25;

};

///Note Change above++++++++++++++++++++++++++++++++++++++++++++++++++

class GrassGeneral : DefaultClutter {

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

affectedByWind = 0.3;

swLighting = 1;

scaleMin = 0.75;

scaleMax = 1.0;

};

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 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.1;

};

class SmallRocks : GrassGeneral {

model = "ca\rocks\clutter_stone_small.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[] = {1,1};

type = "VegetationPalm";

radiusA = 50;

radiusB = 50;

};

class Veg_2 {

name = "";

position[] = {1,1};

type = "VegetationPalm";

radiusA = 50;

radiusB = 50;

};

class Veg_3 {

name = "";

position[] = {1,1};

type = "VegetationPalm";

radiusA = 50;

radiusB = 50;

};

};

};

};

class CfgWorldList {

class Schmalfelden {};

};

This provides me with the base green trava texture with only very short grass clutter and no flower or weed clutter. Much more civilized for towns than the overgrown, weedy look of plain trava.

Hope this helps.... smile_o.gif

Share this post


Link to post
Share on other sites
Hmmmm.....thats pretty funny...So I mustnt paint 5 different colors for may be 5 different kinds of textures?

Well you can - just not more than 4 in any one texture area. I reckon it'll be fiddly work, you'll have to set a grid in Photoshop denoting the edges of all the textures (mine are every 512 pixels) and make sure you fiddle the sat mask colours to not have more than 4 in any one segment. Watching out for the overlap too.

@Nicholas Bell - thanks for the info there. I'm slowly getting a notion of what I need to do to get this all to work, but the results are going to be worth it I'm sure smile_o.gif

Share this post


Link to post
Share on other sites
The colors used have no effect on clutter, and you can use any colors as long as they are defined in the layers.cfg.

OK, so I understand the mapLegend is actually not really important. It only needs to be existing in the source folder anyway...am I right?

Well you can - just not more than 4 in any one texture area. I reckon it'll be fiddly work, you'll have to set a grid in Photoshop denoting the edges of all the textures (mine are every 512 pixels) and make sure you fiddle the sat mask colours to not have more than 4 in any one segment. Watching out for the overlap too.

hmmm....now all that confuses me much more. I though I am already on the right way. Now I get, that I seems to be totaly wrong, therefor I mustnt wonder why Buldozer always crash.

When I create a Mask file in PS then I am always working with layers. So i.e. at first I´m adding a yellow colored fillmentlayer as basic one. Then the next layer = the next color...a.s.o. untill I finished my work. Then I am flatten all the layers down to one layer, so many colors are overlapped. And that musnt be?

What is about the grid? Is that a function in PS or only a phrase.

Sorry for my silly questions, but I started mapping a few while ago. My actual job is translating... icon_rolleyes.gif

Share this post


Link to post
Share on other sites
Quote[/b] ]OK, so I understand the mapLegend is actually not really important. It only needs to be existing in the source folder anyway...am I right?

That is correct. It must be there as some sort a reference for the program I guess.

Quote[/b] ]Then I am flatten all the layers down to one layer, so many colors are overlapped. And that musnt be?

What you are doing appears to be fine - it doesn't matter how you get there, as long as the mask_lco.png file contains only the colors you specify in the layers.cfg file. So anti-aliasing, or over -laying colors which are not 100% opaque when you flatten will cause problems because they will introduce 100's or thousands of colors not specified in the layers.cfg. If you have 6 textures you should have only 6 colors in the mask_lco.png (not withstanding the problem of having more than 4 in any segment). When you have a color in the mask image which does not correspond to a color in the layers.cfg the program will substitute a color which is specified. This can result in some very odd textures where you don't want them.

None of this is easy. I only know these things because I have made seemingly every mistake in the book! biggrin_o.gif

Share this post


Link to post
Share on other sites
Quote[/b] ]

None of this is easy.  I only know these things because I have made seemingly every mistake in the book!   biggrin_o.gif

Yeah, thats exactly the same where I am just going through. But I learn much more each day I try to get a working result. I already made one working object, but it looks pretty bad, cause I havent used a nice Sat map.

OK, thanks so long, your answer tells me that my way which I am going at the time is not as bad as I thought.

But do you know the reason for the Buldozer crash? since today it always crash´s when Buldozer has to work.

All is fine, the layer.cfg has been defined correctly, the RVMAT files as well. The import process went fine and the converting "sometimes" as well.

I reinstalled V3 around 3 times, but it doiesnt fix the problem

Greetings

MemphisBelle

Share this post


Link to post
Share on other sites
But do you know the reason for the Buldozer crash? since today it always crash´s when Buldozer has to work.

I made Buldozer crash by saving in an incorrect bit depth. Has to be 24-bit, not 32-bit.

Share this post


Link to post
Share on other sites

OK...all now works fine, but what does that error message tells me, when I try to open my Island in the editor?

fehler.JPG

Share this post


Link to post
Share on other sites

Looks like you might have a mistake or omission in your config file. Is it a copy of another map's config?

Share this post


Link to post
Share on other sites
Looks like you might have a mistake or omission in your config file. Is it a copy of another map's config?

Yes, I used the one from Nicholas Bell, which he offered in his post above. But I am about to use the desert Island config.cpp (ArmA/addons). will see whether it works, so I´ll keep you posted.

Greetings

Memphis

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  

×