Jump to content
Sign in to follow this  
meshcarver

Why NOHQ and SMDI textures working in game..?

Recommended Posts

Hi guys,

I'm trying to get a very simple object in the game (Think of it as basically a plain metal sheet) that uses only CO, NOHQ and SMDI textures.

For some reason, I really don't think the SMDI and NOHQ textures are showing up ingame? Could someone take a look at this RVMAT setup and tell me if I've completely gone wrong somewhere please?

Also, you'll notice the env_land_co at the very end- I have NO idea why this is there or what it does so I just incorporate it all the time incase it's somehow needed? Is it needed and what does it do?

If anyone has a better, or more SIMPLE shader rvmat for this object could they please show me? I understand Multimats almost 100% but don't get what this shader here really does or how it works- all the stages etc?

surfaceInfo = "MESH_designator_male_solid\data\MESH_metal.bisurf";
ambient[]={1,1,1,1};
diffuse[]={1,1,1,1};
forcedDiffuse[]={0,0,0,0};
emmisive[]={0,0,0,1};
specular[]={.3,.3,.3,.3};
specularPower=100;
PixelShaderID="Super";
VertexShaderID="Super";
class Stage0
{
texture="MESH_designator_male_solid\data\MESH_designator_male_solid_co.paa";
uvSource="tex";
};
class Stage1
{
texture="MESH_designator_male_solid\data\MESH_designator_male_solid_nohq.paa";
uvSource="tex";
class uvTransform
{
	aside[]={1,0,0};
	up[]={0,1,0};
	dir[]={0,0,0};
	pos[]={0,0,0};
};
};
class Stage2
{
texture="#(argb,8,8,3)color(0.5,0.5,0.5,0.5,DT)";
uvSource="tex";
class uvTransform
{
	aside[]={1,0,0};
	up[]={0,1,0};
	dir[]={0,0,0};
	pos[]={0,0,0};
};
};
class Stage3
{
texture="#(argb,8,8,3)color(0,0,0,0,MC)";
uvSource="tex";
class uvTransform
{
	aside[]={1,0,0};
	up[]={0,1,0};
	dir[]={0,0,0};
	pos[]={0,0,0};
};
};
class Stage4
{
texture="#(argb,8,8,3)color(1,1,1,1.0,AS)";
uvSource="tex";
class uvTransform
{
	aside[]={1,0,0};
	up[]={0,1,0};
	dir[]={0,0,0};
	pos[]={0,0,0};
};
};
class Stage5
{
texture="MESH_designator_male_solid\data\MESH_designator_male_solid_smdi.paa";
uvSource="tex";
class uvTransform
{
	aside[]={1,0,0};
	up[]={0,1,0};
	dir[]={0,0,0};
	pos[]={0,0,0};
};
};
class Stage6
{
texture="#(ai,64,64,1)Fresnel(1.3,7)";
uvSource="tex";
class uvTransform
{
	aside[]={1,0,0};
	up[]={0,1,0};
	dir[]={0,0,0};
	pos[]={0,0,0};
};
};
class Stage7
{
texture="MESH_designator_male_solid\data\env_land_co.paa";
uvSource="tex";
class uvTransform
{
	aside[]={1,0,0};
	up[]={0,1,0};
	dir[]={0,0,0};
	pos[]={0,0,0};
};
};

Share this post


Link to post
Share on other sites

The env_land_co.paa is for faking environmental reflections on a shiny surface. The reflections on things like really shiny metal, or glass, are not real reflections of the area around the object, but rather faked with this texture image, so you want this image to be a general representation of what your terrain looks like. If your object isn't supposed to be shiny enough for reflections, then you don't need this.

Your rvmat looks ok from what I can tell, but I'm not an expert. Why do you think those textures aren't showing up? Maybe it's the textures themselves and not the rvmat. It might be a good idea to just copy one of the rvmats from unpacked arma3 content and use that, substituting the file paths for your own images.

Share this post


Link to post
Share on other sites

Cheers Animander,

could you please tell me- is that RVmat that I posted a STANDARD RVmat..? I mean, what most of the normal base objects use in ARMA3?

I'm basically after a standard (co, nohq, smdi) RVmat template so I know it's going to be fine- and I can't find an empty template anywhere to use as a starting point...

Share this post


Link to post
Share on other sites

ambient[]			= {1,1,1,1};
diffuse[]			= {1,1,1,1};
forcedDiffuse[]		= {0,0,0,1};
emmisive[]			= {0,0,0,1};
specular[] 			= {0.29,0.29,0.29,1};

specularPower		= 200.000000;
PixelShaderID		= "NormalMapSpecularDIMap";
VertexShaderID		= "NormalMap";

class Stage1
{
texture		= "asc\asc_cim\models\data\trench_nohq.paa";
uvSource		= "tex";
class uvTransform
{
	aside[]	= {1,0,0};
	up[]		= {0,1,0};
	dir[]		= {0,0,0};
	pos[]		= {0,0,0};
};
};

class Stage2
{
texture		= "asc\asc_cim\models\data\trench_smdi.paa";
uvSource		= "tex";
class uvTransform
{
	aside[]	= {1,0,0};
	up[]		= {0,1,0};
	dir[]		= {0,0,1};
	pos[]		= {0,0,1};
};
};

thats waht I used for my first texturing experiments lately. Just a small dirthump, but it all worked fine so far. the _co was -applied- in objectbuilder.

Share this post


Link to post
Share on other sites

Ah, thanks man..!

So I don't need all those 7 stages no?

And when pressing "E" to apply this material, you ONLY apply the co TEXTURE slot right? Or do you apply the RVmat to the MATERIAL slot instead/aswell?

Also, how do you know WHICH pixel and vertex shader to use..? I mean, the documents I was just looking at on the WIKI are really bad- no explanation of which to use for what etc etc..?

Share this post


Link to post
Share on other sites

I think diffrent PixelShaderID's require different stages ... like the Super needs everything.

And a friend helped me to set that up ... so I didnt really need to bother with the wiki. :) He just gave me a rvmat he used for some basic object ... and it worked fine for me.

Share this post


Link to post
Share on other sites

Long shot, but do you think you could send me those templates..?

No problem if not... it's just I'm steaming through the actual model/texture creations here but am being held up by these f&*(^ed up RVmats lol...

Share this post


Link to post
Share on other sites

Yes you need to set the .rvmat to to material slot.

Share this post


Link to post
Share on other sites

Ok, edited for shame... I completely missed a large section of the file paths- highlighted in the code below. I hold my hand up:

But still, a LITTLE concerning is that I HAVE to have the CO linked to the texture slot and the RVmat linked to the material slot still..? If I don't link the CO to the texture slot, I get JUST the NOHQ and SMDI showing up ingame, no CO..?

Is that how it should be or is it still incorrect?

Again, see below: I didn't have a CO stage 0...

ambient[]            = {1,1,1,1};
diffuse[]            = {1,1,1,1};
forcedDiffuse[]        = {0,0,0,1};
emmisive[]            = {0,0,0,1};
specular[]            = {0.29,0.29,0.29,1};

specularPower        = 200.000000;
PixelShaderID        = "NormalMapSpecularDIMap";
VertexShaderID        = "NormalMap";

[color=#FF0000]THE SHAME; I HAD NO STAGE 0, SO ADDED IT AND PUT THE CO TEXTURE...[/color]

class Stage1
{
   texture            = "[color=#FF0000]!!!NOOB MISSED FULL PATH HERE!!![/color] MESH_designator_ia_personnel\data\MESH_designator_ia_personnel_nohq.paa";
   uvSource        = "tex";
   class uvTransform
   {
       aside[]        = {1,0,0};
       up[]        = {0,1,0};
       dir[]        = {0,0,0};
       pos[]        = {0,0,0};
   };
};

class Stage2
{
   texture            = "[color=#FF0000]!!!NOOB MISSED FULL PATH HERE!!![/color]MESH_designator_ia_personnel\data\MESH_designator_ia_personnel_smdi.paa";
   uvSource        = "tex";
   class uvTransform
   {
       aside[]        = {1,0,0};
       up[]        = {0,1,0};
       dir[]        = {0,0,1};
       pos[]        = {0,0,1};
   };
};

Edited by meshcarver

Share this post


Link to post
Share on other sites

Yes, as far as I know, best practice is to link the _co texture in the texture dialogue box in object builder, and then the .rvmat in the rvmat dialogue box. Because the _co is already linked in object builder, you don't need to include a _co texture entry in the rvmat, it's just redundant. That said, here's a very basic .rvmat I've used before

ambient[]={1,1,1,1};
diffuse[]={1,1,1,1};
forcedDiffuse[]={0,0,0,0};
emmisive[]={0,0,0,1};
specular[]={0.53660399,0.60000002,0.47999999,1};
specularPower=850;
PixelShaderID="NormalMapDetailSpecularDIMap";
VertexShaderID="NormalMap";
class Stage1
{
texture="p:\Pouch\PouchNormalMap_NOHQ.paa";
uvSource="tex";
class uvTransform
{
	aside[]={1,0,0};
	up[]={0,1,0};
	dir[]={0,0,0};
	pos[]={0,0,0};
};
};
class Stage2
{
texture="p:\Pouch\PouchColourMap_CO.paa";
uvSource="tex";
class uvTransform
{
	aside[]={1,0,0};
	up[]={0,1,0};
	dir[]={0,0,0};
	pos[]={0,0,0};
};
};
class Stage3
{
texture="p:\Pouch\PouchSpecMap_SMDI.paa";
uvSource="tex";
class uvTransform
{
	aside[]={1,0,0};
	up[]={0,1,0};
	dir[]={0,0,0};
	pos[]={0,0,0};
};
};

Now, as said before, you don't need the _co entry there when it's already applied in object builder. As well, if your object materials shouldn't have any specular light reflections(like wood or stone, or anything rough) then you don't need a _smdi texture either. Applying an _smdi texture to a material that's supposed to be rough will make it look wet or shiny instead.

Share this post


Link to post
Share on other sites

Don't expect to see alot of "normal" on Altis/Stratis. The dulled down lighting really kills most of the normals and reflections.

If you take a look at one object on altis and the same object on the VR map, it's almost like a different game...

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  

×