Jump to content

xdxxdy

Members
  • Posts

    27
  • Joined

  • Last visited

Posts posted by xdxxdy

  1. graw support also the parallax bump mapping if you want you can use this "special material/shader" to make more realistic surfaces. The mark of bullet hit on some wall can show this beauty effect(decal_material="concrete").

    If you want you can setup a material.xml and his texture to make some wall and other thing more realistic with the parallax. I do not have tryed in graw but can be possible :thumbsup:

    Bye

  2. Galor' date='Jun 2 2008, 01:36 PM' post='521647']

    I have a doubt, that perhaps the problem originates from shadows in my last map.

    I used a texture of the original game, but trimmed (only needed that part), and I've done the same with the texture bump.

    But that may not work well (although the size of both images is the same, and correspond Diffuse and Bump ).... so I would like to know how to add an image to an Alpha Channel, and get a corresponding image BUMP ?

    As I read, making any image (JPG for example) to TGA format, you added alpha channel .... but what is not whether to get the Bump, I must reverse the tone of the image .... :hmm:

    Hi

    search for:

    A8L8 and V8U8 Formats

    in this page:

    http://www.gamasutra.com/view/feature/2496...niques_and_.php

    To compose an A8L8 image you can use atlasgen.exe in game/tools folder or DirectX Texture Tool of the DirectX SDK.

    First we have to change the bump map of the material1 in this max scene

    http://files.filefront.com/bumprar/;10480949;/fileinfo.html

    than render.

    The output will be 2 texture named bump0000.bmp and bump0001.bmp. Open the bump0001 with directx texture tool, change surface format to A8L8, now go in the menù file and click open onto alpha channel of this texture and chose the bump0000 image. Save, make the tdb_, and try.

    Note: if you need to change the scene remember to render always sqare image example 1024x1024 for ati board compatibility.

    For the alpha image is almost the same thing but don't need max :) .

    Open a diffuse texture with a image editor, decrease the luminosity and increase the contrast until the image appear nearly black, save into desktop with another name respect the diffuse texture. Open the diffuse texture with directx texture tool, change surface format to four cc 8 bit dxt5, now menù file and open onto alpha channel of this surface, chose the image that you have darked. Save, make the tdb_, and try.

    Note: remember to make always sqare image example 1024x1024 for ati board compatibility.

    Good luck

  3. if the problem is present only in mp 90% of case is the anticheat to much severe

    change server

    First of all update all drivers that can resolve overtemperature/undervoltage in many systems and clean the fun coolers

    Bye

  4. HI

    
    <?xml version="1.0" encoding="iso-8859-1"?>
    
    <dynamic_object xmlns:xi="x">
    
    
    	<diesel file="/data/objects/props/torre/torre.diesel" orientation_object="root_point" materials="/data/objects/props/torre/materials.xml"/>
    
    
    	  <body editable="true" name="torre" tag="concrete" template="static">
    
    		  <object name="root_point"/>
    
    		  <object name="torre" collision_type="mesh_mopp" hidden="false" material="stone" shadow_caster="true"/>
    
    	  </body>
    
    
    	  <decal_surfaces static="true">
    
    		  <ds_mesh object="torre"/>
    
    	  </decal_surfaces>
    
    
    	  <lightmap>
    
    		  <object name="torre" height="512" width="512"/>
    
    	  </lightmap>
    
    
    </dynamic_object>
    
    

    shadow_caster="true" isn't nedeed if you place some ambient point around and inside the torre

    for the lightmap you have to create the uvw in channel 4 in max and edit it to remove polygons overlap(unfolding).

    the lightmap is the only method to have best result

    Bye

  5. Nice work xdxxdy. :ph34r: Will add to my collection here if ok?

    It's only an example and can be expanded by add lightning and custom sound.

    Still in need of assistance in converting a wav back to a bank file. Not looked into it tbh. Will make it a nice touch.

    Hi

    Yes ok you can make what you want :thumbsup:

    For wave ask to BRETTZIES, he can help you, the map will become a mod.

    Ps. Ciao papo :lol:

  6. Quick question...does it rain indoors?

    Yes, I don't know how is possible make clip the particles with a custom geometry, however if you want you can change the lifetime so the particles disappear before enter into the buildings but is difficoult. Another way is to use the same geometry, of aff all objects + the landscape, as an emitter then after the placement you have to increase the z level.

    All the polys of the plane of emission must have the same area.

    Before all ask to wolfsong how you can clip the particles with a custom geometry, is the way most easy.

    Sorry for my very bad english

    graw22008042516462454lj0.th.jpggraw22008042516455587yf9.th.jpggraw22008042516445972hb6.th.jpg

  7. Nice. This is what we used, but with normal map support as well (which is not needed).

    On a side note, you may notice that normal maps don't blend well with the vertex colors though. They never smoothly blend.

    Hi

    this is a new version with normal bump maps blended and specular power, derived from alpha chanell of the diffuse textures, always blended by the vertex color .

    
    
    string ParamID = "0x000001";
    
    
    
    
    texture TextureMap_5818
    
    <
    
    	string ResourceName = "";
    
    	string UIName = "diffuse";
    
    	string ResourceType = "2D";
    
    >;
    
    
    sampler2D TextureMap_5818Sampler = sampler_state
    
    {
    
    	Texture = <TextureMap_5818>;
    
    	MinFilter = LINEAR;
    
    	MagFilter = LINEAR;
    
    	MipFilter = LINEAR;
    
    	AddressU = WRAP;
    
    	AddressV = WRAP;
    
    };
    
    
    texture TextureMap_1132
    
    <
    
    	string ResourceName = "";
    
    	string UIName = "self_illumination";
    
    	string ResourceType = "2D";
    
    >;
    
    
    sampler2D TextureMap_1132Sampler = sampler_state
    
    {
    
    	Texture = <TextureMap_1132>;
    
    	MinFilter = LINEAR;
    
    	MagFilter = LINEAR;
    
    	MipFilter = LINEAR;
    
    	AddressU = WRAP;
    
    	AddressV = WRAP;
    
    };
    
    
    
    int texcoord0 : Texcoord 
    
    <
    
    	int Texcoord = 0;
    
    	int MapChannel = 1;
    
    	string UIWidget = "None"; 
    
    >;
    
    
    int texcoord1 : Texcoord 
    
    <
    
    	int Texcoord = 1;
    
    	int MapChannel = 2;
    
    	string UIWidget = "None"; 
    
    >;
    
    
    int texcoord2 : Texcoord 
    
    <
    
    	int Texcoord = 2;
    
    	int MapChannel = 3;
    
    	string UIWidget = "None"; 
    
    >;
    
    
    int texcoord3 : Texcoord 
    
    <
    
    	int Texcoord = 3;
    
    	int MapChannel = 0;
    
    	string UIWidget = "None"; 
    
    >;
    
    
    int texcoord4 : Texcoord 
    
    <
    
    	int Texcoord = 4;
    
    	int MapChannel = -2;
    
    	string UIWidget = "None"; 
    
    >;
    
    
    float4 UIColor_1785
    
    <
    
    	string UIName = "bump_test";
    
    	string UIWidget = "Color";
    
    > = {0.0f, 0.0f, 0.0f, 1.0f };
    
    
    float UIConst_7268
    
    <
    
    	string UIWidget = "Spinner";
    
    	float UIMin = 0.0;
    
    	float UIMax = 10.0;
    
    	float UIStep = 0.1;
    
    	string UIName = "specular";
    
    > = 1.0;
    
    
    texture NormalMap_2411 : NormalMap
    
    <
    
    	string ResourceName = "";
    
    	string UIName = "bump_normal";
    
    	string ResourceType = "2D";
    
    >;
    
    
    sampler2D NormalMap_2411Sampler = sampler_state
    
    {
    
    	Texture = <NormalMap_2411>;
    
    	MinFilter = LINEAR;
    
    	MagFilter = LINEAR;
    
    	MipFilter = LINEAR;
    
    	AddressU = WRAP;
    
    	AddressV = WRAP;
    
    };
    
    
    texture NormalMap_5583 : NormalMap
    
    <
    
    	string ResourceName = "";
    
    	string UIName = "distorsion";
    
    	string ResourceType = "2D";
    
    >;
    
    
    sampler2D NormalMap_5583Sampler = sampler_state
    
    {
    
    	Texture = <NormalMap_5583>;
    
    	MinFilter = LINEAR;
    
    	MagFilter = LINEAR;
    
    	MipFilter = LINEAR;
    
    	AddressU = WRAP;
    
    	AddressV = WRAP;
    
    };
    
    
    float UIConst_1094
    
    <
    
    	string UIWidget = "Spinner";
    
    	float UIMin = 0.0;
    
    	float UIMax = 1.0;
    
    	float UIStep = 0.1;
    
    	string UIName = "bump";
    
    > = 1.0;
    
    
    
    
    
    
    float3 light1Pos : POSITION 
    
    < 
    
    	string UIName = "Light 1 Position"; 
    
    	string Object = "PointLight"; 
    
    	string Space = "World"; 
    
    		int refID = 1; 
    
    > = {100.0f, 100.0f, 100.0f}; 
    
    
    
    
    float4 light1Color : LIGHTCOLOR 
    
    < 
    
    		int LightRef = 1; 
    
    		string UIWidget = "None"; 
    
    > = { 1.0f, 1.0f, 1.0f, 1.0f}; 
    
    
    
    
    float4x4 wvp : WorldViewProjection < string UIWidget = "None"; >;  
    
    float4x4 worldI : WorldInverse < string UIWidget = "None"; >;  
    
    float4x4 worldIT : WorldInverseTranspose < string UIWidget = "None"; >;  
    
    float4x4 viewInv : ViewInverse < string UIWidget = "None"; >;  
    
    float4x4 world : World < string UIWidget = "None"; >;  
    
    
    
    	struct a2v { 
    
    	float4 position		: POSITION; 
    
    	float3 tangent		: TANGENT; 
    
    	float3 binormal		: BINORMAL; 
    
    	float3 normal		: NORMAL; 
    
    
    	float2 texCoord		: TEXCOORD0; 
    
    	float3 vertcol		: TEXCOORD3; 
    
    	float vertalpha 	: TEXCOORD4; 
    
    
    }; 
    
    
    
    struct v2f { 
    
    		float4 position			: POSITION; 
    
    		float3 lightVec			: TEXCOORD0; 
    
    		float3 eyeVec			: TEXCOORD1; 
    
    
    		float2 texCoord			: TEXCOORD2; 
    
    		float4 color			: COLOR; 
    
    
    }; 
    
    
    
    v2f v(a2v In, uniform float3 lightPosition) 
    
    { 
    
    	v2f Out = (v2f)0; 
    
    	Out.position = mul(In.position, wvp);
    
    
    	float3x3 objTangentXf;
    
    #ifdef YUP 
    
    		objTangentXf[0] = In.tangent; 
    
    		objTangentXf[1] = -In.binormal; 
    
    #else 
    
    		objTangentXf[0] = In.binormal; 
    
    		objTangentXf[1] = -In.tangent; 
    
    #endif 
    
    		objTangentXf[2] = In.normal; 
    
    
    	float3 wsLPos = mul(In.position, world).xyz;
    
    	float3 wsLVec = lightPosition - wsLPos;
    
    	float3 osLVec = mul(wsLVec, worldI).xyz;
    
    	Out.lightVec = mul(objTangentXf, osLVec);
    
    
    	float4 osIPos = mul(viewInv[3], worldI);
    
    	float3 osIVec = osIPos.xyz - In.position.xyz;
    
    	Out.eyeVec = mul(objTangentXf, osIVec);
    
    
    
    	Out.texCoord = In.texCoord;
    
    	Out.texCoord.y += 1.0f;
    
    
    	float4 VertColor = float4(In.vertcol.rgb, In.vertalpha.r); 
    
    	Out.color = VertColor; 
    
    
    
    	return Out; 
    
    } 
    
    
    
    float4 f(v2f In, uniform float4 lightColor) : COLOR 
    
    { 
    
    	float3 ret = float3(0,0,0); 
    
    	float3 V = normalize(In.eyeVec);
    
    	float3 L = normalize(In.lightVec);
    
    
    	float4 TextureMap_5818 = tex2D(TextureMap_5818Sampler, In.texCoord.xy);
    
    	float4 TextureMap_1132 = tex2D(TextureMap_1132Sampler, In.texCoord.xy);
    
    	float4 INVertColor_8620 = In.color;
    
    	float3 MathLerp_1532 = lerp(TextureMap_5818.rgb, TextureMap_1132.rgb, INVertColor_8620.r); 
    
    	float3 MathLerp_2973 = lerp(MathLerp_1532, UIColor_1785, UIColor_1785); 
    
    	float3 input2 = MathLerp_2973; 
    
    
    
    	float MathLerp_4797 = lerp(TextureMap_5818.a, TextureMap_1132.a, INVertColor_8620.r); 
    
    	float MathOperator_1853 = MathLerp_4797 * UIConst_7268;
    
    	float input4 = MathOperator_1853; 
    
    
    
    	float3 Normal = float3(0,0,1);
    
    	float4 NormalMap_2411 = tex2D(NormalMap_2411Sampler, In.texCoord.xy);
    
    	NormalMap_2411.xyzw = NormalMap_2411.wyzz;
    
    	NormalMap_2411.xyz = NormalMap_2411.xyz * 2 - 1;
    
    	NormalMap_2411.z = sqrt(1 - NormalMap_2411.x * NormalMap_2411.x - NormalMap_2411.y * NormalMap_2411.y);
    
    	NormalMap_2411.rgb = normalize(NormalMap_2411.rgb);
    
    	float4 NormalMap_5583 = tex2D(NormalMap_5583Sampler, In.texCoord.xy);
    
    	NormalMap_5583.xyzw = NormalMap_5583.wyzz;
    
    	NormalMap_5583.xyz = NormalMap_5583.xyz * 2 - 1;
    
    	NormalMap_5583.z = sqrt(1 - NormalMap_5583.x * NormalMap_5583.x - NormalMap_5583.y * NormalMap_5583.y);
    
    	NormalMap_5583.rgb = normalize(NormalMap_5583.rgb);
    
    	float3 MathLerp_1363 = lerp(NormalMap_2411.rgb, NormalMap_5583.rgb, INVertColor_8620.r); 
    
    	float3 MathLerp_3078 = lerp(Normal, MathLerp_1363, UIConst_1094); 
    
    	float3 input8 = MathLerp_3078; 
    
    
    	float3 N = input8;
    
    	float3 diffuseColor = input2;
    
    	float diffuse = saturate(dot(N,L));
    
    	diffuseColor *= diffuse;
    
    	ret += diffuseColor;
    
    	float specularColor = input4;
    
    	float glossiness = 20;
    
    	float3 H = normalize(L + V);
    
    	float NdotH = saturate(dot(N,H));
    
    	specularColor *= pow(NdotH, glossiness);
    
    	ret += specularColor;
    
    	ret *= lightColor;
    
    	float4 done = float4(ret, 1);
    
    	return done; 
    
    } 
    
    
    technique Complete  
    
    {  
    
    	pass light1  
    
    	{		 
    
    	VertexShader = compile vs_1_1 v(light1Pos); 
    
    	ZEnable = true; 
    
    	CullMode = cw; 
    
    	ZWriteEnable = true; 
    
    	DestBlend = One; 
    
    	AlphaBlendEnable = false; 
    
    	PixelShader = compile ps_2_0 f(light1Color); 
    
    	}  
    
    
    }  
    
    
    

  8. substitute the content of sfera.xml with this:

    <?xml version="1.0" encoding="ISO-8859-1" ?>

    <dynamic_object>

    <diesel file="/data/objects/sfera.diesel" orientation_object="root_point" materials="/data/objects/materials.xml"/>

    <object name="root_point"/>

    <animation_group name="test" playing="true">

    <object name="sfera"/>

    </animation_group>

    <body name="bo" keyframed="true">

    <object name="sfera" collision_type="mesh_mopp" shadow_caster="true"/>

    </body>

    </dynamic_object>

    How has said wolfsong the units without the body or wrong body declaration are unselectable in the editor after placement.

    Note the

    <object name="sfera"/>

    and

    <object name="sfera" collision_type="mesh_mopp" shadow_caster="true"/>

    they have the same name chosen in 3dsmax "sfera".

    In the unit file u_sfera.xml lacks the line "network sync" that allow the sync of the animations for the on-line game. I have removed that because increase network traffic but this can cause graphics difference in the clients

    especially in coop.

    substitute the content of u_sfera.xml with this:

    <?xml version="1.0" encoding="ISO-8859-1"?>

    <units>

    <unit type="prop" name="test_sfera_anim" slot="20">

    <network sync="bodies" />

    <model file="sfera.xml"/>

    <script_class name="base" class="Base"/>

    <stats block="base_data">

    </stats>

    </unit>

    </units>

    Bye

  9. Galor' date='Apr 21 2008, 10:13 AM' post='519294']

    HI xdxxdy!

    You could explain a little better how to apply the effect to the material? ^_^

    I succeeded in creating the material DX9, but only I get a box for choosing 1 material (not 2 that you say) .... and I dont know how to load the file I created (with the notebook, and to renamed .fx) in 3DS MAX :unsure:

    Thanks for all :)

    click on yellow button and select the .fx just created in notepad

    t_fxm_f98796e.jpg

    selected the two textures apply the material to the object and apply a vertexpaint modifier, now you can paint

    t_matm_24f7746.jpg

    Bye

  10. string ParamID = "0x000001";

    texture TextureMap_125 : DiffuseMap

    <

    string ResourceName = "";

    string UIName = "Texture Map";

    string ResourceType = "2D";

    >;

    sampler2D TextureMap_125Sampler = sampler_state

    {

    Texture = <TextureMap_125>;

    MinFilter = LINEAR;

    MagFilter = LINEAR;

    MipFilter = LINEAR;

    AddressU = WRAP;

    AddressV = WRAP;

    };

    texture TextureMap_7516 : DiffuseMap

    <

    string ResourceName = "";

    string UIName = "Texture Map";

    string ResourceType = "2D";

    >;

    sampler2D TextureMap_7516Sampler = sampler_state

    {

    Texture = <TextureMap_7516>;

    MinFilter = LINEAR;

    MagFilter = LINEAR;

    MipFilter = LINEAR;

    AddressU = WRAP;

    AddressV = WRAP;

    };

    int texcoord0 : Texcoord

    <

    int Texcoord = 0;

    int MapChannel = 1;

    string UIWidget = "None";

    >;

    int texcoord1 : Texcoord

    <

    int Texcoord = 1;

    int MapChannel = 2;

    string UIWidget = "None";

    >;

    int texcoord2 : Texcoord

    <

    int Texcoord = 2;

    int MapChannel = 3;

    string UIWidget = "None";

    >;

    int texcoord3 : Texcoord

    <

    int Texcoord = 3;

    int MapChannel = 0;

    string UIWidget = "None";

    >;

    int texcoord4 : Texcoord

    <

    int Texcoord = 4;

    int MapChannel = -2;

    string UIWidget = "None";

    >;

    float3 light1Pos : POSITION

    <

    string UIName = "Light 1 Position";

    string Object = "PointLight";

    string Space = "World";

    int refID = 1;

    > = {100.0f, 100.0f, 100.0f};

    float4 light1Color : LIGHTCOLOR

    <

    int LightRef = 1;

    string UIWidget = "None";

    > = { 1.0f, 1.0f, 1.0f, 1.0f};

    float4x4 wvp : WorldViewProjection < string UIWidget = "None"; >;

    float4x4 worldI : WorldInverse < string UIWidget = "None"; >;

    float4x4 worldIT : WorldInverseTranspose < string UIWidget = "None"; >;

    float4x4 viewInv : ViewInverse < string UIWidget = "None"; >;

    float4x4 world : World < string UIWidget = "None"; >;

    struct a2v {

    float4 position : POSITION;

    float3 tangent : TANGENT;

    float3 binormal : BINORMAL;

    float3 normal : NORMAL;

    float2 texCoord : TEXCOORD0;

    float3 vertcol : TEXCOORD3;

    float vertalpha : TEXCOORD4;

    };

    struct v2f {

    float4 position : POSITION;

    float3 light1Vec : TEXCOORD0;

    float2 texCoord : TEXCOORD1;

    float4 color : COLOR;

    };

    v2f v(a2v In, uniform float3 lightPosition)

    {

    v2f Out = (v2f)0;

    Out.position = mul(In.position, wvp);

    float3x3 objTangentXf;

    #ifdef YUP

    objTangentXf[0] = In.tangent;

    objTangentXf[1] = -In.binormal;

    #else

    objTangentXf[0] = In.binormal;

    objTangentXf[1] = -In.tangent;

    #endif

    objTangentXf[2] = In.normal;

    float3 wsL1Pos = mul(In.position, world).xyz;

    float3 wsL1Vec = light1Pos - wsL1Pos;

    float3 osL1Vec = mul(wsL1Vec, worldI).xyz;

    Out.light1Vec = mul(objTangentXf, osL1Vec);

    Out.texCoord = In.texCoord;

    Out.texCoord.y += 1.0f;

    float4 VertColor = float4(In.vertcol.rgb, In.vertalpha.r);

    Out.color = VertColor;

    return Out;

    }

    float4 f(v2f In, uniform float4 lightColor) : COLOR

    {

    float4 TextureMap_125 = tex2D(TextureMap_125Sampler, In.texCoord.xy);

    float4 TextureMap_7516 = tex2D(TextureMap_7516Sampler, In.texCoord.xy);

    float4 INVertColor_5120 = In.color;

    float3 MathLerp_8483 = lerp(TextureMap_125.rgb, TextureMap_7516.rgb, INVertColor_5120.r);

    float3 input2 = MathLerp_8483;

    float3 ret = float3(0,0,0);

    float3 N = float3(0.0, 0.0, 1.0);

    float3 L1 = normalize(In.light1Vec.xyz);

    float3 light1 = saturate(dot(N, L1)) * light1Color.xyz * input2;

    ret += light1;

    float4 done = float4(ret, 1);

    return done;

    }

    technique Complete

    {

    pass one

    {

    VertexShader = compile vs_1_1 v(light1Pos);

    ZEnable = true;

    ZWriteEnable = true;

    CullMode = cw;

    AlphaBlendEnable = false;

    PixelShader = compile ps_3_0 f(light1Color);

    }

    }

    save this in a .fx file

    this is a shader to make interactive texture blend painting in max8

    1° create a new material of kind directx 9 shader

    2° load the effect .fx and chose the two texture that you want blend

    3° add a vetex paint at the object that you want texturing

    4° apply the material directx 9

    5° start paint, you will see the blending in realtime.

    Bye

    ps. remember remane the material to respect the declaration in the materials.xml

  11. Nice.

    There is no sound, right? Or did it just not work for me? Anyhow, it's a good start even though there clearly was some problems while recording it. :P

    I think there was an error in the last XML though as the object in the body is called "prova_landscape", when the mesh was called just "prova". So that should crash.

    Also, there was no unit XML added/edited in the tutorial, which would be required.

    Keep up the good work.

    yes wolfsong was wrong , damn !!!!

    thank you for the advise, i will replace the parts wrong of the video, soon as possible!

    bye

  12. Nice.

    There is no sound, right? Or did it just not work for me? Anyhow, it's a good start even though there clearly was some problems while recording it. :P

    I think there was an error in the last XML though as the object in the body is called "prova_landscape", when the mesh was called just "prova". So that should crash.

    Also, there was no unit XML added/edited in the tutorial, which would be required.

    Keep up the good work.

    yes wolfsong no sound :(

    this video is incomplete in xml editing part, however the name prova_landscape.xml is ok because i have called it so in the unit file. I have made this tutorial only for explain the 3ds max steps, the .xmls editied are for clarity only. the most important file for the purpose of the video is the material.xml

    a council for all new modder: look the tutorial custom landscape for graw 1 is very usefull for .xmls

    bye

  13. data\objects\ostacolo.xml

    <?xml version="1.0" encoding="ISO-8859-1" ?>

    <dynamic_object xmlns:xi="x">

    <diesel file="/data/objects/ostacolo.diesel" orientation_object="root_point"/>

    <body name="ostacolo" editable="true" start_active="true" remove_ray_type="body" add_ray_type="novis" template="no_collision">

    <object name="root_point"/>

    <object name="ostacolo" hidden="true" collision_type="box"/>

    </body>

    </dynamic_object>

×
×
  • Create New...