voldemort@Posted: Tue Apr 18, 2006 9:28 pm :
how do you animate a texture in 3d space (or atleast give the illusion of doing this)
*****************

again edited with even simpler code
simplye add the parm alpha pdflick [ time * 1 ]
to the diffusemap stage (yup diffuse not bumpmap)
and you dont even need a height map for this it will do it with the normal map file it will displace in 3d the normals that easy
****correction blend blend not diffuse****

Edited with new simpler method
Code:
textures/exhale1/gen_local_test3rgb
{
      
   {
      blend diffusemap
      map         textures/learning/shiny.tga
      translate      1,time*0.05
   }
   {
      blend specularmap
      map         textures/learning/shiny_a_s.tga
      translate      1,time*0.05
      rgb   subtleflick [ time * 4 ] / 3
      rgb    (.8 * sintable [.002 + time ]) + .2
   }
   {
      blend bumpmap
      map         textures/learning/shiny_a_local.tga
      translate      1,time*0.05
           rgb          subtleflick [ time * 4 ] / 3
      rgb    (.8 * sintable [.002 + time ]) + .2
   
   }

}   

note the rgb bit works like a charm
*********


********CREDITS*********
Rich_is_Bored
PBMAX
hi_volt
der_ton
blackdog
bittoman
doomkid3000
BloodRayne
ViPr (you were right about using just a few lines of code)
for all your insights comments patience and help with out wich I could not have figured this out and written this tutorial
also my hats off the the moderators and all the guys that contribute regularly here
************************
first off all the textures are 2d but using normal maps, height maps, specular maps deform particle etc you can give 3d illusion to your images

what if you wanted something to move outward and inward in a cycle how do you do this


*****edited with additional and simple method in a reply look for the entry that uses the expand deform in the mtr file

********



There are 3 methods so far
things you should know by now
1. how to create a diffuse map (standard texture)
2. how to create a specular map (light interaction textures)
3. Hopefully you should know how to create
a. a normal map
b. a height map
things you will need
A game engine we will assume your designing for either doom3 or quake 4 and have one of those engines.
a paint program In my examples I will be using the GIMP
http://www.gimp.org

THere is also a normal map plugin for the gimp wich is what I will be using in my screen shots
(google for the download )
a text editor
kate,kwirte,gedit or notepad if you use windows
texteditor will work fine on osx

As I mentioned there are 3 methods all with pros and cons
the first is the most omplex but maybe the most straight forward also

The first method will use a if statement in a mtr file for preaty much the whole process

First off create your base texture you will be using (your diffuse map)

now based on this texturee you need to create a black and white image that depicts the areas you want lit (dark little light interaction white means the most)

we will be useing a normal difuse map and a normal specular map
heres where the fun begins we are going to make a normal map for all the different stages we want here is an example of the 1st stage

[img=http://img141.imageshack.us/img141/8288/10zm2.th.jpg]

if you look you will note a few things none of wich are set in concrete but will give you an Idea where to start
first off to have a normal map follow the dimensions you want the standard practice is to invert x&y and as you notice those are check marked

next I selected filter 9x9 because I feel its of better quality the choice on filter is up to you
next scale I chose 100 the most possible

the reason being were going to make a second one
Image


if you note that the only parm is the scale
I now have 90 in there instead of 100
I will keep creating normal maps like theese until I hit 0
at wich point I will uncheck the boxes for invert X&Y and work my way back to 100

this will give me a bunch of normal map textures
now for my naming convention in my example

my folder for textrues

\base\textures\learning
the name of the texture is ig

so knowing that we should have a
ig.tga
ig_s.tga
and a bunch of ig local files in my example they are named like this
ig1_local.tga
ig2_local.tga
etc

so lets jump in and look at some code that we will be placing in our mtr file




Code:
textures/exhale1/expexp99

{
   

[color=blue]   {
      blend      diffusemap
      map      textures/learning/ig.tga
   }[/color]


[color=green]   {
      blend       specularmap
      map       textures/learning/ig_s.tga
   }[/color]



[color=red]   {
      if ( ( time * 88 ) % 44 == 0  )   
      blend bumpmap
      map      textures/learning/ig0_local.tga

   }[/color]




   {
      if ( ( time * 88 ) % 44 == 1 )   
      blend bumpmap
      map      textures/learning/ig1_local.tga

   }




   {
      if ( ( time * 88 ) % 44 == 2 )   
      blend bumpmap
      map      textures/learning/ig2_local.tga

   }




   {
      if ( ( time * 88 ) % 44 == 3 )   
      blend bumpmap
      map      textures/learning/ig3_local.tga

   }




   {
      if ( ( time * 88 ) % 44 == 4 )   
      blend bumpmap
      map      textures/learning/ig4_local.tga

   }




   {
      if ( ( time * 88 ) % 44 == 5 )   
      blend bumpmap
      map      textures/learning/ig5_local.tga

   }



   {
      if ( ( time * 88 ) % 44 == 6 )   
      blend bumpmap
      map      textures/learning/ig6_local.tga

   }




   {
      if ( ( time * 88 ) % 44 == 7 )   
      blend bumpmap
      map      textures/learning/ig7_local.tga

   }






   {
      if ( ( time * 88 ) % 44 == 8 )   
      blend bumpmap
      map      textures/learning/ig8_local.tga

   }




   {
      if ( ( time * 88 ) % 44 == 9 )   
      blend bumpmap
      map      textures/learning/ig9_local.tga

   }




   {
      if ( ( time * 88 ) % 44 == 10 )   
      blend bumpmap
      map      textures/learning/ig10_local.tga

   }




   {
      if ( ( time * 88 ) % 44 == 11 )   
      blend bumpmap
      map      textures/learning/ig10_local.tga

   }


   {
      if ( ( time * 88 ) % 44 == 12 )   
      blend bumpmap
      map      textures/learning/ig9_local.tga

   }

   {
      if ( ( time * 88 ) % 44 == 13 )   
      blend bumpmap
      map      textures/learning/ig8_local.tga

   }

   {
      if ( ( time * 88 ) % 44 == 14 )   
      blend bumpmap
      map      textures/learning/ig7_local.tga

   }

   {
      if ( ( time * 88 ) % 44 == 15 )   
      blend bumpmap
      map      textures/learning/ig6_local.tga

   }

   {
      if ( ( time * 88 ) % 44 == 16 )   
      blend bumpmap
      map      textures/learning/ig5_local.tga

   }

   {
      if ( ( time * 88 ) % 44 == 17 )   
      blend bumpmap
      map      textures/learning/ig4_local.tga

   }

   {
      if ( ( time * 88 ) % 44 == 18 )   
      blend bumpmap
      map      textures/learning/ig3_local.tga

   }


   {
      if ( ( time * 88 ) % 44 == 19 )   
      blend bumpmap
      map      textures/learning/ig2_local.tga

   }



   {
      if ( ( time * 88 ) % 44 == 20 )   
      blend bumpmap
      map      textures/learning/ig1_local.tga

   }

   {
      if ( ( time * 88 ) % 44 == 21 )   
      blend bumpmap
      map      textures/learning/ig0_local.tga

   }

   {
      if ( ( time * 88 ) % 44 == 22  )   
      blend bumpmap
      map      textures/learning/ig0b_local.tga

   }




   {
      if ( ( time * 88 ) % 44 == 23 )   
      blend bumpmap
      map      textures/learning/ig1b_local.tga

   }




   {
      if ( ( time * 88 ) % 44 == 24 )   
      blend bumpmap
      map      textures/learning/ig2b_local.tga

   }




   {
      if ( ( time * 88 ) % 44 == 25 )   
      blend bumpmap
      map      textures/learning/ig3b_local.tga

   }




   {
      if ( ( time * 88 ) % 44 == 26 )   
      blend bumpmap
      map      textures/learning/ig4b_local.tga

   }




   {
      if ( ( time * 88 ) % 44 == 27 )   
      blend bumpmap
      map      textures/learning/ig5b_local.tga

   }



   {
      if ( ( time * 88 ) % 44 == 28 )   
      blend bumpmap
      map      textures/learning/ig6b_local.tga

   }




   {
      if ( ( time * 88 ) % 44 == 29 )   
      blend bumpmap
      map      textures/learning/ig7b_local.tga

   }






   {
      if ( ( time * 88 ) % 44 == 30 )   
      blend bumpmap
      map      textures/learning/ig8b_local.tga

   }




   {
      if ( ( time * 88 ) % 44 == 31 )   
      blend bumpmap
      map      textures/learning/ig9b_local.tga

   }




   {
      if ( ( time * 88 ) % 44 == 32 )   
      blend bumpmap
      map      textures/learning/ig10b_local.tga

   }




   {
      if ( ( time * 88 ) % 44 == 33 )   
      blend bumpmap
      map      textures/learning/ig10b_local.tga

   }


   {
      if ( ( time * 88 ) % 44 == 34 )   
      blend bumpmap
      map      textures/learning/ig9b_local.tga

   }

   {
      if ( ( time * 88 ) % 44 == 35 )   
      blend bumpmap
      map      textures/learning/ig8b_local.tga

   }

   {
      if ( ( time * 88 ) % 44 == 36 )   
      blend bumpmap
      map      textures/learning/ig7b_local.tga

   }

   {
      if ( ( time * 88 ) % 44 == 37 )   
      blend bumpmap
      map      textures/learning/ig6b_local.tga

   }

   {
      if ( ( time * 88 ) % 44 == 38 )   
      blend bumpmap
      map      textures/learning/ig5b_local.tga

   }

   {
      if ( ( time * 88 ) % 44 == 39 )   
      blend bumpmap
      map      textures/learning/ig4b_local.tga

   }

   {
      if ( ( time * 88 ) % 44 == 40 )   
      blend bumpmap
      map      textures/learning/ig3b_local.tga

   }


   {
      if ( ( time * 88 ) % 44 == 41 )   
      blend bumpmap
      map      textures/learning/ig2b_local.tga

   }



   {
      if ( ( time * 88 ) % 44 == 42 )   
      blend bumpmap
      map      textures/learning/ig1b_local.tga

   }

[color=red]   {
      if ( ( time * 88 ) % 44 == 43 )   
      blend bumpmap
      map      textures/learning/ig0b_local.tga

   }[/color]


}


so lets disect this

first off
textures/exhale1/expexp99
this tells the editor where to place the texture in the list of available textures

next we have a block of code like this

Code:
   {
      blend      diffusemap
      map      textures/learning/ig.tga
   }


this tells the engine that we want to add the diffuse map texture to our material
in this case
textures/leargning/ig.tga

next we have this block of code

Code:
   {
      blend       specularmap
      map       textures/learning/ig_s.tga
   }



this tells the engine we want to add the specular map ig_s.tga

theese two textures are constants wo thats the only time we have to inform the engine of their placement

next we have a chunk of code like this

Code:
   {
      if ( ( time * 88 ) % 44 == 0  )   
      blend bumpmap
      map      textures/learning/ig0_local.tga

   }


lets look at this

we are basically stating that we want to break this up into a bunch of frames next we stat that if its the first frame 0 so when we reach the first frame we want the engine to add the layer

bumpmap
textures/learning/ig0_local.tga
our first normal map

the next block says if its the second frame 1 we want to replace
ig0_local.tga with
ig1_local.tga and so on and so forth till we get to number 44
then repeat the loop

so if we altered our normal maps to displace the texture for each fram as the framse cycle we will be presented with a new frame with dirrerent 3d charecteristics

this method in some ways is the most stright forward but also the most time consuming
where the other methods we will delve into give you more control

2nd method use a table and multiple normal maps

lets jump in then we will explain

Code:
table expanderTable4 { snap { 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4, 4, 4, 4, 5, 5, 5, 5, 5, 6, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 20, 20, 20, 19, 19, 19, 18, 18, 18, 18, 17, 17, 17, 16, 16, 16, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, 19, 19, 20, 20, 20, 20, 20, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 20, 20, 20, 20, 19, 19, 19, 19, 18, 18, 18, 17, 17, 17, 16, 16, 16, 15, 15, 15, 14, 14, 14, 14, 13, 13, 13, 12, 12, 12, 12, 11, 11, 11, 10, 10, 10, 9, 9, 9, 9, 8, 8, 8, 8, 8, 8, 8, 8, 7, 7, 7, 7, 7, 6, 6, 6, 7, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 8, 8, 9, 9, 9, 9, 9, 10 ,10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 12, 12, 12, 12, 13, 13, 13, 13, 13, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 18, 17, 17, 17, 17, 16, 16, 15, 15, 14, 13, 12, 11, 10, 9, 8, 7, 6, 5, 4, 3, 2, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 6, 6, 6, 6, 6, 7, 7, 7, 7, 7, 7, 8, 8, 8, 8, 7, 7, 7, 6, 6, 6, 6, 6, 5, 5, 5, 5, 4, 4, 4, 4, 4, 4, 4, 3, 3, 3, 3, 2, 2, 2, 1 } }



Code:
textures/exhale1/igig2678

{
   qer_editorimage textures/learning/ig.tga
   flesh
   diffusemap   textures/learning/ig.tga
   specularmap   textures/learning/ig_s.tga

  {
      if ( expanderTable4[ time / 8 ] == 1 )
      blend bumpmap
      map      textures/learning/ig1b_local.tga
   }



   {
      if ( expanderTable4[ time / 8 ] == 2 )
      blend bumpmap
      map      textures/learning/ig2b_local.tga
   }



   {
      if ( expanderTable4[ time / 8 ] == 3 )
      blend bumpmap
      map      textures/learning/ig3b_local.tga
   }


{
      if ( expanderTable4[ time / 8 ] == 4 )
      blend bumpmap
      map      textures/learning/ig4b_local.tga
   }



   {
      if ( expanderTable4[ time / 8 ] == 5 )
      blend bumpmap
      map      textures/learning/ig5b_local.tga
   }


   


   {
      if ( expanderTable4[ time / 8 ] == 6 )
      blend bumpmap
      map      textures/learning/ig6b_local.tga
   }


{
      if ( expanderTable4[ time / 8 ] == 7 )
      blend bumpmap
      map      textures/learning/ig7b_local.tga
   }



   {
      if ( expanderTable4[ time / 8 ] == 8 )
      blend bumpmap
      map      textures/learning/ig8b_local.tga
   }



   {
      if ( expanderTable4[ time / 8 ] == 9 )
      blend bumpmap
      map      textures/learning/ig9b_local.tga
   }


{
      if ( expanderTable4[ time / 8 ] == 10 )
      blend bumpmap
      map      textures/learning/ig10b_local.tga
   }



   {
      if ( expanderTable4[ time / 8 ] == 11 )
      blend bumpmap
      map      textures/learning/ig10_local.tga
   }



    {
      if ( expanderTable4[ time / 8 ] == 12 )
      blend bumpmap
      map      textures/learning/ig9_local.tga
   }



   {
      if ( expanderTable4[ time / 8 ] == 13 )
      blend bumpmap
      map      textures/learning/ig8_local.tga
   }



   {
      if ( expanderTable4[ time / 8 ] == 14 )
      blend bumpmap
      map      textures/learning/ig7_local.tga
   }


{
      if ( expanderTable4[ time / 8 ] == 15 )
      blend bumpmap
      map      textures/learning/ig6_local.tga
   }



   {
      if ( expanderTable4[ time / 8 ] == 16 )
      blend bumpmap
      map      textures/learning/ig5_local.tga
   }


   


   {
      if ( expanderTable4[ time / 8 ] == 17 )
      blend bumpmap
      map      textures/learning/ig4_local.tga
   }


{
      if ( expanderTable4[ time / 8 ] == 18 )
      blend bumpmap
      map      textures/learning/ig3_local.tga
   }



   {
      if ( expanderTable4[ time / 8 ] == 19 )
      blend bumpmap
      map      textures/learning/ig2_local.tga
   }



   {
      if ( expanderTable4[ time / 8 ] == 20 )
      blend bumpmap
      map      textures/learning/ig1_local.tga
   }


{
      if ( expanderTable4[ time / 8 ] == 21 )
      blend bumpmap
      map      textures/learning/ig0_local.tga
   }


}


lets take a look at this

first off we have a table

table expanderTable4
then we have a bunch of numbers

theese numbers will tell the mtr what stage to present and when

so lets look at the major difference of the actuall mtr
one instead of this

Code:
   {
      if ( ( time * 38 ) % 18 == 0 )
      blend difusemap
      map      textures/learning/8.tga
   }


we now have this

Code:
  {
      if ( expanderTable4[ time / 8 ] == 1 )
      blend bumpmap
      map      textures/learning/ig1b_local.tga
   }


what we are doing is stating that when ever the table reads a 1 we want it to render ig1b_local.tga
if it hits a 2
then use
ig2b_local.tga

so we can simplify the method bu simply setting up a table to tell it how and when to cycle the texture

lets look at the other part of the code that has changed

Code:
[time / 8 ]

we are saying we want to go 8 times slower if we wanted 8 times faster we would replace the / with a *

this is nice but you still have to create a ton of textures to use it
not very efficient so lets cheat lets cut it down to just one normal map

we will now introduce a height map and the addnormals command

addnormals combines a normal map and a height map into one textures and allows scaling of its properties
a height map is a b&w height representation light and dark designating the depth values

time to jump right in again

Code:
textures/exhale1/greenyjump
{
      diffusemap   textures/learning/greeny.tga
      specularmap   textures/learning/greeny_s.tga

   {
        if ( expanderTable4[ time / 6 ] == 0 )
           blend bumpmap
           map   addnormals ( textures/learning/greeny_local.tga, heightmap( textures/learning/greeny_h.tga, 23 ))
     }

   {
        if ( expanderTable4[ time / 6 ] == 1 )
           blend bumpmap
           map   addnormals ( textures/learning/greeny_local.tga, heightmap( textures/learning/greeny_h.tga, 22 ))
     }

   {
        if ( expanderTable4[ time / 6 ] == 2 )
           blend bumpmap
           map   addnormals ( textures/learning/greeny_local.tga, heightmap( textures/learning/greeny_h.tga, 21 ))
     }

   {
        if ( expanderTable4[ time / 6 ] == 3 )
           blend bumpmap
           map   addnormals ( textures/learning/greeny_local.tga, heightmap( textures/learning/greeny_h.tga, 20 ))
     }

   {
        if ( expanderTable4[ time / 6 ] == 4 )
           blend bumpmap
           map   addnormals ( textures/learning/greeny_local.tga, heightmap( textures/learning/greeny_h.tga, 19 ))
     }

   {
        if ( expanderTable4[ time / 6 ] == 5 )
           blend bumpmap
           map   addnormals ( textures/learning/greeny_local.tga, heightmap( textures/learning/greeny_h.tga, 18 ))
     }

   {
        if ( expanderTable4[ time / 6 ] == 6 )
           blend bumpmap
           map   addnormals ( textures/learning/greeny_local.tga, heightmap( textures/learning/greeny_h.tga, 17 ))
     }

   {
        if ( expanderTable4[ time / 6 ] == 7 )
           blend bumpmap
           map   addnormals ( textures/learning/greeny_local.tga, heightmap( textures/learning/greeny_h.tga, 16 ))
     }

   {
        if ( expanderTable4[ time / 6 ] == 8 )
           blend bumpmap
           map   addnormals ( textures/learning/greeny_local.tga, heightmap( textures/learning/greeny_h.tga, 15 ))
     }

   {
        if ( expanderTable4[ time / 6 ] == 0 )
           blend bumpmap
           map   addnormals ( textures/learning/greeny_local.tga, heightmap( textures/learning/greeny_h.tga, 14 ))
     }

   {
        if ( expanderTable4[ time / 6 ] == 9 )
           blend bumpmap
           map   addnormals ( textures/learning/greeny_local.tga, heightmap( textures/learning/greeny_h.tga, 13 ))
     }

   {
        if ( expanderTable4[ time / 6 ] == 10 )
           blend bumpmap
           map   addnormals ( textures/learning/greeny_local.tga, heightmap( textures/learning/greeny_h.tga, 12 ))
     }

   {
        if ( expanderTable4[ time / 6 ] == 11 )
           blend bumpmap
           map   addnormals ( textures/learning/greeny_local.tga, heightmap( textures/learning/greeny_h.tga, 11 ))
     }
   {
        if ( expanderTable4[ time / 6 ] == 12 )
           blend bumpmap
           map   addnormals ( textures/learning/greeny_local.tga, heightmap( textures/learning/greeny_h.tga, 10 ))
     }
   {
        if ( expanderTable4[ time / 6 ] == 13 )
           blend bumpmap
           map   addnormals ( textures/learning/greeny_local.tga, heightmap( textures/learning/greeny_h.tga, 9 ))
     }
   {
        if ( expanderTable4[ time / 6 ] == 14 )
           blend bumpmap
           map   addnormals ( textures/learning/greeny_local.tga, heightmap( textures/learning/greeny_h.tga, 8 ))
     }
   {
        if ( expanderTable4[ time / 6 ] == 15 )
           blend bumpmap
           map   addnormals ( textures/learning/greeny_local.tga, heightmap( textures/learning/greeny_h.tga, 7 ))
     }
   {
        if ( expanderTable4[ time / 6 ] == 16 )
           blend bumpmap
           map   addnormals ( textures/learning/greeny_local.tga, heightmap( textures/learning/greeny_h.tga, 6 ))
     }
   {
        if ( expanderTable4[ time / 6 ] == 17 )
           blend bumpmap
           map   addnormals ( textures/learning/greeny_local.tga, heightmap( textures/learning/greeny_h.tga, 5 ))
     }
   {
        if ( expanderTable4[ time / 6 ] == 18 )
           blend bumpmap
           map   addnormals ( textures/learning/greeny_local.tga, heightmap( textures/learning/greeny_h.tga, 4 ))
     }
   {
        if ( expanderTable4[ time / 6 ] == 19 )
           blend bumpmap
           map   addnormals ( textures/learning/greeny_local.tga, heightmap( textures/learning/greeny_h.tga, 3 ))
     }
   {
        if ( expanderTable4[ time / 6 ] == 20 )
           blend bumpmap
           map   addnormals ( textures/learning/greeny_local.tga, heightmap( textures/learning/greeny_h.tga, 2 ))
     }
   {
        if ( expanderTable4[ time / 6 ] == 21 )
           blend bumpmap
           map   addnormals ( textures/learning/greeny_local.tga, heightmap( textures/learning/greeny_h.tga, 1 ))
     }

}


lets take a loot at the differences

we now have
just one local file

greeny_local.tga

and a new file
a height map
greeny_h.tga

then at the end we have som funny numbers that start at 23 and on the bottom line has a 1 theese are really the only variables we are altering what we are saying
is for each time that the table hits a certain number use that height map at this level of intensity..
so even though you still require a lot of code most of it can be done quickly with a copy and paste effort.

so what happens if we want it to push inwards can we use a negative sign

unfortunatly not
you will need to create a second height map with the heightmap colors inverted and the normal maps x&y not inverted and reference them for teh sequece you want to push inward with

thats all for now when I get a chance I plan on releasing a prefab pack with all theese textures and a whole lot more
pluse I will upload an animated gif so you can see the results



pbmax@Posted: Tue Apr 18, 2006 9:58 pm :
couldn't you skip making a hundred different normal maps by creating a single grey scale height map in the gimp right off the bat?



doomkid3000@Posted: Tue Apr 18, 2006 10:44 pm :
couldn't we use a roq video of a localmap instead, the quality might not be the same but is it possible :o



voldemort@Posted: Wed Apr 19, 2006 3:17 am :
the last example uses a height map


Quote:
this is nice but you still have to create a ton of textures to use it
not very efficient so lets cheat lets cut it down to just one normal map

we will now introduce a height map and the addnormals command

addnormals combines a normal map and a height map into one textures and allows scaling of its properties
a height map is a b&w height representation light and dark designating the depth values

time to jump right in again



Code:
[quote]textures/exhale1/greenyjump
{
      diffusemap   textures/learning/greeny.tga
      specularmap   textures/learning/greeny_s.tga

   {
         if ( expanderTable4[ time / 6 ] == 0 )
           blend bumpmap
           map   addnormals ( textures/learning/greeny_local.tga, heightmap( textures/learning/greeny_h.tga, 23 ))
     }[/quote]


and that is an interesting idea to use a roq file you could also just use an animated model im just trying to toss more possibilities in the mix and that one with the roq sounds interesting i might give it a try later



voldemort@Posted: Wed Apr 19, 2006 3:28 am :
one other point to note is that this is not limited to simple normal or height map effects

textures/exhale1/399

Code:
{

   {
      blend      diffusemap
      map      textures/learning/8.tga
   }


   {
      if ( ( time * 6 ) % 3 == 0 )   
      blend bumpmap
      map      textures/learning/8sm_local.tga
   }
   {
      if ( ( time * 6 ) % 3 == 0 )   
      blend specularmap
      map      textures/learning/8lt_s.tga
   }


   {
      if ( ( time * 6 ) % 3 == 1 )   
      blend bumpmap
      map      textures/learning/8nm_local.tga
   }
   {
      if ( ( time * 6 ) % 3 == 0 )   
      blend specularmap
      map      textures/learning/8nm_s.tga
   }

   {
      if ( ( time * 6 ) % 3 == 2 )   
      blend bumpmap
      map      textures/learning/8lg_local.tga
   }
   {
      if ( ( time * 6 ) % 3 == 0 )   
      blend specularmap
      map      textures/learning/8dk_s.tga
   }
}



in this example i wanted to alter the specualar as well and it works

you can also cycle the diffuse map just as easily and cordinates + much more for instance I have and example that scales using a normal map and rotates


Code:
textures/exhale1/2d99

{         

   {
      if ( ( time * 24 ) % 12 == 0  )   
      blend bumpmap
      map      textures/learning/8sm_local.tga
      rgba 1.0
      rotate   0.083
   }
   {
      if ( ( time * 24 ) % 12 == 0  )   
      blend diffusemap
      map      textures/learning/8lt.tga
      rotate   0.083
   }
   {
      if ( ( time * 24 ) % 12 == 0  )   
      blend specularmap
      map      textures/learning/8lt_s.tga
      rgba 0.33
      rotate   0.083
   }


   {
      if ( ( time * 24 ) % 12 == 1 )   
      blend bumpmap
      map      textures/learning/8sm_local.tga
      rgba 1.0
      rotate   0.166
   }
   {
      if ( ( time * 24 ) % 12 == 1  )   
      blend diffusemap
      map      textures/learning/8lt.tga
      rotate   0.166      
   }
   {
      if ( ( time * 24 ) % 12 == 1  )   
      blend specularmap
      map      textures/learning/8lt_s.tga
      rgba 0.33
      rotate   0.166
   }


   {
      if ( ( time * 24 ) % 12 == 2 )   
      blend bumpmap
      map      textures/learning/8sm_local.tga
      rgba 1.0
      rotate   0.249
   }
   {
      if ( ( time * 24 ) % 12 == 2  )   
      blend diffusemap
      map      textures/learning/8lt.tga
      rotate   0.249      
   }
   {
      if ( ( time * 24 ) % 12 == 2  )   
      blend specularmap
      map      textures/learning/8lt_s.tga
      rgba 0.33
      rotate   0.249
   }


   {
      if ( ( time * 24 ) % 12 == 3 )   
      blend bumpmap
      map      textures/learning/8nm_local.tga
      rgba 0.66
      rotate   0.332
   }
   {
      if ( ( time * 24 ) % 12 == 3  )   
      blend diffusemap
      map      textures/learning/8nm.tga
      rotate   0.332      
   }
   {
      if ( ( time * 24 ) % 12 == 3  )   
      blend specularmap
      map      textures/learning/8nm_s.tga
      rgba 0.66
      rotate   0.332
   }


   {
      if ( ( time * 24 ) % 12 == 4 )   
      blend bumpmap
      map      textures/learning/8nm_local.tga
      rgba 0.66
      rotate   0.415
   }
   {
      if ( ( time * 24 ) % 12 == 4  )   
      blend diffusemap
      map      textures/learning/8nm.tga
      rotate   0.415
      
   }
   {
      if ( ( time * 24 ) % 12 == 4  )   
      blend specularmap
      map      textures/learning/8nm_s.tga
      rgba 0.66
      rotate   0.415
   }


   {
      if ( ( time * 24 ) % 12 == 5 )   
      blend bumpmap
      map      textures/learning/8nm_local.tga
      rgba 0.66
      rotate   0.498
   }
   {
      if ( ( time * 24 ) % 12 == 5  )   
      blend diffusemap
      map      textures/learning/8nm.tga
      rotate   0.498
   }
   {
      if ( ( time * 24 ) % 12 == 5  )   
      blend specularmap
      map      textures/learning/8nm_s.tga
      rgba 0.66
      rotate   0.498
   }


   {
      if ( ( time * 24 ) % 12 == 6 )   
      blend bumpmap
      map      textures/learning/8lg_local.tga
      rgba 0.33
      rotate   0.581
   }
   {
      if ( ( time * 24 ) % 12 == 6  )   
      blend diffusemap
      map      textures/learning/8dk.tga
      rotate   0.581      
   }
   {
      if ( ( time * 24 ) % 12 == 6  )   
      blend specularmap
      map      textures/learning/8dk_s.tga
      rgba 1.0
      rotate   0.581
   }
   {
      if ( ( time * 24 ) % 12 == 7  )   
      blend diffusemap
      map      textures/learning/8dk.tga
      rotate   0.664      
   }

   {
      if ( ( time * 24 ) % 12 == 7 )   
      blend bumpmap
      map      textures/learning/8lg_local.tga
      rgba 0.33
      rotate   0.664
   }

   {
      if ( ( time * 24 ) % 12 == 7  )   
      blend specularmap
      map      textures/learning/8dk_s.tga
      rgba 1.0
      rotate   0.664
   }




   {
      if ( ( time * 24 ) % 12 == 8 )   
      blend bumpmap
      map      textures/learning/8lg_local.tga
      rgba 0.33
      rotate   0.747
   }
   {
      if ( ( time * 24 ) % 12 == 8  )   
      blend diffusemap
      map      textures/learning/8dk.tga
      rotate   0.747
      
   }
   {
      if ( ( time * 24 ) % 12 == 8  )   
      blend specularmap
      map      textures/learning/8dk_s.tga
      rgba 1.0
      rotate   0.747
   }


   {
      if ( ( time * 24 ) % 12 == 9 )   
      blend bumpmap
      map      textures/learning/8nm_local.tga
      rgba 0.66
      rotate   0.83

   }
   {
      if ( ( time * 24 ) % 12 == 9  )   
      blend diffusemap
      map      textures/learning/8nm.tga
      rotate   0.83
      
   }
   {
      if ( ( time * 24 ) % 12 == 9  )   
      blend specularmap
      map      textures/learning/8nm_s.tga
      rgba 0.66
      rotate   0.83
   }


   {
      if ( ( time * 24 ) % 12 == 10 )   
      blend bumpmap
      map      textures/learning/8nm_local.tga
      rgba 0.66
      rotate   0.913
   }
   {
      if ( ( time * 24 ) % 12 == 10  )   
      blend diffusemap
      map      textures/learning/8nm.tga
      rotate   0.913      
   }
   {
      if ( ( time * 24 ) % 12 == 10  )   
      blend specularmap
      map      textures/learning/8nm_s.tga
      rgba 0.66
      rotate   0.913
   }


   {
      if ( ( time * 24 ) % 12 == 11 )   
      blend bumpmap
      map      textures/learning/8nm_local.tga
      rgba 0.66
      rotate   0.996
   }
   {
      if ( ( time * 24 ) % 12 == 11  )   
      blend diffusemap
      map      textures/learning/8nm.tga
      rotate   0.996
      
   }
   {
      if ( ( time * 24 ) % 12 == 11  )   
      blend specularmap
      map      textures/learning/8nm_s.tga
      rgba 0.66
      rotate   0.996
   }
}

using this combination it rotates a full 360 for every cycle



Black Dog@Posted: Wed Apr 19, 2006 12:40 pm :
You can change texture coordinates with math directly? Many times more easily?

Code:
{
      blend   bumpmap
      map   textures/learning/8sm_local.tga
      rotate   time*0.08
}



BloodRayne@Posted: Wed Apr 19, 2006 1:47 pm :
Black Dog wrote:
You can change texture coordinates with math directly? Many time more easily?

Code:
{
      blend   bumpmap
      map   textures/learning/8sm_local.tga
      rotate   time*0.08
}


Yes, and many more functions as well. :wink:



voldemort@Posted: Thu Apr 20, 2006 3:54 am :
example of modiyers
in case you want something like a translate or deform or vertex program
you of course will need to create a table in this example I used a table I labeld
expanderTable3


Code:

textures/exhale1/heightpulsetest3g567b
{
   translucent
   flesh
   nonsolid
   deform particle   admin_hallfog

   {
           vertexProgram           heatHazeWithMask.vfp
                vertexParm              0       time * 0.1 , time * 0.2 // texture scrolling
                vertexParm              1       0.9            // magnitude of the distortion
                fragmentProgram         heatHazeWithMask.vfp
                fragmentMap             0       _currentRender
                fragmentMap             1       textures/sfx/vp1.tga   // the normal map for distortion
                fragmentMap             2       textures/sfx/vp1_alpha.tga   // the distortion blend map
   
   }

   {
      blend diffusemap
      map    textures/learning/greenyik.tga
      rotate time*0.01 
      translate   time*-.01,time*.04

   }

   {
      blend specularmap
      map    textures/learning/greenyik_s.tga
      rotate time*0.01 
      translate   time*-.01,time*.04

   }


   {
        if ( expanderTable3[ time / 6 ] == 0 )
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_a_local.tga, heightmap( textures/learning/greenyik_a_h.tga, 22 ))
      rotate time*0.01 
      translate   time*-.01,time*.04

   }
   {
        if ( expanderTable3[ time / 6 ] == 1 )
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_a_local.tga, heightmap( textures/learning/greenyik_a_h.tga, 20 ))
      rotate time*0.01 
      translate   time*-.01,time*.04

   }
   
   {
        if ( expanderTable3[ time / 6 ] == 2 )
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_a_local.tga, heightmap( textures/learning/greenyik_a_h.tga, 18 ))
      rotate time*0.01 
      translate   time*-.01,time*.04

   }
   {
        if ( expanderTable3[ time / 6 ] == 3 )
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_a_local.tga, heightmap( textures/learning/greenyik_a_h.tga, 16 ))
      rotate time*0.01 
      translate   time*-.01,time*.04

   }
   {
        if ( expanderTable3[ time / 6 ] == 4 )
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_a_local.tga, heightmap( textures/learning/greenyik_a_h.tga, 14 ))
      rotate time*0.01 
      translate   time*-.01,time*.04

   }
   {
        if ( expanderTable3[ time / 6 ] == 5 )
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_a_local.tga, heightmap( textures/learning/greenyik_a_h.tga, 12 ))
      rotate time*0.01 
      translate   time*-.01,time*.04

   }
   {
        if ( expanderTable3[ time / 6 ] == 6 )
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_a_local.tga, heightmap( textures/learning/greenyik_a_h.tga, 10 ))
      rotate time*0.01 
      translate   time*-.01,time*.04

   }
   {
        if ( expanderTable3[ time / 6 ] == 7 )
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_a_local.tga, heightmap( textures/learning/greenyik_a_h.tga, 8 ))
      rotate time*0.01 
      translate   time*-.01,time*.04

   }
   {
        if ( expanderTable3[ time / 6 ] == 8 )
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_a_local.tga, heightmap( textures/learning/greenyik_a_h.tga, 6 ))
      rotate time*0.01 
      translate   time*-.01,time*.04

   }
   {
        if ( expanderTable3[ time / 6 ] == 9 )
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_a_local.tga, heightmap( textures/learning/greenyik_a_h.tga, 4 ))
      rotate time*0.01 
      translate   time*-.01,time*.04

   }   


   {
        if ( expanderTable3[ time / 6 ] == 10 )
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_a_local.tga, heightmap( textures/learning/greenyik_a_h.tga, 2 ))
      rotate time*0.01 
      translate   time*-.01,time*.04

   }
   {
        if ( expanderTable3[ time / 6 ] == 11 )
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_a_local.tga, heightmap( textures/learning/greenyik_a_h.tga, 0 ))
      rotate time*0.01 
      translate   time*-.01,time*.04

   }

   {
        if ( expanderTable3[ time / 6 ] == 12 )
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_b_local.tga, heightmap( textures/learning/greenyik_b_h.tga, 2 ))
      rotate time*0.01 
      translate   time*-.01,time*.04

   }
   {
        if ( expanderTable3[ time / 6 ] == 13 )
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_b_local.tga, heightmap( textures/learning/greenyik_b_h.tga, 4 ))
      rotate time*0.01 
      translate   time*-.01,time*.04

   }

   {
        if ( expanderTable3[ time / 6 ] == 14 )
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_b_local.tga, heightmap( textures/learning/greenyik_b_h.tga, 6 ))
      rotate time*0.01 
      translate   time*-.01,time*.04

   }
   {
        if ( expanderTable3[ time / 6 ] == 15 )
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_b_local.tga, heightmap( textures/learning/greenyik_b_h.tga, 8 ))
      rotate time*0.01 
      translate   time*-.01,time*.04

   }

   {
        if ( expanderTable3[ time / 6 ] == 16 )
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_b_local.tga, heightmap( textures/learning/greenyik_b_h.tga, 10 ))
      rotate time*0.01 
      translate   time*-.01,time*.04

   }
   {
        if ( expanderTable3[ time / 6 ] == 17 )
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_b_local.tga, heightmap( textures/learning/greenyik_b_h.tga, 12 ))
      rotate time*0.01 
      translate   time*-.01,time*.04

   }

   {
        if ( expanderTable3[ time / 6 ] == 18 )
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_b_local.tga, heightmap( textures/learning/greenyik_b_h.tga, 14 ))
      rotate time*0.01 
      translate   time*-.01,time*.04

   }
   {
        if ( expanderTable3[ time / 6 ] == 19 )
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_b_local.tga, heightmap( textures/learning/greenyik_b_h.tga, 16 ))
      rotate time*0.01 
      translate   time*-.01,time*.04

   }

   {
        if ( expanderTable3[ time / 6 ] == 20 )
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_b_local.tga, heightmap( textures/learning/greenyik_b_h.tga, 18 ))
      rotate time*0.01 
      translate   time*-.01,time*.04

   }
   {
        if ( expanderTable3[ time / 6 ] == 21 )
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_b_local.tga, heightmap( textures/learning/greenyik_b_h.tga, 20 ))
      rotate time*0.01 
      translate   time*-.01,time*.04

   }
}
      


have fun and enjoy



nbrancaccio@Posted: Thu Apr 20, 2006 4:40 am :
Hey great great stuff! Just one question for you. Do you think you could post some gif image examples of these? It would greatly help give a quick example as to what this type of stuff really does, and it would probably also help in grabbing attention. Just my 2 cents. GREAT STUFF! Im very excited to start trying it out! :D



voldemort@Posted: Thu Apr 20, 2006 8:56 pm :
more fun with this stuff

like how about cycling a vertex program cycling scroll peeds and more heres an example mtr


Code:
textures/exhale1/portaltestgg3
{
   
      translucent
      nonsolid
      deform particle2 al3_jumbopipesteam


      {
        if ( expanderTable4[ time / 12 ] == 0 )
   
           vertexProgram           heatHazeWithMask.vfp
                vertexParm              0       time * 0.5 , time * 0.5 // texture scrolling
                vertexParm              1.2       0.75            // magnitude of the distortion
                fragmentProgram         heatHazeWithMask.vfp
                fragmentMap             0       _currentRender
                fragmentMap             1       textures/sfx/vp1.tga   // the normal map for distortion
                fragmentMap             2       textures/sfx/vp1_alpha.tga   // the distortion blend map

   }

   {
        if ( expanderTable4[ time / 12 ] == 0 )
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_a_local.tga, heightmap( textures/learning/greenyik_a_h.tga, 22 ))
      rotate time*0.01 
      translate   time*-.001,time*.004


   }


   {
        if ( expanderTable4[ time / 12 ] == 0 )
           blend diffusemap
           map      textures/learning/greenyik.tga
      rotate time*0.01 
      translate   time*-.001,time*.004


   }

   {
        if ( expanderTable4[ time / 12 ] == 0 )
           blend specularmap
           map      textures/learning/greenyik_s.tga
      rotate time*0.01 
      translate   time*-.001,time*.004


   }


      {
        if ( expanderTable4[ time / 12 ] == 1 )
   
           vertexProgram           heatHazeWithMask.vfp
                vertexParm              0       time * 0.5 , time * 0.5 // texture scrolling
                vertexParm              1       0.5            // magnitude of the distortion
                fragmentProgram         heatHazeWithMask.vfp
                fragmentMap             0       _currentRender
                fragmentMap             1       textures/sfx/vp1.tga   // the normal map for distortion
                fragmentMap             2       textures/sfx/vp1_alpha.tga   // the distortion blend map

   }      

   {
        if ( expanderTable4[ time / 12 ] == 1 )
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_a_local.tga, heightmap( textures/learning/greenyik_a_h.tga, 20 ))
      rotate time*0.01 
      translate   time*-.001,time*.004


   }


   {
        if ( expanderTable4[ time / 12 ] == 1 )
           blend diffusemap
           map      textures/learning/greenyik.tga
      rotate time*0.01 
      translate   time*-.001,time*.004


   }

   {
        if ( expanderTable4[ time / 12 ] == 1 )
           blend specularmap
           map      textures/learning/greenyik_s.tga
      rotate time*0.01 
      translate   time*-.001,time*.004


   }

      {
        if ( expanderTable4[ time / 12 ] == 2 )
   
           vertexProgram           heatHazeWithMask.vfp
                vertexParm              0       time * 0.5 , time * 0.5 // texture scrolling
                vertexParm              0.8       0.25            // magnitude of the distortion
                fragmentProgram         heatHazeWithMask.vfp
                fragmentMap             0       _currentRender
                fragmentMap             1       textures/sfx/vp1.tga   // the normal map for distortion
                fragmentMap             2       textures/sfx/vp1_alpha.tga   // the distortion blend map

   }         
   {
        if ( expanderTable4[ time / 12 ] == 2 )
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_a_local.tga, heightmap( textures/learning/greenyik_a_h.tga, 18 ))
      rotate time*0.01 
      translate   time*-.001,time*.004


   }
   {
        if ( expanderTable4[ time / 12 ] == 2 )
           blend diffusemap
           map      textures/learning/greenyik.tga
      rotate time*0.01 
      translate   time*-.001,time*.004


   }

   {
        if ( expanderTable4[ time / 12 ] == 2 )
           blend specularmap
           map      textures/learning/greenyik_s.tga
      rotate time*0.01 
      translate   time*-.001,time*.004


   }


      {
        if ( expanderTable4[ time / 12 ] == 3 )
   
           vertexProgram           heatHazeWithMask.vfp
                vertexParm              0       time * 0.5 , time * 0.5 // texture scrolling
                vertexParm              0.5       0.15            // magnitude of the distortion
                fragmentProgram         heatHazeWithMask.vfp
                fragmentMap             0       _currentRender
                fragmentMap             1       textures/sfx/vp1.tga   // the normal map for distortion
                fragmentMap             2       textures/sfx/vp1_alpha.tga   // the distortion blend map

   }
      

   {
        if ( expanderTable4[ time / 12 ] == 3 )
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_a_local.tga, heightmap( textures/learning/greenyik_a_h.tga, 16 ))
      rotate time*0.01 
      translate   time*-.001,time*.004


   }

   {
        if ( expanderTable4[ time / 12 ] == 3 )
           blend diffusemap
           map      textures/learning/greenyik.tga
      rotate time*0.01 
      translate   time*-.001,time*.004


   }

   {
        if ( expanderTable4[ time / 12 ] == 3 )
           blend specularmap
           map      textures/learning/greenyik_s.tga
      rotate time*0.01 
      translate   time*-.001,time*.004


   }


      {
        if ( expanderTable4[ time / 12 ] == 4 )
   
           vertexProgram           heatHazeWithMask.vfp
                vertexParm              0       time * 0.5 , time * 0.5 // texture scrolling
                vertexParm              1       0.25            // magnitude of the distortion
                fragmentProgram         heatHazeWithMask.vfp
                fragmentMap             0       _currentRender
                fragmentMap             1       textures/sfx/vp1.tga   // the normal map for distortion
                fragmentMap             2       textures/sfx/vp1_alpha.tga   // the distortion blend map

   }      

   {
        if ( expanderTable4[ time / 12 ] == 4 )
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_a_local.tga, heightmap( textures/learning/greenyik_a_h.tga, 14 ))
      rotate time*0.01 
      translate   time*-.001,time*.004

   }

   {
        if ( expanderTable4[ time / 12 ] == 4 )
           blend diffusemap
           map      textures/learning/greenyik.tga
      rotate time*0.01 
      translate   time*-.001,time*.004

   }

   {
        if ( expanderTable4[ time / 12 ] == 4 )
           blend specularmap
           map      textures/learning/greenyik_s.tga
      rotate time*0.01 
      translate   time*-.001,time*.004

   }


      {
        if ( expanderTable4[ time / 12 ] == 5 )
   
           vertexProgram           heatHazeWithMask.vfp
                vertexParm              0       time * 0.5 , time * 0.5 // texture scrolling
                vertexParm              1       0.5            // magnitude of the distortion
                fragmentProgram         heatHazeWithMask.vfp
                fragmentMap             0       _currentRender
                fragmentMap             1       textures/sfx/vp1.tga   // the normal map for distortion
                fragmentMap             2       textures/sfx/vp1_alpha.tga   // the distortion blend map

   }      

   {
        if ( expanderTable4[ time / 12 ] == 5 )
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_a_local.tga, heightmap( textures/learning/greenyik_a_h.tga, 12 ))
      rotate time*0.01 
      translate   time*-.001,time*.004

   }
   {
        if ( expanderTable4[ time / 12 ] == 5 )
           blend diffusemap
           map      textures/learning/greenyik.tga
      rotate time*0.01 
      translate   time*-.001,time*.004

   }

   {
        if ( expanderTable4[ time / 12 ] == 5 )
           blend specularmap
           map      textures/learning/greenyik_s.tga
      rotate time*0.01 
      translate   time*-.001,time*.004

   }



      {
        if ( expanderTable4[ time / 12 ] == 6 )
   
           vertexProgram           heatHazeWithMask.vfp
                vertexParm              0       time * 0.5 , time * 0.5 // texture scrolling
                vertexParm              1.2       0.75            // magnitude of the distortion
                fragmentProgram         heatHazeWithMask.vfp
                fragmentMap             0       _currentRender
                fragmentMap             1       textures/sfx/vp1.tga   // the normal map for distortion
                fragmentMap             2       textures/sfx/vp1_alpha.tga   // the distortion blend map

   }      

   {
        if ( expanderTable4[ time / 12 ] == 6 )
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_a_local.tga, heightmap( textures/learning/greenyik_a_h.tga, 10 ))
      rotate time*0.01 
      translate   time*-.001,time*.004

   }

   {
        if ( expanderTable4[ time / 12 ] == 6 )
           blend diffusemap
           map      textures/learning/greenyik.tga
      rotate time*0.01 
      translate   time*-.001,time*.004

   }

   {
        if ( expanderTable4[ time / 12 ] == 6 )
           blend specularmap
           map      textures/learning/greenyik_s.tga
      rotate time*0.01 
      translate   time*-.001,time*.004

   }


      {
        if ( expanderTable4[ time / 12 ] == 7 )
   
           vertexProgram           heatHazeWithMask.vfp
                vertexParm              0       time * 0.5 , time * 0.5 // texture scrolling
                vertexParm              1       1            // magnitude of the distortion
                fragmentProgram         heatHazeWithMask.vfp
                fragmentMap             0       _currentRender
                fragmentMap             1       textures/sfx/vp1.tga   // the normal map for distortion
                fragmentMap             2       textures/sfx/vp1_alpha.tga   // the distortion blend map

   }      

   {
        if ( expanderTable4[ time / 12 ] == 7 )
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_a_local.tga, heightmap( textures/learning/greenyik_a_h.tga, 8 ))
      rotate time*0.01 
      translate   time*-.002,time*.003

   }
   {
        if ( expanderTable4[ time / 12 ] == 7 )
           blend diffusemap
           map      textures/learning/greenyik.tga
      rotate time*0.01 
      translate   time*-.002,time*.003


   }

   {
        if ( expanderTable4[ time / 12 ] == 7 )
           blend specularmap
           map      textures/learning/greenyik_s.tga
      rotate time*0.01 
      translate   time*-.002,time*.003


   }



      {
        if ( expanderTable4[ time / 12 ] == 8 )
   
           vertexProgram           heatHazeWithMask.vfp
                vertexParm              0       time * 0.5 , time * 0.5 // texture scrolling
                vertexParm              1       0.75            // magnitude of the distortion
                fragmentProgram         heatHazeWithMask.vfp
                fragmentMap             0       _currentRender
                fragmentMap             1       textures/sfx/vp1.tga   // the normal map for distortion
                fragmentMap             2       textures/sfx/vp1_alpha.tga   // the distortion blend map

   }      

   {
        if ( expanderTable4[ time / 12 ] == 8 )
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_a_local.tga, heightmap( textures/learning/greenyik_a_h.tga, 6 ))
      rotate time*0.01 
      translate   time*-.002,time*.003


   }

   {
        if ( expanderTable4[ time / 12 ] == 8 )
           blend diffusemap
           map      textures/learning/greenyik.tga
      rotate time*0.01 
      translate   time*-.002,time*.003


   }

   {
        if ( expanderTable4[ time / 12 ] == 8 )
           blend specularmap
           map      textures/learning/greenyik_s.tga
      rotate time*0.01 
      translate   time*-.002,time*.003


   }


      {
        if ( expanderTable4[ time / 12 ] == 9 )
   
           vertexProgram           heatHazeWithMask.vfp
                vertexParm              0       time * 0.5 , time * 0.5 // texture scrolling
                vertexParm              1       0.5            // magnitude of the distortion
                fragmentProgram         heatHazeWithMask.vfp
                fragmentMap             0       _currentRender
                fragmentMap             1       textures/sfx/vp1.tga   // the normal map for distortion
                fragmentMap             2       textures/sfx/vp1_alpha.tga   // the distortion blend map

   }      

   {
        if ( expanderTable4[ time / 12 ] == 9 )
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_a_local.tga, heightmap( textures/learning/greenyik_a_h.tga, 4 ))
      rotate time*0.01 
      translate   time*-.002,time*.003


   }
   {
        if ( expanderTable4[ time / 12 ] == 9 )
           blend diffusemap
           map      textures/learning/greenyik.tga
      rotate time*0.01 
      translate   time*-.002,time*.003


   }

   {
        if ( expanderTable4[ time / 12 ] == 9 )
           blend specularmap
           map      textures/learning/greenyik_s.tga
      rotate time*0.01 
      translate   time*-.002,time*.003


   }



      {
        if ( expanderTable4[ time / 12 ] == 10 )
   
           vertexProgram           heatHazeWithMask.vfp
                vertexParm              0       time * 0.5 , time * 0.5 // texture scrolling
                vertexParm              1       0.25            // magnitude of the distortion
                fragmentProgram         heatHazeWithMask.vfp
                fragmentMap             0       _currentRender
                fragmentMap             1       textures/sfx/vp1.tga   // the normal map for distortion
                fragmentMap             2       textures/sfx/vp1_alpha.tga   // the distortion blend map

   }      
   


   {
        if ( expanderTable4[ time / 12 ] == 10 )
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_a_local.tga, heightmap( textures/learning/greenyik_a_h.tga, 2 ))
      rotate time*0.01 
      translate   time*-.002,time*.003


   }
   {
        if ( expanderTable4[ time / 12 ] == 10 )
           blend diffusemap
           map      textures/learning/greenyik.tga
      rotate time*0.01 
      translate   time*-.002,time*.003


   }

   {
        if ( expanderTable4[ time / 12 ] == 10 )
           blend specularmap
           map      textures/learning/greenyik_s.tga
      rotate time*0.01 
      translate   time*-.002,time*.003


   }


      {
        if ( expanderTable4[ time / 12 ] == 11 )
   
           vertexProgram           heatHazeWithMask.vfp
                vertexParm              0       time * 0.5 , time * 0.5 // texture scrolling
                vertexParm              0.5       0            // magnitude of the distortion
                fragmentProgram         heatHazeWithMask.vfp
                fragmentMap             0       _currentRender
                fragmentMap             1       textures/sfx/vp1.tga   // the normal map for distortion
                fragmentMap             2       textures/sfx/vp1_alpha.tga   // the distortion blend map

   }      


   {
        if ( expanderTable4[ time / 12 ] == 11 )
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_a_local.tga, heightmap( textures/learning/greenyik_a_h.tga, 0 ))
      rotate time*0.01 
      translate   time*-.002,time*.003


   }

   {
        if ( expanderTable4[ time / 12 ] == 11 )
           blend diffusemap
           map      textures/learning/greenyik.tga
      rotate time*0.01 
      translate   time*-.002,time*.003


   }

   {
        if ( expanderTable4[ time / 12 ] == 11 )
           blend specularmap
           map      textures/learning/greenyik_s.tga
      rotate time*0.01 
      translate   time*-.002,time*.003


   }

      

      {
        if ( expanderTable4[ time / 12 ] == 12 )
   
           vertexProgram           heatHazeWithMask.vfp
                vertexParm              0       time * 0.5 , time * 0.5 // texture scrolling
                vertexParm              0       0            // magnitude of the distortion
                fragmentProgram         heatHazeWithMask.vfp
                fragmentMap             0       _currentRender
                fragmentMap             1       textures/sfx/vp1.tga   // the normal map for distortion
                fragmentMap             2       textures/sfx/vp1_alpha.tga   // the distortion blend map

   }      
   

   {
        if ( expanderTable4[ time / 12 ] == 12 )
      
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_b_local.tga, heightmap( textures/learning/greenyik_b_h.tga, 2 ))
      rotate time*0.01 
      translate   time*-.004,time*.002



   }
   {
        if ( expanderTable4[ time / 12 ] == 12 )

           blend diffusemap
           map      textures/learning/greenyik.tga
      rotate time*0.01 
      translate   time*-.004,time*.002


   }

   {
        if ( expanderTable4[ time / 12 ] == 12 )

      
           blend specularmap
           map      textures/learning/greenyik_s.tga
      rotate time*0.01 
      translate   time*-.004,time*.002


   }

   
      {
        if ( expanderTable4[ time / 12 ] == 13 )
   
           vertexProgram           heatHazeWithMask.vfp
                vertexParm              0       time * 0.5 , time * 0.5 // texture scrolling
                vertexParm              0       0            // magnitude of the distortion
                fragmentProgram         heatHazeWithMask.vfp
                fragmentMap             0       _currentRender
                fragmentMap             1       textures/sfx/vp1.tga   // the normal map for distortion
                fragmentMap             2       textures/sfx/vp1_alpha.tga   // the distortion blend map

   }   



   {
        if ( expanderTable4[ time / 12 ] == 13 )
      
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_b_local.tga, heightmap( textures/learning/greenyik_b_h.tga, 4 ))
      rotate time*0.01 
      translate   time*-.004,time*.002


   }
   {
        if ( expanderTable4[ time / 12 ] == 13 )

           blend diffusemap
           map      textures/learning/greenyik.tga
      rotate time*0.01 
      translate   time*-.004,time*.002


   }

   {
        if ( expanderTable4[ time / 12 ] == 13 )
      
           blend specularmap
           map      textures/learning/greenyik_s.tga
      rotate time*0.01 
      translate   time*-.004,time*.002


   }


      {
        if ( expanderTable4[ time / 12 ] == 14 )
   
           vertexProgram           heatHazeWithMask.vfp
                vertexParm              0       time * 0.5 , time * 0.5 // texture scrolling
                vertexParm              0       0            // magnitude of the distortion
                fragmentProgram         heatHazeWithMask.vfp
                fragmentMap             0       _currentRender
                fragmentMap             1       textures/sfx/vp1.tga   // the normal map for distortion
                fragmentMap             2       textures/sfx/vp1_alpha.tga   // the distortion blend map

   }   




   {
        if ( expanderTable4[ time / 12 ] == 14 )
      
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_b_local.tga, heightmap( textures/learning/greenyik_b_h.tga, 6 ))
      rotate time*0.01 
      translate   time*-.004,time*.002



   }
   {
        if ( expanderTable4[ time / 12 ] == 14 )

           blend diffusemap
           map      textures/learning/greenyik.tga
      rotate time*0.01 
      translate   time*-.004,time*.002


   }

   {
        if ( expanderTable4[ time / 12 ] == 14 )
   
           blend specularmap
           map      textures/learning/greenyik_s.tga
      rotate time*0.01 
      translate   time*-.004,time*.002


   }

   

      {
        if ( expanderTable4[ time / 12 ] == 15 )
   
           vertexProgram           heatHazeWithMask.vfp
                vertexParm              0       time * 0.5 , time * 0.5 // texture scrolling
                vertexParm              0       0            // magnitude of the distortion
                fragmentProgram         heatHazeWithMask.vfp
                fragmentMap             0       _currentRender
                fragmentMap             1       textures/sfx/vp1.tga   // the normal map for distortion
                fragmentMap             2       textures/sfx/vp1_alpha.tga   // the distortion blend map

   }   



   {
        if ( expanderTable4[ time / 12 ] == 15 )
   
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_b_local.tga, heightmap( textures/learning/greenyik_b_h.tga, 8 ))
      rotate time*0.01 
      translate   time*-.002,time*0.0


   }
   {
        if ( expanderTable4[ time / 12 ] == 15 )

           blend diffusemap
           map      textures/learning/greenyik.tga
      rotate time*0.01 
      translate   time*-.002,time*0.0


   }

   {
        if ( expanderTable4[ time / 12 ] == 15 )
   
           blend specularmap
           map      textures/learning/greenyik_s.tga
      rotate time*0.01 
      translate   time*-.002,time*0.0


   }

   

      {
        if ( expanderTable4[ time / 12 ] == 16 )
   
           vertexProgram           heatHazeWithMask.vfp
                vertexParm              0       time * 0.5 , time * 0.5 // texture scrolling
                vertexParm              0.5       0.25            // magnitude of the distortion
                fragmentProgram         heatHazeWithMask.vfp
                fragmentMap             0       _currentRender
                fragmentMap             1       textures/sfx/vp1.tga   // the normal map for distortion
                fragmentMap             2       textures/sfx/vp1_alpha.tga   // the distortion blend map

   }   




   {
        if ( expanderTable4[ time / 12 ] == 16 )
   
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_b_local.tga, heightmap( textures/learning/greenyik_b_h.tga, 10 ))
      rotate time*0.01 
      translate   time*-.002,time*0.0


   }

   {
        if ( expanderTable4[ time / 12 ] == 16 )

           blend diffusemap
           map      textures/learning/greenyik.tga
      rotate time*0.01 
      translate   time*-.002,time*0.0


   }

   {
        if ( expanderTable4[ time / 12 ] == 16 )
   
           blend specularmap
           map      textures/learning/greenyik_s.tga
      rotate time*0.01 
      translate   time*-.002,time*0.0


   }


      {
        if ( expanderTable4[ time / 12 ] == 17 )
   
           vertexProgram           heatHazeWithMask.vfp
                vertexParm              0       time * 0.5 , time * 0.5 // texture scrolling
                vertexParm              0.75       0.5            // magnitude of the distortion
                fragmentProgram         heatHazeWithMask.vfp
                fragmentMap             0       _currentRender
                fragmentMap             1       textures/sfx/vp1.tga   // the normal map for distortion
                fragmentMap             2       textures/sfx/vp1_alpha.tga   // the distortion blend map

   }   


   {
        if ( expanderTable4[ time / 12 ] == 17 )
   
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_b_local.tga, heightmap( textures/learning/greenyik_b_h.tga, 12 ))
      rotate time*0.01 
      translate   time*-.002,time*0.0



   }
   {
        if ( expanderTable4[ time / 12 ] == 17 )
   
           blend diffusemap
           map      textures/learning/greenyik.tga
      rotate time*0.01 
      translate   time*-.002,time*0.0


   }

   {
        if ( expanderTable4[ time / 12 ] == 17 )
   
           blend specularmap
           map      textures/learning/greenyik_s.tga
      rotate time*0.01 
      translate   time*-.002,time*0.0


   }


      {
        if ( expanderTable4[ time / 12 ] == 18 )
   
           vertexProgram           heatHazeWithMask.vfp
                vertexParm              0       time * 0.5 , time * 0.5 // texture scrolling
                vertexParm              0       0            // magnitude of the distortion
                fragmentProgram         heatHazeWithMask.vfp
                fragmentMap             0       _currentRender
                fragmentMap             1       textures/sfx/vp1.tga   // the normal map for distortion
                fragmentMap             2       textures/sfx/vp1_alpha.tga   // the distortion blend map

   }





   {
        if ( expanderTable4[ time / 12 ] == 18 )
   
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_b_local.tga, heightmap( textures/learning/greenyik_b_h.tga, 14 ))
      rotate time*0.01 
      translate   time*0.0,time*-0.002


   }
   {
        if ( expanderTable4[ time / 12 ] == 18 )
   
           blend diffusemap
           map      textures/learning/greenyik.tga
      rotate time*0.01 
      translate   time*0.0,time*-0.002


   }

   {
        if ( expanderTable4[ time / 12 ] == 18 )
      
           blend specularmap
           map      textures/learning/greenyik_s.tga
      rotate time*0.01 
      translate   time*0.0,time*-0.002


   }

   
      {
        if ( expanderTable4[ time / 12 ] == 19 )
   
           vertexProgram           heatHazeWithMask.vfp
                vertexParm              0       time * 0.5 , time * 0.5 // texture scrolling
                vertexParm              0.5       0.5            // magnitude of the distortion
                fragmentProgram         heatHazeWithMask.vfp
                fragmentMap             0       _currentRender
                fragmentMap             1       textures/sfx/vp1.tga   // the normal map for distortion
                fragmentMap             2       textures/sfx/vp1_alpha.tga   // the distortion blend map

   }
   



   {
        if ( expanderTable4[ time / 12 ] == 19 )
      
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_b_local.tga, heightmap( textures/learning/greenyik_b_h.tga, 16 ))
      rotate time*0.01 
      translate   time*0.0,time*-0.002


   }
   {
        if ( expanderTable4[ time / 12 ] == 19 )

           blend diffusemap
           map      textures/learning/greenyik.tga
      rotate time*0.01 
      translate   time*0.0,time*-0.002


   }

   {
        if ( expanderTable4[ time / 12 ] == 19 )
   
           blend specularmap
           map      textures/learning/greenyik_s.tga
      rotate time*0.01 
      translate   time*0.0,time*-0.002


   }



      {
        if ( expanderTable4[ time / 12 ] == 20 )
   
           vertexProgram           heatHazeWithMask.vfp
                vertexParm              0       time * 0.5 , time * 0.5 // texture scrolling
                vertexParm              1       1            // magnitude of the distortion
                fragmentProgram         heatHazeWithMask.vfp
                fragmentMap             0       _currentRender
                fragmentMap             1       textures/sfx/vp1.tga   // the normal map for distortion
                fragmentMap             2       textures/sfx/vp1_alpha.tga   // the distortion blend map

   }




   {
        if ( expanderTable4[ time / 12 ] == 20 )
   
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_b_local.tga, heightmap( textures/learning/greenyik_b_h.tga, 18 ))
      rotate time*0.01 
      translate   time*0.2,time*-0.002


   }
   {
        if ( expanderTable4[ time / 12 ] == 20 )

           blend diffusemap
           map      textures/learning/greenyik.tga
      rotate time*0.01 
      translate   time*0.2,time*-0.002


   }

   {
        if ( expanderTable4[ time / 12 ] == 20 )
      
           blend specularmap
           map      textures/learning/greenyik_s.tga
      rotate time*0.01 
      translate   time*0.2,time*-0.002


   }


      {
        if ( expanderTable4[ time / 12 ] == 21 )
   
           vertexProgram           heatHazeWithMask.vfp
                vertexParm              0       time * 0.5 , time * 0.5 // texture scrolling
                vertexParm              1.2       0.75            // magnitude of the distortion
                fragmentProgram         heatHazeWithMask.vfp
                fragmentMap             0       _currentRender
                fragmentMap             1       textures/sfx/vp1.tga   // the normal map for distortion
                fragmentMap             2       textures/sfx/vp1_alpha.tga   // the distortion blend map

   }



   {
        if ( expanderTable4[ time / 12 ] == 21 )
      
           blend bumpmap
           map   addnormals ( textures/learning/greenyik_b_local.tga, heightmap( textures/learning/greenyik_b_h.tga, 20 ))
      rotate time*0.01 
      translate   time*0.2,time*-0.002


   }

   {
        if ( expanderTable4[ time / 12 ] == 21 )

           blend diffusemap
           map      textures/learning/greenyik.tga
      rotate time*0.01 
      translate   time*0.2,time*-0.002


   }

   {
        if ( expanderTable4[ time / 12 ] == 21 )
   
           blend specularmap
           map      textures/learning/greenyik_s.tga
      rotate time*0.01 
      translate   time*0.2,time*-0.002


   }




}



voldemort@Posted: Wed Apr 26, 2006 2:52 am :
****NEW METHOD****

this involves the expand deform and works well
as an example I will inclued a the map and mtr file if you want to preview it though you will need to replace the diffuse and specular map with a texture of your own

I usead a scrolling slime Icreated and the effect was ausome it looke like it was pulsating like veins the effect in this examplle is exagerated so you can see easily what is occuring

mtr file addition
textures/exhale1/jutyr_scroll_def_exp
Code:
{   
      deform expand 4*sintable[time*0.25]
      
      

   {
      blend blend
      map      textures/learning/jutyr.tga
      scroll time * .2 , time * -0.2
      translate   time*-0.002,time*.002   
   }
   {
      blend bumpmap
      map       textures/learning/jutyr_local.tga
      scroll time * .2 , time * -0.2
      translate   time*-0.002,time*.002
   }
   
}





map file



Code:
Version 2
// entity 0
{
"classname" "worldspawn"
// primitive 0
{
patchDef2
{
  "textures/exhale1/jutyr_scroll_def_exp"
  ( 3 3 0 0 0 )
  (
   (  ( 64 -40 -4 0 0 ) ( 64 -4 -4 0 0.28125 ) ( 64 32 -4 0 0.5625 ) )
   (  ( 100 -40 -4 0.28125 0 ) ( 108 -4 84 0.28125 0.28125 ) ( 100 32 -4 0.28125 0.5625 ) )
   (  ( 136 -40 -4 0.5625 0 ) ( 136 -4 -4 0.5625 0.28125 ) ( 136 32 -4 0.5625 0.5625 ) )
  )
}
}
// primitive 1
{
patchDef2
{
  "textures/exhale1/jutyr_scroll_def_exp"
  ( 9 3 0 0 0 )
  (
   (  ( 1.1857528687 -91.7210922241 8.0000190735 0 0 ) ( -44.4047698975 1.7533683777 8.0000190735 0 0.8124988675 ) ( -151.9998168945 4 8.0000190735 0 1.6532684565 ) )
   (  ( -23.9804840088 -103.9954681396 8.0000190735 0.2187499702 0 ) ( -69.5709991455 -10.5210208893 8.0000190735 0.2187499702 0.8124988675 ) ( -151.9998168945 -24 8.0000190735 0.2187499702 1.6532684565 ) )
   (  ( -23.9804840088 -103.9954681396 8.0000190735 0.2187499702 0 ) ( -69.5709991455 -10.5210208893 8.0000190735 0.2187499702 0.8124988675 ) ( -151.9998168945 -24 8.0000190735 0.2187499702 1.6532684565 ) )
   (  ( -23.9805412292 -103.9953384399 36 0.4374998212 0 ) ( -69.5710906982 -10.5208396912 36 0.4374998212 0.8124988675 ) ( -152 -24 36 0.4374998212 1.6532684565 ) )
   (  ( 1.1856842041 -91.7209625244 36 0.656249702 0 ) ( -44.4048576355 1.7535476685 -4 0.656249702 0.8124988675 ) ( -152 4 36 0.656249702 1.6532684565 ) )
   (  ( 26.3519210815 -79.4465713501 36 0.874999702 0 ) ( -19.2386245728 14.0279350281 36 0.874999702 0.8124988675 ) ( -152 32 36 0.874999702 1.6532684565 ) )
   (  ( 26.3519744873 -79.4467010498 8.0000190735 1.0937495232 0 ) ( -19.2385368347 14.0277519226 8.0000190735 1.0937495232 0.8124988675 ) ( -151.9998168945 32 8.0000190735 1.0937495232 1.6532684565 ) )
   (  ( 26.3519744873 -79.4467010498 8.0000190735 1.0937495232 0 ) ( -19.2385368347 14.0277519226 8.0000190735 1.0937495232 0.8124988675 ) ( -151.9998168945 32 8.0000190735 1.0937495232 1.6532684565 ) )
   (  ( 1.1857528687 -91.7210922241 8.0000190735 1.312499404 0 ) ( -44.4047698975 1.7533683777 8.0000190735 1.312499404 0.8124988675 ) ( -151.9998168945 4 8.0000190735 1.312499404 1.6532684565 ) )
  )
}
}
// primitive 2
{
brushDef3
{
  ( -1 0 0 -192 ) ( ( 0.03125 0 0 ) ( 0 0.03125 0 ) ) "textures/common/caulk" 0 0 0
  ( 0 0 -1 8 ) ( ( 0.03125 0 0 ) ( 0 0.03125 0 ) ) "textures/common/caulk" 0 0 0
  ( 0 0 1 -184 ) ( ( 0.03125 0 0 ) ( 0 0.03125 0 ) ) "textures/common/caulk" 0 0 0
  ( 0 -1 0 -184 ) ( ( 0.03125 0 0 ) ( 0 0.03125 0 ) ) "textures/common/caulk" 0 0 0
  ( 0 1 0 -184 ) ( ( 0.03125 0 0 ) ( 0 0.03125 0 ) ) "textures/common/caulk" 0 0 0
  ( 1 0 0 184 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/enpro/enwall1" 0 0 0
}
}
// primitive 3
{
brushDef3
{
  ( 0 1 0 -192 ) ( ( 0.03125 0 0 ) ( 0 0.03125 0 ) ) "textures/common/caulk" 0 0 0
  ( -1 0 0 -192 ) ( ( 0.03125 0 0 ) ( 0 0.03125 0 ) ) "textures/common/caulk" 0 0 0
  ( 0 0 -1 8 ) ( ( 0.03125 0 0 ) ( 0 0.03125 0 ) ) "textures/common/caulk" 0 0 0
  ( 0 0 1 -184 ) ( ( 0.03125 0 0 ) ( 0 0.03125 0 ) ) "textures/common/caulk" 0 0 0
  ( 1 0 0 -184 ) ( ( 0.03125 0 0 ) ( 0 0.03125 0 ) ) "textures/common/caulk" 0 0 0
  ( 0 -1 0 184 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/enpro/enwall1" 0 0 0
}
}
// primitive 4
{
brushDef3
{
  ( 1 0 0 -192 ) ( ( 0.03125 0 0 ) ( 0 0.03125 0 ) ) "textures/common/caulk" 0 0 0
  ( 0 1 0 -192 ) ( ( 0.03125 0 0 ) ( 0 0.03125 0 ) ) "textures/common/caulk" 0 0 0
  ( 0 0 -1 8 ) ( ( 0.03125 0 0 ) ( 0 0.03125 0 ) ) "textures/common/caulk" 0 0 0
  ( 0 0 1 -184 ) ( ( 0.03125 0 0 ) ( 0 0.03125 0 ) ) "textures/common/caulk" 0 0 0
  ( 0 -1 0 -184 ) ( ( 0.03125 0 0 ) ( 0 0.03125 0 ) ) "textures/common/caulk" 0 0 0
  ( -1 0 0 184 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/enpro/enwall1" 0 0 0
}
}
// primitive 5
{
brushDef3
{
  ( 0 -1 0 -192 ) ( ( 0.03125 0 0 ) ( 0 0.03125 0 ) ) "textures/common/caulk" 0 0 0
  ( 1 0 0 -192 ) ( ( 0.03125 0 0 ) ( 0 0.03125 0 ) ) "textures/common/caulk" 0 0 0
  ( -1 0 0 -192 ) ( ( 0.03125 0 0 ) ( 0 0.03125 0 ) ) "textures/common/caulk" 0 0 0
  ( 0 0 -1 8 ) ( ( 0.03125 0 0 ) ( 0 0.03125 0 ) ) "textures/common/caulk" 0 0 0
  ( 0 0 1 -184 ) ( ( 0.03125 0 0 ) ( 0 0.03125 0 ) ) "textures/common/caulk" 0 0 0
  ( 0 1 0 184 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/enpro/enwall1" 0 0 0
}
}
// primitive 6
{
brushDef3
{
  ( 0 0 1 -192 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/enpro/encyl7" 0 0 0
  ( 0 -1 0 -192 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/enpro/encyl7" 0 0 0
  ( 1 0 0 -192 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/enpro/encyl7" 0 0 0
  ( 0 1 0 -192 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/enpro/encyl7" 0 0 0
  ( -1 0 0 -192 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/enpro/encyl7" 0 0 0
  ( 0 0 -1 184 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/enpro/enwall1" 0 0 0
}
}
// primitive 7
{
brushDef3
{
  ( 0 0 -1 0 ) ( ( 0.03125 0 0 ) ( 0 0.03125 0 ) ) "textures/common/caulk" 0 0 0
  ( 0 -1 0 -192 ) ( ( 0.03125 0 0 ) ( 0 0.03125 0 ) ) "textures/common/caulk" 0 0 0
  ( 1 0 0 -192 ) ( ( 0.03125 0 0 ) ( 0 0.03125 0 ) ) "textures/common/caulk" 0 0 0
  ( 0 1 0 -192 ) ( ( 0.03125 0 0 ) ( 0 0.03125 0 ) ) "textures/common/caulk" 0 0 0
  ( -1 0 0 -192 ) ( ( 0.03125 0 0 ) ( 0 0.03125 0 ) ) "textures/common/caulk" 0 0 0
  ( 0 0 1 -8 ) ( ( 0.0078125 0 0 ) ( 0 0.0078125 0 ) ) "textures/enpro/enwall1" 0 0 0
}
}
}
// entity 1
{
"classname" "light"
"name" "light_3"
"origin" "16 -40 160"
"noshadows" "1"
"nospecular" "1"
"nodiffuse" "1"
"falloff" "0"
"_color" "1 1 1"
"light_radius" "150 150 150"
}
// entity 2
{
"classname" "light"
"name" "light_2"
"origin" "144 -152 160"
"noshadows" "1"
"nospecular" "0"
"nodiffuse" "0"
"falloff" "0"
"_color" "0.35 0.35 0.35"
"light_radius" "200 200 200"
}
// entity 3
{
"classname" "info_player_start"
"name" "info_player_start_1"
"origin" "-112 104 24"
"angle" "270"
"target" "trigger_once_1"
}
// entity 4
{
"classname" "light"
"name" "light_1"
"origin" "-112 104 160"
"noshadows" "0"
"nospecular" "0"
"nodiffuse" "0"
"falloff" "0"
"_color" "1 1 1"
"light_radius" "300 300 300"
}
// entity 5
{
"classname" "light"
"name" "light_4"
"origin" "32 80 96"
"noshadows" "0"
"nospecular" "0"
"nodiffuse" "0"
"falloff" "0"
"_color" "1 1 1"
"light_radius" "350 350 350"
}



voldemort@Posted: Wed Apr 26, 2006 3:41 am :
Im ammazed this actually works

Code:

textures/exhale1/jutyr_scroll_def_expb
{
   
   
      
      deform expand 0.5*sintable[time*0.25]
      forceOpaque

   {
        if ( expanderTable4[ time / 12 ] == 0 )
      forceHighQuality      
           blend blend
           map   addnormals ( textures/learning/huyt_a_local.tga, heightmap( textures/learning/huyt_a_h.tga, 10 ))
      rotate time*0.001 
      translate   time*-0.002,time*0.002


   }


   {
        if ( expanderTable4[ time / 12 ] == 0 )
      forceHighQuality      
           blend blend
           map      textures/learning/huyt.tga
      rotate time*0.001 
      translate   time*-0.002,time*0.002

   }
   {
        if ( expanderTable4[ time / 12 ] == 1 )
      forceHighQuality      
           blend blend
           map   addnormals ( textures/learning/huyt_a_local.tga, heightmap( textures/learning/huyt_a_h.tga, 10 ))
      rotate time*0.001 
      translate   time*-0.002,time*0.002


   }
   {
        if ( expanderTable4[ time / 12 ] == 1 )
      forceHighQuality      
           blend blend
           map      textures/learning/huyt.tga
      rotate time*0.001 
      translate   time*-0.002,time*0.002

   }


         
   {
        if ( expanderTable4[ time / 12 ] == 2 )
      forceHighQuality      
           blend blend
           map   addnormals ( textures/learning/huyt_a_local.tga, heightmap( textures/learning/huyt_a_h.tga, 9 ))
      rotate time*0.001 
      translate   time*-0.002,time*0.002


   }
   {
        if ( expanderTable4[ time / 12 ] == 2 )
      forceHighQuality      
           blend blend
           map      textures/learning/huyt.tga
      rotate time*0.001 
      translate   time*-0.002,time*0.002


   }





      

   {
        if ( expanderTable4[ time / 12 ] == 3 )
      forceHighQuality      
           blend blend
           map   addnormals ( textures/learning/huyt_a_local.tga, heightmap( textures/learning/huyt_a_h.tga, 8 ))
      rotate time*0.001 
      translate   time*-0.002,time*0.002


   }

   {
        if ( expanderTable4[ time / 12 ] == 3 )
      forceHighQuality      
           blend blend
           map      textures/learning/huyt.tga
      rotate time*0.001 
      translate   time*-0.002,time*0.002


   }

   


   

   {
        if ( expanderTable4[ time / 12 ] == 4 )
      forceHighQuality      
           blend blend
           map   addnormals ( textures/learning/huyt_a_local.tga, heightmap( textures/learning/huyt_a_h.tga, 7 ))
      rotate time*0.001 
      translate   time*-0.002,time*0.002

   }

   {
        if ( expanderTable4[ time / 12 ] == 4 )
      forceHighQuality      
           blend blend
           map      textures/learning/huyt.tga
      rotate time*0.001 
      translate   time*-0.002,time*0.002

   }

   
   

      

   {
        if ( expanderTable4[ time / 12 ] == 5 )
      forceHighQuality      
           blend blend
           map   addnormals ( textures/learning/huyt_a_local.tga, heightmap( textures/learning/huyt_a_h.tga, 6 ))
      rotate time*0.001 
      translate   time*-0.002,time*0.002

   }
   {
        if ( expanderTable4[ time / 12 ] == 5 )
      forceHighQuality      
           blend blend
           map      textures/learning/huyt.tga
      rotate time*0.001 
      translate   time*-0.002,time*0.002

   }

   




   {
        if ( expanderTable4[ time / 12 ] == 6 )
      forceHighQuality      
           blend blend
           map   addnormals ( textures/learning/huyt_a_local.tga, heightmap( textures/learning/huyt_a_h.tga, 5 ))
      rotate time*0.001 
      translate   time*-0.002,time*0.002

   }

   {
        if ( expanderTable4[ time / 12 ] == 6 )
      forceHighQuality      
           blend blend
           map      textures/learning/huyt.tga
      rotate time*0.001 
      translate   time*-0.002,time*0.002

   }

   
      

   

   {
        if ( expanderTable4[ time / 12 ] == 7 )
      forceHighQuality      
           blend blend
           map   addnormals ( textures/learning/huyt_a_local.tga, heightmap( textures/learning/huyt_a_h.tga, 4 ))
      rotate time*0.001 
      translate   time*-0.002,time*0.002

   }
   {
        if ( expanderTable4[ time / 12 ] == 7 )
      forceHighQuality      
           blend blend
           map      textures/learning/huyt.tga
      rotate time*0.001 
      translate   time*-0.002,time*0.002


   }



   


   {
        if ( expanderTable4[ time / 12 ] == 8 )
         forceHighQuality   
           blend blend
           map   addnormals ( textures/learning/huyt_a_local.tga, heightmap( textures/learning/huyt_a_h.tga, 3 ))
      rotate time*0.001 
      translate   time*-0.002,time*0.002


   }

   {
        if ( expanderTable4[ time / 12 ] == 8 )
         forceHighQuality   
           blend blend
           map      textures/learning/huyt.tga
      rotate time*0.001 
      translate   time*-0.002,time*0.002


   }



      

      

   {
        if ( expanderTable4[ time / 12 ] == 9 )
         forceHighQuality   
           blend blend
           map   addnormals ( textures/learning/huyt_a_local.tga, heightmap( textures/learning/huyt_a_h.tga, 2 ))
      rotate time*0.001 
      translate   time*-0.002,time*0.002


   }
   {
        if ( expanderTable4[ time / 12 ] == 9 )
      forceHighQuality      
           blend blend
           map      textures/learning/huyt.tga
      rotate time*0.001 
      translate   time*-0.002,time*0.002


   }

   


      
   


   {
        if ( expanderTable4[ time / 12 ] == 10 )
      forceHighQuality      
           blend blend
           map   addnormals ( textures/learning/huyt_a_local.tga, heightmap( textures/learning/huyt_a_h.tga, 1 ))
      rotate time*0.001 
      translate   time*-0.002,time*0.002


   }
   {
        if ( expanderTable4[ time / 12 ] == 10 )
      forceHighQuality      
           blend blend
           map      textures/learning/huyt.tga
      rotate time*0.001 
      translate   time*-0.002,time*0.002


   }

   



   {
        if ( expanderTable4[ time / 12 ] == 11 )
      forceHighQuality      
           blend blend
           map   addnormals ( textures/learning/huyt_a_local.tga, heightmap( textures/learning/huyt_a_h.tga, 0 ))
      rotate time*0.001 
      translate   time*-0.002,time*0.002


   }

   {
        if ( expanderTable4[ time / 12 ] == 11 )
      forceHighQuality      
           blend blend
           map      textures/learning/huyt.tga
      rotate time*0.001 
      translate   time*-0.002,time*0.002


   }



      
      

      
   

   {
        if ( expanderTable4[ time / 12 ] == 12 )
      
      forceHighQuality      
           blend blend
           map   addnormals ( textures/learning/huyt_b_local.tga, heightmap( textures/learning/huyt_b_h.tga, 1 ))
      rotate time*0.001 
      translate   time*-0.002,time*0.002



   }
   {
        if ( expanderTable4[ time / 12 ] == 12 )
      
      forceHighQuality
           blend blend
           map      textures/learning/huyt.tga
      rotate time*0.001 
      translate   time*-0.002,time*0.002


   }

   

   


   {
        if ( expanderTable4[ time / 12 ] == 13 )
      forceHighQuality      
      
           blend blend
           map   addnormals ( textures/learning/huyt_b_local.tga, heightmap( textures/learning/huyt_b_h.tga, 2 ))
      rotate time*0.001 
      translate   time*-.002,time*.002


   }
   {
        if ( expanderTable4[ time / 12 ] == 13 )
      
      forceHighQuality
           blend blend
           map      textures/learning/huyt.tga
      rotate time*0.001 
      translate   time*-.002,time*.002


   }


   



   




   {
        if ( expanderTable4[ time / 12 ] == 14 )
      
         forceHighQuality   
           blend blend
           map   addnormals ( textures/learning/huyt_b_local.tga, heightmap( textures/learning/huyt_b_h.tga, 3 ))
      rotate time*0.001 
      translate   time*-.002,time*.002



   }
   {
        if ( expanderTable4[ time / 12 ] == 14 )
      
      forceHighQuality
           blend blend
           map      textures/learning/huyt.tga
      rotate time*0.001 
      translate   time*-.002,time*.002


   }



   

   



   {
        if ( expanderTable4[ time / 12 ] == 15 )
      forceHighQuality      
   
           blend blend
           map   addnormals ( textures/learning/huyt_b_local.tga, heightmap( textures/learning/huyt_b_h.tga, 4 ))
      rotate time*0.001 
      translate   time*-.002,time*.002


   }
   {
        if ( expanderTable4[ time / 12 ] == 15 )
      forceHighQuality      

           blend blend
           map      textures/learning/huyt.tga
      rotate time*0.001 
      translate   time*-.002,time*.002


   }


   

   




   {
        if ( expanderTable4[ time / 12 ] == 16 )
      forceHighQuality      
   
           blend blend
           map   addnormals ( textures/learning/huyt_b_local.tga, heightmap( textures/learning/huyt_b_h.tga, 5 ))
      rotate time*0.001 
      translate   time*-.002,time*.002


   }

   {
        if ( expanderTable4[ time / 12 ] == 16 )
      forceHighQuality      

           blend blend
           map      textures/learning/huyt.tga
      rotate time*0.001 
      translate   time*-.002,time*.002


   }




   


   {
        if ( expanderTable4[ time / 12 ] == 17 )
      forceHighQuality      
   
           blend blend
           map   addnormals ( textures/learning/huyt_b_local.tga, heightmap( textures/learning/huyt_b_h.tga, 6 ))
      rotate time*0.001 
      translate   time*-.002,time*.002



   }
   {
        if ( expanderTable4[ time / 12 ] == 17 )
      
      forceHighQuality   
           blend blend
           map      textures/learning/huyt.tga
      rotate time*0.001 
      translate   time*-.002,time*.002


   }










   {
        if ( expanderTable4[ time / 12 ] == 18 )
      forceHighQuality      
   
           blend blend
           map   addnormals ( textures/learning/huyt_b_local.tga, heightmap( textures/learning/huyt_b_h.tga, 7 ))
      rotate time*0.001 
      translate   time*-.002,time*.002


   }
   {
        if ( expanderTable4[ time / 12 ] == 18 )
      
      forceHighQuality   

           blend blend
           map      textures/learning/huyt.tga
      rotate time*0.001 
      translate   time*-.002,time*.002


   }



   

   



   {
        if ( expanderTable4[ time / 12 ] == 19 )
      forceHighQuality      
      
           blend blend
           map   addnormals ( textures/learning/huyt_b_local.tga, heightmap( textures/learning/huyt_b_h.tga, 8 ))
      rotate time*0.001 
      translate   time*-.002,time*.002


   }
   {
        if ( expanderTable4[ time / 12 ] == 19 )
      forceHighQuality      

           blend blend
           map      textures/learning/huyt.tga
      rotate time*0.001 
      translate   time*-.002,time*.002


   }









   {
        if ( expanderTable4[ time / 12 ] == 20 )
      forceHighQuality      
   
           blend blend
           map   addnormals ( textures/learning/huyt_b_local.tga, heightmap( textures/learning/huyt_b_h.tga, 9 ))
      rotate time*0.001 
      translate   time*-0.0002,time*.0002


   }
   {
        if ( expanderTable4[ time / 12 ] == 20 )
      
      forceHighQuality
           blend blend
           map      textures/learning/huyt.tga
      rotate time*0.001 
      translate   time*-0.0002,time*.0002


   }






   {
        if ( expanderTable4[ time / 12 ] == 21 )
      forceHighQuality      
   
           blend blend
           map   addnormals ( textures/learning/huyt_b_local.tga, heightmap( textures/learning/huyt_b_h.tga, 10 ))
      rotate time*0.001 
      translate   time*-0.0002,time*.0002


   }


   {
        if ( expanderTable4[ time / 12 ] == 21 )
      forceHighQuality      

           blend blend
           map      textures/learning/huyt.tga
      rotate time*0.001 
      translate   time*-0.0002,time*.0002


   }


         forceOpaque
      deform expand 4*sintable[time*0.25]

}





If you create a tube or a patch mesh and distort it so it is flesshy shapped
you get a nice pulsating flesh or slime texture



ViPr@Posted: Wed Apr 26, 2006 12:19 pm :
FFS such a thing should be accomplished with just a few lines of code. if it takes several pages of code like this then you are using the wrong method.



voldemort@Posted: Wed Apr 26, 2006 2:20 pm :
it works and seems to have minimal impact even on a group of highly distorted patch meshes with all the bells and whistles but if you can figure out a better way more power to you easier is one of my favorite words :D



voldemort@Posted: Fri Apr 28, 2006 6:03 pm :
Updated with credits



voldemort@Posted: Sat Apr 29, 2006 11:17 pm :
new simple one line method
Code:
textures/exhale1/gen_local_test3rgb
{
      
   {
      blend diffusemap
      map         textures/learning/shiny.tga
      translate      1,time*0.05
   }
   {
      blend specularmap
      map         textures/learning/shiny_a_s.tga
      translate      1,time*0.05
           rgb          subtleflick [ time * 4 ] / 3
      rgb    (.8 * sintable [.002 + time ]) + .2
   }
   {
      blend bumpmap
      map         textures/learning/shiny_a_local.tga
      translate      1,time*0.05
           rgb          subtleflick [ time * 4 ] / 3
      rgb    (.8 * sintable [.002 + time ]) + .2
   
   }

}   


note the rgb bit it works with subtle filck and the sintable



voldemort@Posted: Sat Apr 29, 2006 11:58 pm :
so yes vipr you were right about the few lines of code :D
I'll add you to the credis



voldemort@Posted: Fri Jul 07, 2006 4:47 am :
another method using tables



Code:
textures/exhale3/the_mover31

{

deform turbulent sinTable 0.015 (time / 35 ) 10

   {
      forceHighQuality
      blend diffusemap
      map   textures/learning/hret.tga
      centerScale (0.1 + centerTable[time / 150]), (0.1 + centerTable[(time / 150) + 0.1])
      translate   time*-.0002,time*.0002
      shear fol1Table [ time * 0.02 ], 0.02

      
   }
   {
      forceHighQuality
      blend specularmap
      map   textures/learning/hret_s.tga
      centerScale (0.1 + centerTable[time / 150]), (0.1 + centerTable[(time / 150) + 0.1])
      translate   time*-.0002,time*.0002
      shear fol1Table [ time * 0.02 ], 0.02
      
   }
   {
      
      forceHighQuality      
           blend bumpmap
        map   addnormals ( textures/learning/hret_h.tga, heightmap( textures/learning/hret_h.tga, 1 ))
      centerScale (0.1 + centerTable[time / 150]), (0.1 + centerTable[(time / 150) + 0.1])
      translate   time*-.0002,time*.0002
      shear fol1Table [ time * 0.02 ], 0.02
      alphatest (0.3 + alpyTable[time / 2])
      

     }   
}


the key here is I use 2 height maps so that I can use the black and white texture for the alphatest stage so it does animated masking but also animates it in 3d as well



pbmax@Posted: Fri Jul 07, 2006 3:05 pm :
this is very cool.

can you link a vid of this in action?



voldemort@Posted: Fri Jul 07, 2006 8:23 pm :
demo of animated textures as requested by some folks

http://www.megaupload.com/de/?d=UJ9BWFOP

demo of animated textures as requested by some folks

if anyone else would like to host the file feel free or if you have suggestions about alternative hosting feel free to drop thos to me to