Jump to content
Sign in to follow this  
opteryx

Do I Need to Make New RVMATs?

Recommended Posts

Um I've been back and forth between editing the Layer Mask and no matter what color I choose from the Map Legend I seem to end up with either Sand/Grass or Sand/Basalt detail textures, so I'm wondering if I need to make some new RVMATs from the old ones in the data folder, also I would probably have to use the detail texture nohq/co/nco files from Sara for each RVMAT right?

I've been using the layer config from the BI example island, I tried using the config set up in the V3 manual but that only crashed Buldozer.

Anyway, I'd appreciate it if someone could fill me inn at bit on this because I'm getting tired of editing the sat/mask maps for several hours a day, then spend even more huge amounts of time importing them only to find out nothing has changed.

PS: If someone has a basic config I could use to test my map in game, I would be very grateful too, I am still getting the same error as in the " Tutorial for Visitor3 ?" thread, and none of the suggestions have worked, I've tried EVERYTHING even made several new islands.

Share this post


Link to post
Share on other sites

Yes, you need to make an rvmat that defines each terrain type on your island.

My island folder is P:\CEEB_P2007\

It's detail textures & rvmats in P:\CEEB_P2007\data\

It's layer's segments & rvmats in P:\CEEB_P2007\data\Layers

If I create a WRP and CPP file in P:\CEEB_P2007, then pbo the entire folder into a pbo called CEEB_P2007.pbo, everything works in game.

Example of a detail rvmat, named pisekplaz.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";

class Stage1

{ // normal map

texture="CEEB_P2007\data\pisekplaz_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="CEEB_P2007\data\pisekplaz_detail_co.paa";

uvSource="tex";

class uvTransform

{

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

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

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

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

};

};

Note that I have set it to refer to PAA files, which obviously requires that the appropriate textures exist in PAA format.

Example CEEB_P2007.cpp:<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 CEEB_p2007 {

units[] = {};

worlds[] = {CEEB_p2007};

requiredVersion = 0.1;

};

};

class DefaultLighting; // External class reference

class DefaultLighting_CA : DefaultLighting {};

class CfgWorlds {

class DefaultClutter {

scaleMin = 0.9;

scaleMax = 1.4;

};

class DefaultWorld; // External class reference

class Intro : DefaultWorld {};

class CEEB_p2007 : Intro {

access = 3;

cutscenes[] = {"DesertIntro1"};

description = "CEEB_p2007";

icon = "";

worldName = "\CEEB_p2007\CEEB_p2007.wrp";

pictureMap = "";

pictureShot = "";

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

plateLetters = ABCDEGHIKLMNOPRSTVXZ;

longitude = -40; // positive is east

latitude = -40; // 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 = 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 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[] = {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 CEEB_p2007 {};

};

Note I do not place my project in P:\CA\

Share this post


Link to post
Share on other sites

Okay I managed to get new textures in buldozer by making a new rvmat, edit layers.cfg etc, also I got the map working ingame, but I got this error and no textures on the ground:

feiloy1.png

Share this post


Link to post
Share on other sites

Ooh, getting close I think... Check your texture folder in Project Preferences in V3.

Mine is p:\ceeb_p2007\data

Share this post


Link to post
Share on other sites

Well.. I've duodecimple checked and as far as I know all paths and folders are correct, I'm giving up for today, maybe more luck tomorrow..

Thanks for the help anyways.

Share this post


Link to post
Share on other sites

Damn, i'm not sure then. I can only show you a working example.

This is my Layer.cfg:

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

{

class sand

{

texture = "CEEB_P2007\data\pisekplaz_detail_co.paa";

material= "CEEB_P2007\data\pisekplaz.rvmat";

};

class grass

{

texture = "CEEB_P2007\data\travajih_detail_co.paa";

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

};

};

class Legend

{

picture="CEEB_P2007\source\maplegend.png";

class Colors

{

sand[]={{255,0,60}};

grass[]={{0,255,131}};

}

};

Share this post


Link to post
Share on other sites

Doubled addon name in rvmat looks suspicious, I would second to Fasad's suggestion to check all the path settings in Visitor.

Also, if your data are huge, I suggest to abandon the "real" project for now and try something really small and simple (small data = no waiting) just to verify all steps in your pipeline were done well. If you become too desperate, feel free to PM me your qeustion or share the data so I could directly verify what's the issue.

Share this post


Link to post
Share on other sites

*PROBLEM SOLVED*

I changed the folder structure to p:\mapname\etc from p:\mapname\mapname\etc, however when I loaded the same .pew file it still had the project preferences texture path set to the old one. banghead.gif

Map works ingame with textures now.

jjjaaaaaaaaaaaaaa111111mk9.jpg

hmmmao2.jpg

It crashes if I start it up with a high view distance, think it's related to the blue edge thing, how do I exactly crop that?

Also I think using Google Earth pictures wasn't so smart, very hard to make the mask and sat map match.

Now let's hope BIS gives us the full package soon. smile_o.gif

Share this post


Link to post
Share on other sites

Thanks, and even more thanks for insisting that the error lied in texture paths tounge2.gif

Since I've already open up a thread I might as well ask some more questions, I'm wondering what the _mco file does, I think I recall the wiki saying something about them being a sort of blend between the Sat and detail textures right?

How do I use them exactly? I can't see any place in neither the layers.cfg nor the rvmat files that says anything about _mco.

Share this post


Link to post
Share on other sites
Since I've already open up a thread I might as well ask some more questions, I'm wondering what the _mco file does, I think I recall the wiki saying something about them being a sort of blend between the Sat and detail textures right?

How do I use them exactly? I can't see any place in neither the layers.cfg nor the rvmat files that says anything about _mco.

These textures are mentioned in layers.cfg and path to it added to RVMAT files in Layers in the process of generating segments. If you are far enough from ground to not to see detailed textures and not far enough to see only the satellite texture (sounds silly I know wink_o.gif ), you will se some gibberish over the content of satellite image based on the position of detailed surfaces. The gibberish is MCO texture, which is meant to add ground detail on middle range. It is multiplied (like in Photoshop) over the satellite texture.

This is image for Combat Photo thread illustrating the appearance of MCO textures (see black dunes and generic sand textures multiplied over monotonous satellite texture):

http://img240.imageshack.us/img240/2770/mi244vn6.jpg

Quote[/b] ]Also I think using Google Earth pictures wasn't so smart, very hard to make the mask and sat map match.

In Photoshop, I edit both satellite texture and mask in the same image, or at least copy my sat. texture as reference. It is also good to have every colour in separate layer with transparency mask, which allows you to shift the content and edit each color separately. Hope this helps at least a little.

Share this post


Link to post
Share on other sites
These textures are mentioned in layers.cfg and path to it added to RVMAT files in Layers in the process of generating segments.

Doh! Silly me, they ARE in the cfg, so I guess this layers.cfg I made with the added mesto_detail texture is wrong then?

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

{

class pisek

{

texture = "Sakakah\data\pisek_mco.png";

material="Sakakah\data\pisek.rvmat";

};

class travajih

{

texture = "Sakakah\data\travajih_mco.png";

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

};

class mesto2

{

texture = "Sakakah\data\mesto2_mco.png";

material="Sakakah\data\mesto2.rvmat";

};

class pole1

{

texture = "Sakakah\data\pole1_mco.png";

material="Sakakah\data\pole1.rvmat";

};

class mesto_detail

{

texture = "Sakakah\data\mesto_detail_co.png";

material="Sakakah\data\mesto_detail.rvmat";

};

};

class Legend

{

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

class Colors

{

/// color names should correspond to surface layer names

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

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

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

pole1[]={{255,00,0}};

mesto_detail[]={{00,00,0}};

}

};

And the rvmat is correct?:

<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="Sakakah\Data\mesto_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="Sakakah\Data\mesto_detail_co.paa";

uvSource="tex";

class uvTransform

{

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

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

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

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

};

};

All I need to do is change the layers.cfg from:

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

{

texture = "Sakakah\data\mesto_detail_co.png";

material="Sakakah\data\mesto_detail.rvmat";

To

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

{

texture = "Sakakah\data\mesto_detail_mco.png";

material="Sakakah\data\mesto_detail.rvmat";

Then add the mesto_detail_mco in data folder and import sat/mask?

Quote[/b] ]

In Photoshop, I edit both satellite texture and mask in the same image, or at least copy my sat. texture as reference. It is also good to have every colour in separate layer with transparency mask, which allows you to shift the content and edit each color separately. Hope this helps at least a little.

Problem is that my Photoshop doesn't support transparency mask, confused_o.gif but I think I can manage with layers, however that means I'll have to make the entire satellite map by hand, tried using a real one, there were some really annoying effects when converting the picture into just few colors.

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  

×