Texture baking method
A quick rundown of using texture baking (usually for source/modern stuff) and done for goldsrc:
On the left we have the highpoly model I made and behind it the highpoly for the tread texture. On the right is the finished lowpoly model with combined baked textures. (If you don't know standard highpoly to lowpoly baking method look here: Baking Normal Maps)
This is how I combined the render-to-textures into the final diffuse.
A look at the tread texture creation. GoldSrc does not support UVW tiling off the grid, so what I had to do is use the UVW "Face" mode in 3dsmax to take each polygon around the circumference of the tire to be mapped to one 128X128 texture. Now I have a tiling texture so I dont have to use the whole unwrap and I can get around the off-grid limit this way.
A physbaked animation using the tires:
Tree and Foliage method
Using 2D planes with transparent images for foliage is nothing new, but I learned of a brillant trick to make the lighting on them look much better from polycount:
Reminder that I do have to duplicate planes and flip the triangles to get double sided planes due to goldsrc lacking "nocull" shader. The wallworm exporter was somewhat iffy on preserving these changes, so I explicitly set the normals and checked the “explicit normals export” to be sure. I think Its also dependent on the order you do it and doing it in editable mesh instead of editable poly mode. Also here is a view in HLMV showing the drastic changes in edited and non-edited. Notice the nice gradient through the planes?
Interesting note with this one, I found that rigging blobs to stretch was rather difficult due to hard weights (as GoldSrc can only have one weight per vertex), but I came up with a nice work around:
I placed a third bone between the two bones that would stretch between the big blob and put a 50% position constraint on it pointed to the other bones and weighted it to the middle vertices. That way I had an automatic "soft" inbetween bone to compensate for lack of bone weights and prevent obvious mesh crumpling issues I had with my first attempts.
Using a sculpt and baking to a lowpoly I made a rock model:
The model was duplicated and shape was distorted to create different variants; then rocks were animated using MassFX physics baked simulation. Also the explosion is a bunch of planes that have had their corners stretched by bones (a bone for each corner, so 4 bones per plane) to increase their size. A bunch together creates a "3D" explosion all done as an MDL.
Animated Planes To Simulate Fire
Although this didnt get the results I quite wanted, I do like how I did achieve a proof of concept by animating planes in various motions to mimic flames. In addition I used a technique used in "pipebubbles.mdl" where I had looping embers move up, but hiding the loop down by flipping the planes at a certain spot so you dont see them due to backside culling.
Smoke And Embers
I had an idea in my head for making a self-contained model that has smoke and ember effects without needing to use external using sprites, particles or texture-based animation. This is what I came up with: The smoke is a flanged uncapped cylinder that uses a gradient texture in additive mode and is distorted and controlled with animated bones (bones are seen in the third image as blue dots and yellow lines representing parent hierarchy).
The embers is a piece of geometry that is basically a distorted cylinder cap that shares the same texture in additive mode using the left portion. The cylinder is rotated by an animation bone to simulate the slow burn as the irregular shape clips in and out of the cigarette geometry.
Lastly, the ash piece that is surrounded by blue is a masked transparency portion* of the texture so I can use it in several places as a piece of plane geometry (2 triangles to make a square). I have used the plane in 6 copies: 4 around the end of the cigarette for hanging ash and 2 in the ashtray dish, you can also observe I have distorted and scaled each one to give some shape variety.
Model is 450 polygons, and uses a 256X256 8-bit BMP, and a 128X128 8-bit BMP as textures. * GoldSrc engine uses the last color of the 8bit texture palette (index 255) and uses typically pure blue as that color [ RGB: 0 0 255] for alphatest transparency
Chrome And Fake Specular
Here's a ceiling fan I made using a custom chrome texture. Note: In GoldSrc "Chrome" mode is a simple 64X64 pixel texture that is displayed as spherical env (You see it in barneys helmet and in the magnum, ect. ) . Also those vents are just a 2D plane with a masked transparent image:
A neat engine limitation trick I found in a sven_coop model pack is the use of "Chrome" + "Additive" shell for fake specular highlights. So you make a piece of shell geometry that is either slightly moved or pushed from the base geometry, have a black 64X64 Chrome texture with small dots and set it to additive blend mode and now you have fake highlights:
he moving highlights on the barstools in action filmed by trigger_camera + path_corners + info_target (this is how you get cutscenes in goldsrc)
Using Image Planes For Details
A trick you can use to add higher-resolution details without messing with your original texture is placing image planes overtop of your model. Another advantage of this method is that you can scale, rotate,and use multiple times with minimal use of polygons. An example here is this oven model which has a 256X256 base texture. For the elements and dials I created separate textures from a baked 3D model of said objects. The dial was 64X64 and the burners were 128X128 in transparent mode:
As you can see with these textures I have placed multiple burners and the bottom right is scaled bigger, same thing with the dials. You can also animate these details by skinning them to a bone too if you wish.
Here I have used a skin group to swap the burner texture between an on and off state.
Physbaked Playermodel Anims
While still working on a better method, I have a proof-of-concept for making physbaked playermodel animations using MassFX. Current method used was creating convex shapes for the animation bones to use as the collision objects. Things get a little tricky because some bones I need to use animation constraints to keep things flying apart, for example the clavicles and use of a hinge constraint on the jaw so it does not fall and stretch off: