[TUTORIAL] custom Waterfalls (sawmill style) w/o modeling

fubarFX

The "raw" in "nodraw"
aa
Jun 1, 2009
1,720
1,978
OL' FASHIONED SAWMILL
WATERFALLS
WITHOUT MODELING!

Many mappers have been asking me how I make waterfalls, well folks! this is it. I'm about to unleash valve's best kept secret!

WARNING! altho this tutorial doesn't involve carving, it is full of heresies such as:
-applying water textures to vertical planes
-using model textures
-using displacement on water brushes
you've been warned! lets begin without delays!

note: you can actually skip the first 2/3 of this tut without missing important information.

the grand journey

Alright, first, lets take a look at the waterfall in sawmill.

8.jpg


So basicly, it's only a model with some info_particle_systems. no sweat.
particle systems are:
-"waterfall_rocksplash"
-"waterfall_bottomwaves"
-"waterfall_mist"
-"waterfall_sides"
soundscape is:
-"Sawmill.Waterfall"
model is:
-"props_forest/waterfall001.mdl"

Particle systems and soundscape will pretty much fit any waterfall so these are no big deal.
shaping the waterfall into our own will probalby be trickier tho. Lets see what the model's made of first.

gcf extracting time!
got my mdl in hands, lets decompile this shit
decompiling time!
alright got my decompiled model. I pretty know what the model looks like so lets skip this and take a look at the .qc file.
$cd "C:\New folder\decompiled"
$modelname "props_forest\waterfall001.mdl"
$model "Body" "waterfall001_reference.smd"
$cdmaterials "models\props_forest\"
$hboxset "default"
$hbox 0 "static_prop" -29.150 -98.749 -61.976 785.518 635.256 758.791
// Model uses material "waterfall001.vmt"
// Model uses material "waterfall001_solid.vmt"

$surfaceprop "dirt"
$illumposition 378.184 268.253 348.407
$sequence idle "idle" fps 30.00
Wait what! This model uses 2 texture at the same time! Here I ain't talking about 2 skins, 2 textures at the same time... must be some crazy UV mapped shit, how do you UV map a scrolling texture anyways? Lets take a look at these!

I'd go check at these textures in hammer's texture browser but valve blacklisted model texture because some noob didn't knew how to use them...

Gcf extracting time then!

7.jpg


Now what's this... Two vmt and a single vtf, I guess the model uses only one texture after all eh?
Ok, nuff messsing around, lets open this .vtf in photoshop.

6.jpg


wtf! this isn't UV mapped at all! this thing shouldn't have been a model in the first place! damn valve must have made the waterfall a model to hide this awsomesauce in the blacklisted model directory.
Ah w/e lets drop these vmt in my material folder and see what they look like inside hammer.

5.jpg


ok, so we have one translucent version and an opaque one. well these are definetly 2 texture we could use so lets clean those vmt first

THE CLEANSING

waterfall001.vmt
Code:
"UnlitGeneric"
// the unlitgeneric shader is usualy for models. so you should be changing this to LightmappedGeneric but I prefer the fullbright look of unlitgeneric. plus you save on lightmap data.
{
	"$baseTexture" "models\props_forest/waterfall001"
	//lets keep this as it is so we won't need to include an other version of the vtf.
	"$surfaceprop"	"default"
	//default translates to concrete in tf2. which makes nasty bullet holes in your waterfall. so we're gonna switch this to "no_decal" to make sure it won't happen
	"$translucent" 1
	//ok so this is the translucent version. good!
	"$model" "1"
	// not anymore I'm afraid. scrap this
	"$nocull" "1"
	//nocull? interesting. I'll come back on this later.
	"Proxies"
	{
		"TextureScroll"
		{
			"texturescrollvar" "$basetexturetransform"
			"texturescrollrate" -.34
			"texturescrollangle" 90
		}
	}
	//this proxie is what makes the texture scroll, editing texturescrollrate will affect the speed of the scroll. other than that leave it as it is. 
}

lets check out the solid version now

waterfall001_solid.vmt
Code:
"UnlitGeneric"
{
	"$baseTexture" "models\props_forest/waterfall001"
	//same here, keep this.
	"$surfaceprop"	"default"
	//same here, switch to "no_decal"
	"$model" "1"
	//remove this too
//	"$translucent" "1"
	//for some reasons, valve only commented out this parameter. so the texture is opaque. you might as well remove this line completely to make your filesize lower.
	"Proxies"
	{
		"TextureScroll"
		{
			"texturescrollvar" "$basetexturetransform"
			"texturescrollrate" -.23
			"texturescrollangle" 100
		}
	}
	//oh look! a variation in the proxie? I'll come back to this later.
}

THE PRODUCT
The cleaned up product should be something like this:

waterfall001.vmt
Code:
"UnlitGeneric"
{
	"$baseTexture" "models\props_forest/waterfall001"
	"$surfaceprop"	"no_decal"
	"$translucent" 1
	"$nocull" "1"
	"Proxies"
	{
		"TextureScroll"
		{
			"texturescrollvar" "$basetexturetransform"
			"texturescrollrate" -.34
			"texturescrollangle" 90
		}
	}
}

waterfall001_solid.vmt
Code:
"UnlitGeneric"
{
	"$baseTexture" "models\props_forest/waterfall001"
	"$surfaceprop"	"no_decal"
	"Proxies"
	{
		"TextureScroll"
		{
			"texturescrollvar" "$basetexturetransform"
			"texturescrollrate" -.23
			"texturescrollangle" 100
		}
	}
}

Sweet, now we have our textures ready.
>>>download<<<

1.jpg


Lets get to work!

working with the textures!
How you use these textures is up to you really but I'll share with ya'll some random observations of mine.

•As mentionned before, we have 2 textures to work with. one is translucent, the other is solid. the trick is to use them both, the translucent one above the solid one. doing this will give a nice depth to your waterfall.

2.jpg


•When applying the textures. don't use the same scale on the Y and X axis. It just doesn't look right. I usualy use a X value twice higher than my Y value (ex; x:2,Y:1)
•Scale will affect the speed of the water. (because the time it takes to the texture to go from top to bottom is invarible) if the scale distances the top and bottom, the texture will scroll at a higher speed.
•It is best to use texture shift wisely when applying 2 layer of the water texture. failing to do so might result in an akward repetition in the pattern of the vtf. (the variations in the proxies are there to avoid this effect but it won't be enough in some cases) using different scales is also a viable way to prevent this from happening but it will affect the visual/speed.
•I figured the best option is to use these textures on displacements. cylenders will look alright too but It really is a pain in the ass to align the texture on each faces.
to make a cylender out of displacements, refer to this tutorial
•Be carefull when makin displacement. Distorted scrolling textures look very bad.
•The texture will scroll down by default on vertical planes but watch out when on horizontal planes, it's kinda tricky to tell which way the texture will be scrollin from hammer. I suggest identifing a pattern in the texture so you don't have to compile everytime you want to see which way it's going

waterfalls and the tf2 gameplay
The only official waterfall in tf2 is solid (player clipped) and is placed in an area that will pretty much never disturb skirmishes. I strongly recommend using waterfalls only in non-gameplay areas.
from past experiences, I can tell you that using waterfalls in gameplay areas is a very bad idea. If you make a waterfall solid, player will go: "wtf solid water?" and if your water has no colision, some player will say "I kinda wish the waterfall was solid" (because they're getting shot at through the waterfall that fails to provide cover even tho the material is opaque).
This confusion interfere with the map's immersion and should be avoided at all cost imo.

I'll be adding more to this tutorial later on. Stay tuned for more!
Any advices to improve this tutorial are welcome
 
Last edited:
Sep 12, 2008
1,272
1,141
Nice! I'll need this in the future.

Edit: It's also useful to use the nice waterfall particles with these textures for an even better result!
 
Last edited:

Acumen

Annoyer
aa
Jun 11, 2009
704
628
the model is a model because it uses delicate geometry that you can't create with brushes. just have a look at it :) it's 890 absolutely lovely placed triangles for a beautiful waterfall in a map.
and of course the model is uvmapped. how could it use the waterfall-texture otherwise :)
i'd say you're making waterfalls the hl1-way and valve the orangebox-way.

i mean for someone who doesn't know how to model to create his own waterfall model this sure is good way of roughing something out before a modeler can take over.

but in no way you needed to write such a (cocky) article as if valve didn't know what they were doing with this waterfall :)
i mean, again, the model waterfall clearly looks better than any brushwork could ever look - simply because of the amount of polygons you can put into detailling it. period :)
 

Freyja

aa
Jul 31, 2009
2,994
5,813
Thanks for this, but I've been doing this for half a year now :p

I also say 3:1 Y:X is a better ratio, from my experience.

Also folks, make sure if you make it onto a displacement, make the displacement power 2. You won't need the detail, so you can afford to make the entire thing one or two power 2 displacements.
 

fubarFX

The "raw" in "nodraw"
aa
Jun 1, 2009
1,720
1,978
@acumen
It sure does look like shit in those pictures since I'm using the texture on rectangular brushes. but I'm fairly sure anyone here can work out a displacement that will be looking equaly good as the model.
to me It just seemed the texture was a lot more useful as a normal texture than a model texture. I don't question valve's professionalism. I'm just sayin, they could have made it a bit more community friendly.
 

Pocket

Half a Lambert is better than one.
aa
Nov 14, 2009
4,694
2,579
What is it with Photobucket just randomly deleting everything after the first week or so, anyway?